В 12 эксперименте мы собирали устройство Люксметр. Это устройство также можно собрать используя сдвиговый регистр 74НС595.
Сразу возникает вопрос: «Зачем переделывать устройство, если оно и так работает?».
Все дело в том, что пока мы делаем простые проекты, нам вполне хватает количества цифровых вводов\выводов, но со временем может наступить ситуация когда пинов станет не хватать. Вот здесь и может пригодиться сдвиговый регистр 74НС595, поскольку используя всего три пина контроллера и одну микросхему можно получить 8 выходов. А подключая микросхемы одну за другой можно используя все те же 3 пина контроллера получать 16,24,32 и тд. цифровых выходов.
Рисунок 1. Электрическая принципиальная схема эксперимента
Рисунок 2. Монтажная схема эксперимента
В соответствии с распиновкой, подключаем выводы микросхемы в следующем порядке:
const int NbrLEDs = 8; int latchPin = 5; int clockPin = 6; int dataPin = 4; const int photocellPin = A0; int ledLevel = 0; byte states[8] = {B10000000,B11000000,B11100000,B11110000,B11111000,B11111100,B11111110,B11111111}; int sensorValue = 0; void updateShiftRegister(byte leds){ digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, LSBFIRST, leds); digitalWrite(latchPin, HIGH); } void setup() { pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(latchPin, OUTPUT); digitalWrite(latchPin, HIGH); } void loop() { sensorValue = analogRead(photocellPin); ledLevel = map(sensorValue, 0, 1023, 0, NbrLEDs); updateShiftRegister(states[ledLevel]); }
В программе эксперимента используем массив с данными, для наглядности, в форме битовой маски.