Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
| products:aruno:exp19 [2020/06/19 11:26] – создано alexnik | products:aruno:exp19 [2020/06/26 13:19] (текущий) – alexnik | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ===== Эксперимент 19. Счетчик (Версия 4.0) ===== | ===== Эксперимент 19. Счетчик (Версия 4.0) ===== | ||
| - | В 12 эксперименте мы собирали устройство Люксметр. Это устройство также можно собрать используя | + | Используя сдвиговый регистр 74НС595 усовершенствуем проект счетчика нажатий на кнопку. |
| - | Сразу возникает вопрос: " | + | |
| - | Все дело в том, что пока мы делаем простые проекты, | + | |
| ==== Схема эксперимента ==== | ==== Схема эксперимента ==== | ||
| - | {{ : | + | {{ : |
| // | // | ||
| - | {{ : | + | {{ : |
| // | // | ||
| - | В соответствии с [[theory: | + | Как и в предыдущем |
| - | * выводы 8 и 13 микросхемы на GND контроллера | + | |
| - | * выводы 10 и 16 микросхемы на 5v котроллера | + | |
| - | * выводы 11(SH_CP), 12(ST_CP) и 14(DS) микросхемы | + | |
| - | * выводы 15(Q0), 1(Q1), 2(Q2), 3(Q3), 4(Q4), 5(Q5), 6(Q6), 7(Q7) микросхемы подключаем | + | |
| ==== Программный код эксперимента ==== | ==== Программный код эксперимента ==== | ||
| - | <file cpp Exp18[enable_line_numbers=" | + | <file cpp Exp19[enable_line_numbers=" |
| - | const int NbrLEDs = 8; | + | const int latchPin = 5; |
| - | int latchPin = 5; | + | const int clockPin = 6; |
| - | int clockPin = 6; | + | const int dataPin = 4; |
| - | int dataPin = 4; | + | int keyPin |
| - | const int photocellPin | + | int data[16] = {254, 176, 237, 249, 179, 219, 223, 240, 255, 243, 247, 159, 206, 189, 199}; |
| - | int ledLevel = 0; | + | void Displ(int num); |
| - | byte states[8] = {B10000000,B11000000,B11100000,B11110000,B11111000,B11111100,B11111110,B11111111}; | + | |
| - | int sensorValue = 0; | + | |
| - | void updateShiftRegister(byte leds){ | + | void setup () { |
| - | digitalWrite(latchPin, | + | |
| - | shiftOut(dataPin, | + | |
| - | digitalWrite(latchPin, HIGH); | + | |
| - | } | + | Displ(0); |
| + | } | ||
| - | void setup() { | + | int x = -1; |
| - | | + | int button_old = 1; |
| - | | + | void loop() { |
| - | | + | if((digitalRead(keyPin) == LOW)&& |
| - | | + | x = x + 1; |
| - | } | + | } |
| + | Displ(0); | ||
| + | Displ(x); | ||
| + | if (x > 15) {x = 0;} | ||
| + | |||
| + | | ||
| + | delay(20); | ||
| + | } | ||
| - | void loop() { | + | void Displ(int num) { |
| - | sensorValue = analogRead(photocellPin); | + | |
| - | ledLevel = map(sensorValue, 0, 1023, 0, NbrLEDs); | + | |
| - | updateShiftRegister(states[ledLevel]); | + | |
| - | } | + | } |
| </ | </ | ||
| - | В программе | + | В отличие от предыдущей версии " |
| + | В программе мы обрабатываем нажатие кнопки и передаем в функцию '' | ||
| ==== Дополнительное задание ==== | ==== Дополнительное задание ==== | ||
| <WRAP center round tip 60%> | <WRAP center round tip 60%> | ||
| - | Добавь | + | Попробуйте добавить еще |
| </ | </ | ||