У меня есть экран BLE + Arduino UNO, который подключен и работает с моим устройством IOS. Все, что я хочу сделать, это показать состояние подключенного экрана с помощью светодиода RGB.RGB LED не работает при чтении с помощью экрана BLE
Я использую следующий код, но каким-то образом, даже когда функции вызываются, я не вижу изменений цвета.
int redPin = 13;
int greenPin = 12;
int bluePin = 11;
void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
// Init. and start BLE library.
ble_begin();
// Enable serial debug
Serial.begin(57600);
}
void loop()
{
Serial.println("Inside loop");
if (ble_connected())
{
setColor(200, 200, 200);
int sensorValue = analogRead(A0);
//Some code to write stuffs
}
ble_do_events();
delay(2000);
}
void setColor(int red, int green, int blue)
{
#ifdef COMMON_ANODE
red = 255 - red;
green = 255 - green;
blue = 255 - blue;
#endif
Serial.println("Inside setcolor");
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
Светодиодный код отлично работает, когда я выполняю его отдельно без BLE. Ниже будет работать код. То же самое, что указано выше, не будет работать.
int redPin = 13;
int greenPin = 12;
int bluePin = 11;
void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop()
{
setColor(20, 20, 20);
delay(2000);
}
void setColor(int red, int green, int blue)
{
#ifdef COMMON_ANODE
red = 255 - red;
green = 255 - green;
blue = 255 - blue;
#endif
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
В чем причина? Нужно ли что-то делать с AnalogRead и AnalogWrite? TIA
Является ли 'delay (2000)' правильным? Разве это не слишком много? Для такого рода задержек я бы подражал подходу «blink without delay example» (используя 'millis') ... И возвращает ли' ble_connected' true? Вы можете проверить это с помощью некоторого 'Serial.println' и проверить, где он висит – frarugi87
Вышеприведенный код выполняется, даже функция setColor вызывается. Аналоговые входы также показывают данные. Все работает, за исключением того, что огни не будут светиться. Свет будет светиться на 2-й функции. Заставляет меня думать в arduino, могу ли я сделать analogRead и писать вместе или есть ограничение? –
Хорошо, я тестировал его в симуляторе, и есть хотя бы одна проблема: контакты 12 и 13 НЕ МОГУТ использовать PWM. Как указано на [этой странице] (https://www.arduino.cc/en/Reference/AnalogWrite) «На большинстве плат Arduino (с ATmega168 или ATmega328) эта функция работает на контактах 3, 5, 6, 9 , 10 и 11 ". Поэтому попробуйте изменить контакты, а затем посмотрите, что произойдет. И .. Нет, analogRead не имеет ничего общего с analogWrite, поэтому они не могут помешать – frarugi87