![กลไกการล็อค Arduino: 5 ขั้นตอน กลไกการล็อค Arduino: 5 ขั้นตอน](https://img.gwsigeps.com/img/img/blank.jpg)
สารบัญ:
- วัสดุ:
- ขั้นตอนที่ 1: ตั้งค่ารหัส
- ขั้นตอนที่ 2: หน้าจอต้อนรับ
- ขั้นตอนที่ 3: ขอรหัสผ่าน
- ขั้นตอนที่ 4: การเข้าถึงที่ได้รับ
- ขั้นตอนที่ 5: ปิด
นี่เป็นโครงการ Arduino ที่เรียบง่ายที่เลียนแบบระบบความปลอดภัยภายในบ้าน
มันจำลองแบบเต็มบน Proteus แต่คุณไม่ควรคาดหวังความแตกต่างมากในสภาพแวดล้อมจริง
คุณจะต้อง:
- Proteus
- Atmel Studio
- Visual Micro สำหรับ Atmel Studio
- Arduino IDE
คุณสามารถใช้ Arduino IDE กับ Proteus แต่ฉันชอบการตั้งค่าแบบสมบูรณ์เพื่อใช้ประโยชน์จาก:
- ไฟล์. hex จะถูกเก็บไว้ในโฟลเดอร์โครงการ
- Atmel Studio มีคุณสมบัติครบถ้วนอัตโนมัติที่น่าสนใจ
โดยทั่วไปเมื่อโครงการโหลดคุณจะเห็นการตั้งค่าดังกล่าว
วัสดุ:
ขั้นตอนที่ 1: ตั้งค่ารหัส
#include
#include #include #include
int greenLed = 22; int redLed = 23; int servoPin = 24; // Servo int piezoPin = 25; ถ่าน * ourCode = "1234"; int currentPosition = 0; Servo myservo; int pos = 0;
const แถวไบต์ = 4; const byte cols = 3;
ถ่านคีย์ แถว cols = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9' }, {'*', '0', '#'}}; byte rowPins rows = {13,10,9,8}; byte colPins cols = {7,6,1}; ปุ่มกดของปุ่มกด = ปุ่มกด (makeKeymap (กุญแจ), rowPins, colPins, แถว, cols); LiquidCrystal Lcd (12,11,5,4,3,2);
การติดตั้งเป็นโมฆะ () {Lcd.begin (16,2); myservo.attach (24); displayCodeEntryScreen (); pinMode (piezoPin, OUTPUT); pinMode (servoPin, OUTPUT); pinMode (redLed, OUTPUT); pinMode (greenLed, OUTPUT); digitalWrite (redLed ต่ำ); digitalWrite (greenLed ต่ำ); }
void loop () {int l; ถ่าน key = keypad.getKey (); Lcd.setCursor (0,0); Lcd.print ("ป้อนรหัสผ่าน"); if (int (key)! = 0) {Lcd.setCursor (4,1); สำหรับ (l = 0; l <= currentPosition; ++ l) {Lcd.print ("*");} ถ้า (key == ourCode currentPosition) {++ currentPosition; if (currentPosition == 4) {unlockDoor (); currentPosition = 0; }} else {invalidCode (); currentPosition = 0; }}} void invalidCode () {digitalWrite (redLed, HIGH); digitalWrite (servoPin ต่ำ); digitalWrite (piezoPin สูง); clearScreen (); Lcd.setCursor (0,0); Lcd.print ("ACENE DENIED!"); Lcd.setCursor (0,1); Lcd.print ("รหัสไม่ถูกต้อง"); ล่าช้า (5000); digitalWrite (redLed ต่ำ); digitalWrite (piezoPin ต่ำ);
displayCodeEntryScreen (); }
เป็นโมฆะ turnHandle () {สำหรับ (pos = 0; pos <= 180; pos + = 1) // ไปจาก 0 องศาถึง 180 องศา {// ในขั้นตอนที่ 1 องศา myservo.write (pos); // บอกให้ servo ไปที่ตำแหน่งในตัวแปร 'pos' delay (15); // รอ 15ms เพื่อให้ servo ไปถึงตำแหน่ง} สำหรับ (pos = 180; pos> = 0; pos- = 1) // เปลี่ยนจาก 180 องศาเป็น 0 องศา {myservo.write (pos); // บอกให้ servo ไปที่ตำแหน่งในตัวแปร 'pos' delay (15); // รอ 15ms เพื่อให้ servo ไปถึงตำแหน่ง}}
เป็นโมฆะ unlockDoor () {digitalWrite (greenLed, สูง); clearScreen (); Lcd.setCursor (0,0); Lcd.print ("ACCESS GRANTED"); Lcd.setCursor (0,1); Lcd.print ("ยินดีต้อนรับ !!"); digitalWrite (servoPin สูง); turnHandle (); ล่าช้า (500); digitalWrite (greenLed ต่ำ); digitalWrite (servoPin ต่ำ); displayCodeEntryScreen (); } เป็นโมฆะ displayCodeEntryScreen () {clearScreen (); Lcd.setCursor (0,0); Lcd.print ("HELLO AND"); Lcd.setCursor (0,1); Lcd.print ("ยินดีต้อนรับ!"); ล่าช้า (3000); clearScreen (); } เป็นโมฆะ clearScreen () {Lcd.setCursor (0,0); Lcd.print (""); Lcd.setCursor (0,1); Lcd.print (""); }
ขั้นตอนที่ 2: หน้าจอต้อนรับ
ในการสร้างสำเร็จไฟล์ควรเก็บไว้ในไดเรกทอรีไฟล์ต่อไปนี้เช่น: C: Users ชื่อผู้ใช้ Documents Atmel Studio 6.2 ProjectFolder ProjectName Debug
หน้าจอต้อนรับดังแสดง …
ขั้นตอนที่ 3: ขอรหัสผ่าน
ใส่รหัสผ่านของคุณ
ในกรณีของเรา 1234
ขั้นตอนที่ 4: การเข้าถึงที่ได้รับ
ในรายการที่ประสบความสำเร็จ
ขั้นตอนที่ 5: ปิด
หลังจากมอเตอร์เคลื่อนที่เพื่อจำลองการปลดล็อคประตูมันจะล็อคอีกครั้งและแสดงหน้าจอหลัก