В этой статье я расскажу, как сделать кодовый замок из ардуино. Для этого нам понадобятся красный и зелёный светодиоды, зуммер, ардуино нано, 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 | Без пайки | ||