Я пытаюсь создать программу, которая будет случайным образом выбирать значение PWM для светодиода RGB из заданного массива. Он отлично работает с первым цветом, синим. Бу, тогда я гнезду второго цвета, зеленый, я теряю синий от отображения и только зеленые дисплеи.Arduino RGB LED random PWM Level
void loop() {
// put your main code here, to run repeatedly:
int x[9] = {0, 32, 64, 96, 128, 160, 192, 224, 256}; //setup Array X for brightness options
int blueVariable = 0; //Blue LED
int greenVariable = 0; //Green LED
for (int blueLed = 0; blueLed > -1;) { //for loop to choose PWM option
analogWrite(11, x[blueVariable]); //Initilize the PWM function on pin 11 to brightness of blueVariable
// if (blueLed == 255) blueLed = 0; //
blueVariable = random(0,8); //Random function to decide on blueVariable value
delay(500);
for (int greenLed = 0; greenLed > -1;) {
analogWrite(10, x[greenVariable]);
// if (g == 255) g = 0; // switch direction at peak
greenVariable = random(0,255);
delay(500);
}
}
}
Форматирование кода правильно будет огромная помощь для всех (включая вас). –
Почему 'greenVariable = random (0,255)', у вас есть только 9 значений яркости. Кроме того, ваши петли бесконечны, условия выхода нет. – Michael
Также я не вижу ** PWM **, возможно, это то, что для функции 'analogWrite', но без контекста мы не знаем, что он делает. Что такое операнды? Как ваш светодиод подключен к MCU? Какой MCU у вас есть? Что вы используете для PWM (SW, Timer/Counter, PWMA module)? Arduino - не волшебное слово, это просто фреймворк, поэтому вы не видите/не понимаете, что вы делаете ... Где этот код размещен/вызван (основной поток, ISR, ...)? – Spektre