Это старая версия документа!
В 12 эксперименте мы собирали устройство Люксметр. Это устройство также можно собрать используя сдвиговый регистр 74НС595.
Сразу возникает вопрос: «Зачем переделывать устройство, если оно и так работает?».
Все дело в том, что пока мы делаем простые проекты, нам вполне хватает количества цифровых вводов\выводов, но со временем может наступить ситуация когда пинов станет не хватать. Вот здесь и может пригодиться сдвиговый регистр 74НС595, поскольку используя всего три пина контроллера и одну микросхему можно получить 8 выходов. А подключая микросхемы одну за другой можно используя все те же 3 пина контроллера получать 16,24,32 и тд. цифровых выходов.
Рисунок 1. Электрическая принципиальная схема эксперимента
Рисунок 2. Монтажная схема эксперимента
В соответствии с распиновкой микросхемы подключаем соответствующие выводы к контроллеру на вход и светодиоды на выход. В нашем эксперименте мы используем только 5 светодиодов
const int NbrLEDs = 5; int latchPin = 5; int clockPin = 6; int dataPin = 4; const int photocellPin = A0; int ledLevel = 0; int states[8] = {128,192,224,240,248,252,254,255}; 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]); }
Добавь к цифрам 0..9 еще буквы A, b, C d E F, чтобы секундомер переключал символы от 0 до F