Страница 1 из 1

Помощь по коду СИ

Добавлено: 25 янв 2018, 09:05
ElectroMechaniC
Привет в собственном блоке использую вот такой фрагмент кода

[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
Помогите разобраться как это правильно реализовать в коде. Весь блок приложил! Спасибо!

Помощь по коду СИ

Добавлено: 25 янв 2018, 09:53
pan
[ref]ElectroMechaniC[/ref], ==HIGH можно убрать , if (digitalRead(х) достаточно.

чтобы не писать талмут из строк на большое количество пинов, попробуйте использовать оператор "for"
инфу и примеры его использования найти не проблема.

Помощь по коду СИ

Добавлено: 26 янв 2018, 10:36
ElectroMechaniC
[ref=#ff8000]pan[/ref], спасибо за ответ, но в этом конкретном случае нужно именно каждый пин прописать, так программа требует в которую информация отправляется. Интересен другой момент- как выразить остальные пины , не меняя структуры программы? если digitalRead(1) == HIGH) digitalInputs |= 1, а (digitalRead(9) == HIGH) digitalInputs |= 256, то сколько тогда будет (digitalRead(22)???, можно ли его выразить как digitalInputs |= 512 например?

Помощь по коду СИ

Добавлено: 26 янв 2018, 10:52
pan
ElectroMechaniC писал(а): 26 янв 2018, 10:36то сколько тогда будет (digitalRead(22)
ну если продолжать по порядку то будет 2097152
ElectroMechaniC писал(а): 26 янв 2018, 10:36можно ли его выразить как digitalInputs |= 512 например
да хоть 8,547
всё зависит от того что вам нужно получить от этого кода.
ElectroMechaniC писал(а): 26 янв 2018, 10:36 в этом конкретном случае нужно именно каждый пин прописать
я имелл ввиду вместо if(digitalRead(1) == HIGH) digitalInputs |= 1; , можно написать просто if(digitalRead(1)) digitalInputs |= 1;