В этой статье я расскажу, как сделать кодовый замок из ардуино. Для этого нам понадобятся красный и зелёный светодиоды, зуммер, ардуино нано, LCD дисплей с I2C конвертором, сервопривод и матричная клавиатура 4×4. При включении дисплей будет писать «Enter code.»,

включится красный светодиод,

а зелёный погаснет, сервопривод установится на 0°. При вводе цифр на дисплее будут загораться *.

Если код введён неверно, то дисплей напишет «Enter cod.». Если код правильный, то прозвучит звуковой сигнал, серво привод повернётся на 180°, дисплей напишет «Open.»

включится зелёный светодиод,

а красный отключится. После 3 секунд сервопривод вернётся в начальное положение, включится красный светодиод, а зелёный погаснет, дисплей напишет «Close.»,

затем дисплей напишет «Enter code.». Теперь о схеме. Сначала соединяем ардуино проводами с макетной платой (контакты питания).

Потом подключаем к контактам D9 — D2 матричную клавиатуру.

Далее подключаем дисплей. Контакты питания к макетной плате, SDA — А4, SCL — А5.

Затем сервопривод. Его подключаем к контакту 10.

Красный светодиод к контакту 11.

Зелёный — к контакту 12.

Зуммер — к контакту 13.

Теперь загружаем скетч.
#include <iarduino_KB.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> #include <Servo.h> iarduino_KB KB(9, 8, 7, 6, 5, 4, 3, 2); LiquidCrystal_I2C lcd(0x27, 16, 2); Servo servo; int pass[4] = {3, 6, 1, 8}; int in[4]; int r = 11; int g = 12; void setup() { KB.begin(KB1); pinMode(r, OUTPUT); pinMode(g, OUTPUT); lcd.init(); lcd.backlight(); digitalWrite(g, LOW); digitalWrite(r, HIGH); servo.attach(10); servo.write(0); lcd.setCursor(0, 0); } void loop() { lcd.clear(); lcd.print("Enter code."); while (!KB.check(KEY_DOWN)) { delay(1); } in[0] = KB.getNum; lcd.clear(); lcd.setCursor(0, 0); lcd.print('*'); while (!KB.check(KEY_DOWN)) { delay(1); } in[1] = KB.getNum; lcd.print('*'); while (!KB.check(KEY_DOWN)) { delay(1); } in[2] = KB.getNum; lcd.print('*'); while (!KB.check(KEY_DOWN)) { delay(1); } in[3] = KB.getNum; lcd.print('*'); if (in[0] == pass[0]) { if (in[1] == pass[1]) { if (in[2] == pass[2]) { if (in[3] == pass[3]) { lcd.clear(); lcd.setCursor(0, 0); lcd.print("Open."); tone(13, 400, 750); servo.write(180); digitalWrite(r, LOW); digitalWrite(g, HIGH); delay(3000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Close."); tone(13, 300, 700); servo.write(0); digitalWrite(g, LOW); digitalWrite(r, HIGH); delay(1000); } } } } }
Вот и всё. Наслаждайтесь кодовым замком!
Список радиоэлементов
| Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
|---|---|---|---|---|---|---|
| Е1 | Плата Arduino | Arduino Nano 3.0 | 1 | 5В | ||
| Е8, Е9 | Резистор | 220 Ом | 2 | SMD | ||
| Е6 | Светодиод | АЛ102Г | 1 | Красный | ||
| Е7 | Светодиод | АЛ307Г | 1 | Зелёный | ||
| Е3 | LCD-дисплей | С I2C интерфейсом | 1 | Зелёная подсветка | ||
| Е5 | Сервопривод | SG90 | 1 | 180 градусов | ||
| Е2 | Зуммер | 5В | 1 | Bu | ||
| Е4 | Клавиатура | 4Х4 | 1 | Матричная | ||
| Нет | BreadBoard | 640 точек | 1 | Без пайки | ||