Привет в собственном блоке использую вот такой фрагмент кода
[spoiler]void ReadDigitalStatuses()
{
digitalInputs = 0;
if (digitalRead(1) == HIGH) digitalInputs |= 1;
if (digitalRead(2) == HIGH) digitalInputs |= 2;
if (digitalRead(3) == HIGH) digitalInputs |= 4;
if (digitalRead(4) == HIGH) digitalInputs |= 8;
if (digitalRead(5) == HIGH) digitalInputs |= 16;
if (digitalRead(6) == HIGH) digitalInputs |= 32;
if (digitalRead(7) == HIGH) digitalInputs |= 64;
if (digitalRead(8) == HIGH) digitalInputs |= 128;
if (digitalRead(9) == HIGH) digitalInputs |= 256;;
}[/spoiler]
,для опроса цифровых входов на UNO, для MEGA этот код тоже работает. Хочу расширить функционал для остальных пинов MEGA, 22-53
Помогите разобраться как это правильно реализовать в коде. Весь блок приложил! Спасибо!
Помощь по коду СИ
- ElectroMechaniC
- Сержант
- Сообщения: 230
- Зарегистрирован: 21 сен 2016, 06:50
- Откуда: Донецк
- Имя: Юрий
Помощь по коду СИ
У вас нет необходимых прав для просмотра вложений в этом сообщении.





Помощь по коду СИ
[ref]ElectroMechaniC[/ref], ==HIGH можно убрать , if (digitalRead(х) достаточно.
чтобы не писать талмут из строк на большое количество пинов, попробуйте использовать оператор "for"
инфу и примеры его использования найти не проблема.
чтобы не писать талмут из строк на большое количество пинов, попробуйте использовать оператор "for"
инфу и примеры его использования найти не проблема.
- ElectroMechaniC
- Сержант
- Сообщения: 230
- Зарегистрирован: 21 сен 2016, 06:50
- Откуда: Донецк
- Имя: Юрий
Помощь по коду СИ
[ref=#ff8000]pan[/ref], спасибо за ответ, но в этом конкретном случае нужно именно каждый пин прописать, так программа требует в которую информация отправляется. Интересен другой момент- как выразить остальные пины , не меняя структуры программы? если digitalRead(1) == HIGH) digitalInputs |= 1, а (digitalRead(9) == HIGH) digitalInputs |= 256, то сколько тогда будет (digitalRead(22)???, можно ли его выразить как digitalInputs |= 512 например?





Помощь по коду СИ
ну если продолжать по порядку то будет 2097152
да хоть 8,547
всё зависит от того что вам нужно получить от этого кода.
я имелл ввиду вместо if(digitalRead(1) == HIGH) digitalInputs |= 1; , можно написать просто if(digitalRead(1)) digitalInputs |= 1;ElectroMechaniC писал(а): 26 янв 2018, 10:36 в этом конкретном случае нужно именно каждый пин прописать
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей