Raqamli klaviaturalar (Klaviatura bilan boshqariladigan qulfni yaratish)
Kerakli komponentlar:
Arduino UNO R3 tekshiruvi;
protоtip tayyorlash uchun maket plata;
Servomotor Tower Pro 9g 5G90
4x4 membranali klaviatura
Qarshilik 220 Om 2 dona
Jamperlar
Ushbu loyihada sakkiz simli 4x4 membranali klaviatura ishlatiladi. Qulfni ochadigan qurilmaga servomotor ulangan.
Ish printsipi
Klaviatura - bu qaysi tugma bosilganiga qarab raqam yoki belgini qaytaradigan tugmalar guruhi. Old klaviatura uchun simlar chapdan o'ngga 1 dan 8 gacha raqamlangan. Birinchi to'rtta simlar tugmachalar qatoriga, oxirgi to'rttasi ustunlarga to'g'ri keladi.
Arxivdagi klaviatura kutubxonasini eksmo.ru/files/arduino_geddes.zip havolasidan yuklab olishingiz va Arduino ishlab chiqish muhiti papkasida saqlashingiz kerak.
Himoya tizimini yaratish uchun ushbu klaviaturani servo va ikkita LED bilan uladik. Kirish uchun parolingizni kiriting va tasdiqlash uchun yulduzchani (*) bosing
Agar kiritilgan kod sketchda ko'rsatilgan parolga to'g'ri kelsa, yashil chiroq yonadi va servo 90 daraja aylanadi. Agar kod noto'g'ri bo'lsa, qizil LED yonadi. Parolni qayta kiritish uchun (#) tugmachasidan foydalaning. Siz foydalanayotgan servoni kuchliroq bilan almashtirishingiz mumkin, bu eshikdagi og'ir mandalni ochishi yoki stol tortmasining ichkaridan qulflanishi mumkin. Klaviatura va servolar tashqi tomondan o'rnatiladi.
Klaviaturani sinovdan o'tkazish.
Avval klaviaturani quyidagi kod bilan sinab ko'ramiz.
#include
const byte ROWS = 4;
const COLS = 4;
char keys [ROWS] [COLS] = {
{‘1’, ‘2’, ‘3’, ‘A’},
{‘4’, ‘5’, ‘6’, ‘B’},
{‘7’, ‘8’, ‘9’, ‘C’},
{‘*’, ‘0’, ‘#’, ‘D’}
};
byte rowPins [ROWS] = {2,3,4,5};
byte colPins [COLS] = {6,7,8,9};
Keypad keypad = Keypad(makeKeymap (key), rowPins, colPins, ROWS, COLS);
void setup() {
char key = keypad.getKey();
if (key != NO_KEY) {
Serial.printIn(key);
}
}
Ushbu kodni plataga yuklab oling va Arduino rivojlanish muhitida port monitor oynasini oching 44.1-rasm
Surat
Klaviatura yuqoriga qarab, simlarni ketma-ket chapdan o'ngga Arduino platasidagi 9-2 raqamli pinlariga ulang. Kodni yuklagandan so'ng, klaviaturadagi bir nechta tugmachani bosing. Har bir tugma bosilganda tegishli belgi Arduino IDE konsolidagi alohida satrda paydo bo'lishi kerak.
To’plam
Klaviatura pinlarini to'g'ridan-to'g'ri Arduino pinlariga ulang.
: Klaviatura pinlari
Yashil va qizil rangli LEDlarni breadboard platasiga o'rnating. Arduino platasining 11 (yashil LED) va 12 (qizil LED) pinlariga 220 Om qarshilik orqali qisqa oyoqlarni (katodlarni) va uzun oyoqlarni (anodlarni) 220 Om qarshilik orqali ulang.
Endi servoni ulang. Jigarrang simni yer piniga, qizil simni 5V pinga va sariq (oq) simni to'g'ridan-to'g'ri Arduino taxtasining 13-piniga ulang.
Sizning sxemangiz 44.2-rasmda ko'rsatilgan sxemaga mos kelishiga ishonch hosil qiling va uni Arduino xotirasiga eskiz ostida yuklang.
Sketch
#include
#include
#include
Servo myservo;
Password password = Password(“2468”);
const byte ROWS = 4;
const COLS = 4;
char keys [ROWS] [COLS] = {
{‘1’, ‘2’, ‘3’, ‘A’},
{‘4’, ‘5’, ‘6’, ‘B’},
{‘7’, ‘8’, ‘9’, ‘C’},
{‘*’, ‘0’, ‘#’, ‘D’}
};
byte rowPins [ROWS] = { 9,8,7,6 };
byte colPins [COLS] = { 5,4,3,2 };
Keypad keypad = Keypad(makeKeymap(key), rowPins, colPins, ROWS, COLS);
void setup() {
Serial.begin(9600);
delay(200);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
myservo.attach(13);
keypad.addEventListener(keypadEvent);
}
void loop() {
keypad.getKey();
myservo.write(0);
}
void keypadEvent(KeypadEvent eKey) {
switch (keypad.getState() ) {
case PRESSED;
Serial.print(“Pressed: “);
Serial.printIn(eKey);
Switch (eKey) {
case ‘*’: check Password(); break;
case ‘#’: password.reset(); break;
default: password.append(eKey);
}
}
}
void checkPassword(){
if (password.evaluate() ) {
Serial.printIn(“Success”);
myservo.write(90);
digitalWrite(11, HIGH);
delay(500);
digitalWrite(11, LOW);
} else {
Serial.prinIn(“Wrong”);
myservo.write(0);
digitalWrite(12, HIGH);
delay(500);
digitalWrite(12,LOW);
}
}
Klaviatura ulangan sxema
Do'stlaringiz bilan baham: |