Каскад сдвиговых регистров
- Войдите на сайт для отправки комментариев
Сб, 21/04/2018 - 11:29
Всем доброго времени суток.
Работаю с ардуино уно, возникла необходимость подключить 14 светодиодов, 14 кнопок и ещё некоторые модули. Соответственно, столкнулся с нехваткой пинов и подключил сдвиговый регистр. Если прописывать код такого вида:
digitalWrite(latch, LOW); shiftOut(data, clock, LSBFIRST, value); digitalWrite(latch, HIGH);
то программа получится очень громоздкой. Нашел такую функцию:
void sendpin(int pin, boolean state){ pin--; states[pin]=state; byte value = 0; byte add = 1; for(int i=0; i<8; i++){ if(states[i]==HIGH) value+=add; add*=2; } digitalWrite(latch, LOW); shiftOut(data, clock, LSBFIRST, value); digitalWrite(latch, HIGH); }
тогда вместо трех строк нужно писать только:
sendpin(2, HIGH);
с одним регистром работает на ура, наигрался вдоволь со светодиодами.
Дак вот вопрос: как переписать эту функцию, чтобы была возможность использовать ее с каскадом сдвиговых регистров???
Я бы сказал что надо написать библиотеку , или как минимум класс. Но может оказаться, что будет это #7