กลไกการล็อค Arduino: 5 ขั้นตอน

กลไกการล็อค Arduino: 5 ขั้นตอน

สารบัญ:

Anonim

นี่เป็นโครงการ Arduino ที่เรียบง่ายที่เลียนแบบระบบความปลอดภัยภายในบ้าน

มันจำลองแบบเต็มบน Proteus แต่คุณไม่ควรคาดหวังความแตกต่างมากในสภาพแวดล้อมจริง

คุณจะต้อง:

  1. Proteus
  2. Atmel Studio
  3. Visual Micro สำหรับ Atmel Studio
  4. Arduino IDE

คุณสามารถใช้ Arduino IDE กับ Proteus แต่ฉันชอบการตั้งค่าแบบสมบูรณ์เพื่อใช้ประโยชน์จาก:

  1. ไฟล์. hex จะถูกเก็บไว้ในโฟลเดอร์โครงการ
  2. 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: ปิด

หลังจากมอเตอร์เคลื่อนที่เพื่อจำลองการปลดล็อคประตูมันจะล็อคอีกครั้งและแสดงหน้าจอหลัก