Ребят, подскажите пожалуйста. Есть код (его суть - зажигать и гасить по очереди светодиоды, расположенные на поочередных пинах): Код (Text): int led1 = 22; int led2 = 23; int led3 = 24; int led4 = 25; int led5 = 26; int led6 = 27; int led7 = 28; int led8 = 29; int led9 = 30; int led10 = 31; void setup() { //задаем пины как выходы pinMode (22, OUTPUT); pinMode (23, OUTPUT); pinMode (24, OUTPUT); pinMode (25, OUTPUT); pinMode (26, OUTPUT); pinMode (27, OUTPUT); pinMode (28, OUTPUT); pinMode (29, OUTPUT); pinMode (30, OUTPUT); pinMode (31, OUTPUT); //выключаем пины digitalWrite (22, LOW); digitalWrite (23, LOW); digitalWrite (24, LOW); digitalWrite (25, LOW); digitalWrite (26, LOW); digitalWrite (27, LOW); digitalWrite (28, LOW); digitalWrite (29, LOW); digitalWrite (30, LOW); digitalWrite (31, LOW); } void loop() { // поочередно зажигаем и гасим светодиоды for (int i = digitalWrite (22, HIGH); delay (50); digitalWrite (22, LOW); digitalWrite (23, HIGH); delay (50); digitalWrite (23, LOW); digitalWrite (24, HIGH); delay (50); digitalWrite (24, LOW); digitalWrite (25, HIGH); delay (50); digitalWrite (25, LOW); digitalWrite (26, HIGH); delay (50); digitalWrite (26, LOW); digitalWrite (27, HIGH); delay (50); digitalWrite (27, LOW); digitalWrite (28, HIGH); delay (50); digitalWrite (28, LOW); digitalWrite (29, HIGH); delay (50); digitalWrite (29, LOW); digitalWrite (30, HIGH); delay (50); digitalWrite (30, LOW); digitalWrite (31, HIGH); delay (50); digitalWrite (31, LOW); digitalWrite (30, HIGH); delay (50); digitalWrite (30, LOW); digitalWrite (29, HIGH); delay (50); digitalWrite (29, LOW); digitalWrite (28, HIGH); delay (50); digitalWrite (28, LOW); digitalWrite (27, HIGH); delay (50); digitalWrite (27, LOW); digitalWrite (26, HIGH); delay (50); digitalWrite (26, LOW); digitalWrite (25, HIGH); delay (50); digitalWrite (25, LOW); digitalWrite (24, HIGH); delay (50); digitalWrite (24, LOW); digitalWrite (23, HIGH); delay (50); digitalWrite (23, LOW); digitalWrite (22, HIGH); delay (50); digitalWrite (22, LOW); } Как его упростить при помощи "for (int i=22; i<32; ++i)" - функции перебирающей пины автоматически, а не перебирать их вручную.
Первое, что пришло в голову: Код (Text): digitalWrite (22, HIGH); for (int i=23; i<32; ++i) { digitalWrite (i-1, LOW); digitalWrite (i, HIGH); delay (50); } for (int i=31; i>22; --i) { digitalWrite (i, LOW); digitalWrite (i-1, HIGH); delay (50); } digitalWrite (22, LOW); Включать голову — сегодня уже лень) Реально, что-то устал. Тяжёлый был день(
Код не является универсальным, не стал мудрить. Постарался сделать достаточно коротко и понятно. Код (Text): const int firstLedPin = 22; const int ledsCount = 10; int ledPin[10]; void setup() { int i; for ( i = 0; i < ledsCount; i++ ) { ledPin[i] = firstLedPin + i; pinMode ( ledPin[i], OUTPUT ); digitalWrite ( ledPin[i], LOW ); } } void loop() { int i; // Нарастание for( i = 0; i < ledsCount; i++ ) { blink ( ledPin[i] ); } // Спад for( i = ledsCount - 2; i >= 0; i-- ) { blink ( ledPin[i] ); } } void blink(int pin) { digitalWrite ( pin, HIGH ); delay ( 50 ); digitalWrite ( pin, LOW ); }