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

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
Аватара пользователя
ElectroMechaniC
Сержант
Сообщения: 230
Зарегистрирован: 21 сен 2016, 06:50
Откуда: Донецк
Имя: Юрий

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

Сообщение 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
Помогите разобраться как это правильно реализовать в коде. Весь блок приложил! Спасибо!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
:newrus: Все в руках человека. Поэтому всегда мойте руки перед и зад! :victory:
:smile225: :smile469: :smile427:
pan
Полковник
Сообщения: 2860
Зарегистрирован: 13 апр 2017, 11:57
Имя: noname

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

Сообщение pan »

[ref]ElectroMechaniC[/ref], ==HIGH можно убрать , if (digitalRead(х) достаточно.

чтобы не писать талмут из строк на большое количество пинов, попробуйте использовать оператор "for"
инфу и примеры его использования найти не проблема.
Аватара пользователя
ElectroMechaniC
Сержант
Сообщения: 230
Зарегистрирован: 21 сен 2016, 06:50
Откуда: Донецк
Имя: Юрий

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

Сообщение ElectroMechaniC »

[ref=#ff8000]pan[/ref], спасибо за ответ, но в этом конкретном случае нужно именно каждый пин прописать, так программа требует в которую информация отправляется. Интересен другой момент- как выразить остальные пины , не меняя структуры программы? если digitalRead(1) == HIGH) digitalInputs |= 1, а (digitalRead(9) == HIGH) digitalInputs |= 256, то сколько тогда будет (digitalRead(22)???, можно ли его выразить как digitalInputs |= 512 например?
:newrus: Все в руках человека. Поэтому всегда мойте руки перед и зад! :victory:
:smile225: :smile469: :smile427:
pan
Полковник
Сообщения: 2860
Зарегистрирован: 13 апр 2017, 11:57
Имя: noname

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

Сообщение 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;
Ответить

Вернуться в «Спросить у знатоков»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей