Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
products:aruno:exp18 [2020/06/13 13:49] – создано alexnikproducts:aruno:exp18 [2020/06/22 20:22] (текущий) alexnik
Строка 1: Строка 1:
-===== Эксперимент 18. Люксметр (Версия 2.0) =====+===== Эксперимент 18. Люксметр на сдвиговом регистре 74HC595 =====
  
 +В 12 эксперименте мы собирали устройство Люксметр. Это устройство также можно собрать используя [[theory:74HC595|сдвиговый регистр 74НС595.]]\\
 +Сразу возникает вопрос: "Зачем переделывать устройство, если оно и так работает?".\\
 +Все дело в том, что пока мы делаем простые проекты, нам вполне хватает количества цифровых вводов\выводов, но со временем может наступить ситуация когда пинов станет не хватать. Вот здесь и может пригодиться сдвиговый регистр 74НС595, поскольку используя всего три пина контроллера и одну микросхему можно получить 8 выходов. А подключая микросхемы одну за другой можно используя все те же 3 пина контроллера получать 16,24,32 и тд. цифровых выходов.
  
 ==== Схема эксперимента ==== ==== Схема эксперимента ====
-{{ :products:ardu:exp14_shema_tk.png?nolink |}} + 
-{{ :products:ardu:exp13_sch.png?nolink |}}+{{ :products:ardu:exp18_sch.png?nolink&400 |}}
 //Рисунок 1. Электрическая принципиальная схема эксперимента// //Рисунок 1. Электрическая принципиальная схема эксперимента//
  
-{{ :products:ardu:exp14.png?direct&600 |}}+{{ :products:ardu:exp18.png?direct&600 |}}
 //Рисунок 2. Монтажная схема эксперимента// //Рисунок 2. Монтажная схема эксперимента//
  
 +В соответствии с [[theory:74HC595|распиновкой]], подключаем выводы микросхемы в следующем порядке:
 +  * выводы 8 и 13 микросхемы на GND контроллера
 +  * выводы 10 и 16 микросхемы на 5v котроллера
 +  * выводы 11(SH_CP), 12(ST_CP) и 14(DS) микросхемы на цифровые входы\выходы контроллера (в нашем эксперементе это пины 6,5 и 4 соответственно)
 +  * выводы 15(Q0), 1(Q1), 2(Q2), 3(Q3), 4(Q4), 5(Q5), 6(Q6), 7(Q7) микросхемы подключаем к светодиодам
  
 ==== Программный код эксперимента ==== ==== Программный код эксперимента ====
  
 <file cpp Exp18[enable_line_numbers="2", start_line_numbers_at="1"]> <file cpp Exp18[enable_line_numbers="2", start_line_numbers_at="1"]>
 +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]);
 +}
 </file> </file>
  
 +В программе эксперимента используем массив с данными, для наглядности, в форме битовой маски.
  
 ==== Дополнительное задание ==== ==== Дополнительное задание ====
 <WRAP center round tip 60%> <WRAP center round tip 60%>
-Добавь к цифрам 0..9 еще буквы A, b, C d E F, чтобы секундомер переключал символы от 0 до F+
 </WRAP> </WRAP>