помогите разобраться с CASE и массивами
- Войдите на сайт для отправки комментариев
Чт, 30/01/2020 - 08:47
предъистория. имелись на руках старые четырехканальные бегущие огни. четыре года назад т.к. сидел дома со сломанной ногой решил переделать все управление на базе ардуино. с четырех выходов на полевые транзисторы и коммутация. мигает 40 раз в одном режиме, потом в другом и т.д.
собрал - все заработало.
в этом году решил подредактировать и ... все сломалось и по понятной причине не вернуть. где я в 2016 нашел этот синтаксис не могу понять.
думаю в коде все понятно.
режим первый загорается первая, загорается вторая/первая гаснет и т.д.
не могу найти примеры
связки
case
...sms(byte (1), byte (0), byte (0), byte (1)) ;
...void sms(byte A, byte B, byte C, byte D)
byte inByte = 0; int pere = 1; // номер режима мигания int sec = 100; //время горения ламп в 1 цикл void setup() { for (int thisPin = 1; thisPin < 9; thisPin++) { pinMode(thisPin, OUTPUT); //обьявляем что цифровые контакты 2-8 выводы. использую. только 2 4 6 8 digitalWrite(thisPin, HIGH); //высокий уровень на контактах все лампочки засветились } } void loop() { pere=1; //для примера выбирается первый case for (int powt = 0; powt < 40; powt++) // количество повторов однотипного мигания { switch (pere) // в зависимости от переменной pere выбирается контейнер который надо выполнить { case 1: // последовательно 1,2,3,4 sms(byte (1), byte (0), byte (0), byte (0)) ; sms(byte (0), byte (1), byte (0), byte (0)) ; sms(byte (0), byte (0), byte (1), byte (0)) ; sms(byte (0), byte (0), byte (0), byte (1)) ; sms(byte (1), byte (0), byte (0), byte (0)) ; sms(byte (0), byte (1), byte (0), byte (0)) ; sms(byte (0), byte (0), byte (1), byte (0)) ; sms(byte (0), byte (0), byte (0), byte (1)) ; sms(byte (1), byte (0), byte (0), byte (0)) ; sms(byte (0), byte (1), byte (0), byte (0)) ; sms(byte (0), byte (0), byte (1), byte (0)) ; sms(byte (0), byte (0), byte (0), byte (1)) ; break; case 2: // последовательно 1-2,2-3,3-4,4-1 sec = 200; sec = sec*k; sms(byte (1), byte (1), byte (0), byte (0)) ; sms(byte (0), byte (1), byte (1), byte (0)) ; sms(byte (0), byte (0), byte (1), byte (1)) ; sms(byte (1), byte (0), byte (0), byte (1)) ; sms(byte (1), byte (1), byte (0), byte (0)) ; sms(byte (0), byte (1), byte (1), byte (0)) ; sms(byte (0), byte (0), byte (1), byte (1)) ; sms(byte (1), byte (0), byte (0), byte (1)) ; sms(byte (1), byte (1), byte (0), byte (0)) ; sms(byte (0), byte (1), byte (1), byte (0)) ; sms(byte (0), byte (0), byte (1), byte (1)) ; sms(byte (1), byte (0), byte (0), byte (1)) ; break; } // закончились перечисление контейнеров void sms(byte A, byte B, byte C, byte D) // описываем процедуру включения люстры { if (A == 1) {digitalWrite(2, HIGH); //если byte 1 то на выходе высокое напряжение } else {digitalWrite(2, LOW);} // иначе ноль if (B == 1) {digitalWrite(4, HIGH);} else {digitalWrite(4, LOW);} if (C == 1) {digitalWrite(6, HIGH);} else {digitalWrite(6, LOW);} if (D == 1) {digitalWrite(8, HIGH);} else {digitalWrite(8, LOW);} delay(sec); } } }
В коде-то всё понятно, а вопрос какой?
sadman41
не работает. ругается.
не могу найти ни одного примера с такой работой с массивами
подозрение , что где то надо переменную sms обьявить
Подозрение, что надо функцию sms() вынести из loop().
если подправишь скетч что б компилировался - поклон до земли
тут нет "работы с массивами, тут вообше нет массивов в коде
Поправить - две последние скобки переставь на строчку 60 и все
За поклон подскажу: строки #87 и #88 перенести под #59.
К сожалению, мы так и не увидели начальника транспортного..., извините, ошибок при компиляции, но с большой долей вероятности если перенести п/п sms() перед setup(), то все скомпилируется. Да и в 88 строке вроде скобка лишняя.
За поклон подскажу: строки #87 и #88 перенести под #59.
БИНГО!!!
+ поклон до земли.
БИНГО!!!
+ поклон до земли.
Пилять дрова! А нахрена в IDE сделано отслеживание парных скобок!? Для красоты??