Написал код для управления RGB LED. Можите провеить мой код на правильность написания? Код (Text): //включаем библиотеки #define RED 11 #define GREEN 10 #define BLUE 9 #define FADESPEED 6 // чем выше число, тем медленнее будет эффект затухание void setup() { pinMode(RED, OUTPUT);//выводим пины как выход pinMode(GREEN, OUTPUT); pinMode(BLUE, OUTPUT); } void loop() { int R, G, B; //пишем переменную // затухание от голубого к фиолетовому for (R = 0; R < 256; R++) { analogWrite(RED, R); delay(FADESPEED); } // затухание от фиолетового к красному for (B = 255; B > 0; B--) { analogWrite(BLUE, B); delay(FADESPEED); } // затухание от красного к желтому for (G = 0; G < 256; G++) { analogWrite(GREEN, G); delay(FADESPEED); } // затухание от желтого к зеленому for (R = 255; R > 0; R--) { analogWrite(RED, R); delay(FADESPEED); } // затухание от зеленого к зеленовато-голубому for (B = 0; B < 256; B++) { analogWrite(BLUE, B); delay(FADESPEED); } // затухание от зеленовато-голубого к голубому for (G = 255; G > 0; G--) { analogWrite(GREEN, G); delay(FADESPEED); } }
В циклах на убывание последним шагом запишется 1, а не 0. Используйте операцию >=. А что мешает подключить и проверить?
В данном случае совсем незаметна. А если элементы массива перебирать, например? Лучше сразу делать правильно
Код (Text): const byte COLORS_COUNT = 3; const byte PINS_RGB_LED[COLORS_COUNT] = {11,10,9}; const byte FADE_SPEED = 6; void setup() { for (byte i = 0; i < COLORS_COUNT; i++) pinMode(PINS_RGB_LED[i], OUTPUT); } void loop() { for (int color = 0; color < COLORS_COUNT; color++) { for (byte brightness = 0; brightness <= 255; brightness++) { analogWrite(PINS_RGB_LED[color], brightness); delay(FADE_SPEED); } for (byte brightness = 255; brightness >= 0; brightness--) { analogWrite(PINS_RGB_LED[color], brightness); delay(FADE_SPEED); } } }