char “такт” = “одно нажатие и одно отпускание кнопки”;
Хотел сделать так чтоб после первого такта загорался первый светодиод, после второго второй, после третьего третий, а после третьего первый тух и тд. Но получилось так что после трех тактов первый светодиод тухнет, а 2 и 3 нет. И потом после 2 тактов 1 снова загорается (получается горят все 3), а еще после 2 тактов он тухнет и тд. Подскажите пожалуйста.
Вот код:
void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
}
int led = 3;
bool flag = 0;
void loop() {
bool butt = digitalRead(2);
if (butt == 1 && flag == 0 && led < 9) {
flag = 1;
digitalWrite(led, 1);
led = led + 1;
delay(50);
}
if (butt == 0 && flag == 1 && led < 9) {
flag = 0;
delay(50);
}
if (led == 7 && butt == 1) {
digitalWrite(4, 0);
delay(50);
}
if (led == 7 && butt == 0) {
led = led + 1;
}
if (led == 8 && butt == 1) {
digitalWrite(5, 0);
delay(50);
}
if (led == 8 && butt == 0) {
led = led + 1;
}
if (led == 9 && butt == 1) {
digitalWrite(6, 0);
delay(50);
}
if (led == 9 && butt == 0) {
led = 4;
}
}
К чему эти сложности? У вас led должно быть в пределах 4 … 6, вот и крутите в этих пределах. Заведите еще один флаг uint8_t level = HIGH. При каждом клике присваивайте выходу led значение level, затем увеличивайте led на единицу и проверяйте: если led > 6, присваивайте ему 4 и инвертируйте значение level = !level. И так по кругу
Дело вкуса, наверное. По стоимости сейчас дигиспарк на тини85 обходит нано. Трудно объяснить. Я не программист, и очень далек от электроники, но считаю что одно дело, например когда работая на окладе- лепить блинк на супермощной меге, и другое- когда самому интересно, получиться ли уместить в минимум из возможного. Я ж не предлагаю ассемблерные вставки на половину кода А этот код, наверное, раза в два меньше памяти потребляет. Разве это плохо?
возможно, а теперь давай допустим, он захотел зажечь их слева направо, а потом потушить справа налево. мой код не на байт не вырастет, а твой?
мне только карту переделать, а тебе?
и таких нюансов как говна за баней.
знать это не плохо, но жить с этим все тяжелее и тяжелее становится, не хватает флеша в башке)
Тут могут быть разные ситуации. В каких то случаях нужно “меньше памяти”, в каких то пошустрее, но зачастую, красивше, лаконичнее, переносимее и т.п. Но, обычно, чем меньше времени ты на это всё тратишь, тем лучше. Потому что время разработки это самое ценное.