Здараствуйте! Битый час пытаюсь понять свою ошибку. И не могу, хоть убей! Задание в следующем Задание 3:Переделайте программу так, чтобы вместо int pin = FIRST_LED_PIN + (ms / 120) % 10 перемещением огонька управлял цикл for. Было так: #define FIRST_LED_PIN 2 #define LAST_LED_PIN 11 void setup() { for (int pin = FIRST_LED_PIN; pin <= LAST_LED_PIN; ++pin) pinMode(pin, OUTPUT); } void loop() { unsigned int ms = millis(); int pin = FIRST_LED_PIN + (ms / 120) % 10; digitalWrite(pin, HIGH); delay(10); digitalWrite(pin, LOW); } После моего переделывания получилось, вот так, но почему-то на ардуино схема не работает: #define FIRST_LED_PIN 2 #define LAST_LED_PIN 11 void setup() { for (int pin = FIRST_LED_PIN; pin <= LAST_LED_PIN; ++pin) pinMode(pin, OUTPUT); } void loop() { unsigned int ms = millis(); for (int pin = FIRST_LED_PIN; pin <= LAST_LED_PIN; pin = FIRST_LED_PIN + (ms / 120) % 10 ) { digitalWrite(pin, HIGH); delay(10); digitalWrite(pin, LOW);} }
Вы задаете значение переменной ms вне цикла for. Соответственно внутри цикла значение pin не меняется, так все параметры по которым он вычисляется внутри цикла неизменны.
Да, спасибо! Теперь разобрался, действительно нужно было объявить переменную ms в цикле! И показать как её получить в условии. Эта строчка будет, выглядеть вот так: for (unsigned int pin = FIRST_LED_PIN, ms; pin <= LAST_LED_PIN, ms = millis(); pin = FIRST_LED_PIN + (ms / 120) % 10 )