такие элементарные проекты делаются обычно на avr, поэтому твоё возражение не принимается.
Сам же понял, что нагазировал лужу? Вот и радуйся волшебным пузырькам. А что и когда и куда ты "принимаешь" - дело твоего гинеколога, уж прости. ;)) Не расстраивайся. Теперь это модно!
Если честно, то вполне изящно. Выбор единственного реле тернарником - реально мило! Респект!
Но это не отменяет того, что по определению: это говнокод. То есть не читаемое, не возможное к сопровождению и не масштабируемое решение. Так можно прикалываться. У ЕвгенияП тут были примеры, и у меня были примеры говнокода для блинка и т.п. Но нужно отличать прикол и программирование. Не уверен. что ты это понимаешь. Хотел бы ошибиться!
И у говнокода у каждого это своё определение. Кто к чему привык, не так ли?
Ну хз, в моем понимании говнокод, это то что сходу прочитать невозможно и во что приходится вникать долго и вдумчиво.
Вне зависимости от того, какие бы красивые решения не были использованы .
Мало того, что исключена возможность нажатия нескольких кнопок, так еще и неизвестно , какая кнопка была нажата последней. А стало быть код не отвечает условию задачи
Почему исключена? Ровно наоборот. Ты просто не разобрался. Другое дело, что из за дребезга одновременное нажатие нескольких кнопок нормально не зафиксировать. Но для этого случая достаточно delay(50)(например) в лупе.
Граф. При всём уважении. Ну что здесь не Сишного?
Федя! Не валяй дурака. Я же написал, как надо? Вот и смотри. Не нужно комментировать.
Смотри как пишет ДетСимен. На Ркита смотри, когда он что-то выкладывает. На ЕвгенияП. Не настаивай на своем варианте кода. Не нужно.
Тоже не смог пройти мимо:
1
void
setup
() { DDRB=PORTC=31;
/* keys A0...A4, relays 8...12 */
}
2
3
void
loop
() {
4
static
uint8_t l;
5
uint8_t c = PINC|~PORTC;
6
if
((l=c|~(l^c))!=0xFF) PORTB=PORTB&~PORTC|(l&1)?(l&2)?(l&4)?(l&8)?16:8:4:2:1;
7
l = c; delay(20);
8
}
Тоже не смог пройти мимо:
Лучше бы прошел. Про регистры уже написано: НЕТ ДАННЫХ О ТИПЕ КОНТРОЛЛЕРА в ТЗ! То есть только библиотечные функции от wiring.
Тоже не смог пройти мимо:
Лучше бы прошел. Про регистры уже написано: НЕТ ДАННЫХ О ТИПЕ КОНТРОЛЛЕРА в ТЗ! То есть только библиотечные функции от wiring.
такие элементарные проекты делаются обычно на avr, поэтому твоё возражение не принимается.
такие элементарные проекты делаются обычно на avr, поэтому твоё возражение не принимается.
Сам же понял, что нагазировал лужу? Вот и радуйся волшебным пузырькам. А что и когда и куда ты "принимаешь" - дело твоего гинеколога, уж прости. ;)) Не расстраивайся. Теперь это модно!
ладно, местная брюзга, пока ты тут набрасываешь и придумываешь свои правила, я вот тут немного оптимизировал предыдущий свой код, держите три строки:
1
volatile uint8_t &l=GPIOR0, &c=GPIOR1, &m=GPIOR2, &b=PORTB;
2
void
setup
() { m=~(DDRB=PORTC=31);
/* keys A0...A4, relays 8...12 */
}
3
void
loop
() {
if
(c=PINC|m,uint8_t(~(l=c|~(l^c)))) b=b&m|(l&1)?(l&2)?(l&4)?(l&8)?16:8:4:2:1; l=c; delay(20); }
Ой! Да ты освоил тернарный оператор!
---------------
Если честно, то вполне изящно. Выбор единственного реле тернарником - реально мило! Респект!
Но это не отменяет того, что по определению: это говнокод. То есть не читаемое, не возможное к сопровождению и не масштабируемое решение. Так можно прикалываться. У ЕвгенияП тут были примеры, и у меня были примеры говнокода для блинка и т.п. Но нужно отличать прикол и программирование. Не уверен. что ты это понимаешь. Хотел бы ошибиться!
Ой! Да ты освоил тернарный оператор!
Без тернального оператора и оператора запятая тут ловить нечего.)
И у "говнокода" у каждого это своё определение. Кто к чему привык, не так ли?
И у говнокода у каждого это своё определение. Кто к чему привык, не так ли?
Ну хз, в моем понимании говнокод, это то что сходу прочитать невозможно и во что приходится вникать долго и вдумчиво.
Вне зависимости от того, какие бы красивые решения не были использованы .
Ну да, оригинально. Говнокод - это то что ТЕБЕ не пришлось прочитать сходу... Так может это в ТЕБЕ проблемы, не думаешь?)
Для нас со с котом лакмусовая бумашка авнокода - одно/двухбуквенные глобалные переменные, а потом вся остальная спагетти
Почему исключена? Ровно наоборот. Ты просто не разобрался. Другое дело, что из за дребезга одновременное нажатие нескольких кнопок нормально не зафиксировать. Но для этого случая достаточно delay(50)(например) в лупе.
Для нас со с котом лакмусовая бумашка авнокода - одно/двухбуквенные глобалные переменные, а потом вся остальная спагетти
ну так у нас у русских количество букв в названии должно быть три, солидарен )))
Это только для глобальных.) Локальные же могут быть и однобуквенными.