Учу пробую и застопорился с вопросом
- Войдите на сайт для отправки комментариев
Ср, 07/09/2016 - 14:48
Добрый день учась и только в самом начале нахожусь. и вот пробую свое сделать и гдето накасячил.
хочу сделать последовательное переключение светодиодов а неполучается переключается на 1 и сразу назад
вот код. что сделано не так ? (Ардино уно)
#define FIRST_LED_PIN 2
#define LAST_LED_PIN 11
#define button_x 12
#define button_y 13
void setup()
{
for (int pin = FIRST_LED_PIN; pin <= LAST_LED_PIN; ++pin)
pinMode(pin, OUTPUT);
pinMode(button_x, INPUT);
pinMode(button_y, INPUT);
}
void loop()
{
int x, y;
if (digitalRead(button_y) == HIGH)
{
x += 1;
}
if (digitalRead(button_x) == HIGH)
{
x -= 1;
}
y = constrain(x, 0, 9);
int pin = FIRST_LED_PIN + y;
digitalWrite(pin, HIGH);
delay(10);
digitalWrite(pin, LOW);
}
даже если вдруг "++pin" и имеет какой-то смысл, то цикл for() организован не правильно.
переменная "х" - сбрасывается каждый цикл loop()
ок так и происходит сбрасывает x на 0
как делают чтоб несбрасывало или изначально подход неверный.
А цикл for() чтоб не прописывать кучу раз теже строки этот кусок рабочий проверял в разных вариантах, играюсь с начальными уроками.
хочу сделать последовательное переключение светодиодов а неполучается переключается на 1 и сразу назад
Тут правильно, но читать тяжело. Вместо
Напишите
Раз значение x Вы используете в следующих вызовах loop(), то укажите это компилятору
...
Можно и так, но правильней x сделать локальной статической.
А переменная y Вам вообще не нужна, как я вижу. Можно ведь так:
ММ....дя красиво и мусора нет, Практика!. Спасибо за помощь буду дальше учится.
Зачем строка 14 ? Разве при инициализации выхода ему не устанавливается нулевое значение.
Зачем строка 14 ? Разве при инициализации выхода ему не устанавливается нулевое значение.
Паранойя в программировании, не осуждается, а приветствуется )
Если серьезно, то когда один и тот же код таскается из одного проекта другой, причем для разных архитектур, привыкаешь в коде явно указывать, что же тебе надо.
Я, например, могу написать:
Что, вроде бы совершенно излишне для подавляющего большинства реализаций С, так как они область статических переменных всегда инициализируют нулями. Но зато явно видно, что я хотел.
Паранойя в программировании, не осуждается, а приветствуется )
тогда уж так:
Паранойя в программировании, не осуждается, а приветствуется )
Если серьезно, то когда один и тот же код таскается из одного проекта другой, причем для разных архитектур, привыкаешь в коде явно указывать, что же тебе надо.
Хмм, пожалуй соглашусь.