Mục lục:
Video: Két an toàn: 3 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:35
Đây là kết quả cuối cùng của bạn sau khi tập hợp nó lại với nhau và tải lên mã.
Bước 1: Những thứ bạn sẽ cần
Dây nhảy, điện trở 220 OHM, Màn hình LCD 16x2, Nút đẩy, Động cơ Servo, Bảng mạch, Arduino Uno.
Bước 2: Mã
James chinchay
#bao gồm
#include #include
địa chỉ int = 0; static unsigned long SaveTimer; static unsigned long SaveDelay = (30 * 1000);
char CODE [10] = "1234E"; char Str [10]; char CodeLength = 4; int Pos = 0; bool Đã mở khóa; static unsigned long DisplayTimer; static unsigned long DisplayDelay = 200;
Màn hình LCD LiquidCrystal (12, 11, 9, 8, 7, 6);
int buttonPin1 = 2; int buttonPin2 = 3; int buttonPin3 = 4; int buttonPin4 = 5;
int enterbutton = 10; int clearlockbutton = 13;
Servo myServo; // thiết lập chương trình xây dựng void setup () {
myServo.attach (A1);
int EEPROMCodeOK = true; for (Pos = 0; Pos <= (CodeLength); Pos ++) {Str [Pos] = EEPROM.read (Pos); if (! (strrchr ("1123456789", Str [Pos])))) {// không phải là mã hợp lệ EEPROMCodeOK = false; }} Pos ++; Str [Pos] = EEPROM.read (Pos); if (Str [CodeLength + 1]! = 'E') EEPROMCodeOK = false; if (EEPROMCodeOK) {Str [CodeLength + 2] = '\ 0'; strncpy (CODE, Str, CodeLength + 1); } ClearCode (); // thiết lập đầu vào pinMode (buttonPin1, INPUT_PULLUP); pinMode (buttonPin2, INPUT_PULLUP); pinMode (buttonPin3, INPUT_PULLUP); pinMode (buttonPin4, INPUT_PULLUP);
pinMode (enterbutton, INPUT_PULLUP); pinMode (clearlockbutton, INPUT_PULLUP);
lcd.begin (16, 2); lcd.setCursor (0, 0); // thiết lập tin nhắn lcd.print ("Xin chào Mr Birch"); chậm trễ (2000); lcd.clear (); lcd.setCursor (0, 0); // thiết lập lời nhắc nhập mật khẩu lcd.print ("Mật khẩu:");
DisplayTimer = millis () + 200; }
void loop () {
Khoa();
Pos = ràng buộc (Pos, 0, CodeLength); // đọc các nút int buttonState1 = digitalRead (buttonPin1); int buttonState2 = digitalRead (buttonPin2); int buttonState3 = digitalRead (buttonPin3); int buttonState4 = digitalRead (buttonPin4);
int clButtonState = digitalRead (clearlockbutton); int enterButtonState = digitalRead (enterbutton);
lcd.setCursor (9, 0); // các yêu cầu để kích hoạt if (buttonState1 == LOW) {Str [Pos] = '1'; Pos ++; Str [Pos] = '\ 0'; chậm trễ (250); while (digitalRead (buttonPin1) == LOW);
}
else if (buttonState2 == LOW) {Str [Pos] = '2'; Pos ++; Str [Pos] = '\ 0'; chậm trễ (250); while (digitalRead (buttonPin2) == LOW);
}
else if (buttonState3 == LOW) {Str [Pos] = '3'; Pos ++; Str [Pos] = '\ 0'; chậm trễ (250); while (digitalRead (buttonPin3) == LOW); }
else if (buttonState4 == LOW) {Str [Pos] = '4'; Pos ++; Str [Pos] = '\ 0'; chậm trễ (250); while (digitalRead (buttonPin4) == LOW);
} else if (enterButtonState == LOW) {Str [Pos] = 'E'; Pos ++; Str [Pos] = '\ 0'; chậm trễ (250); while (digitalRead (buttonPin1) == LOW); if (strcmp (Str, CODE) == 0) {Đã mở khóa = true; lcd.setCursor (0, 0); lcd.print ("Đã cấp quyền truy cập"); chậm trễ (2000); lcd.clear (); lcd.print ("Đã mở khóa"); } else if (SaveTimer> millis () && (Pos + 1) == CodeLength) {
strcpy (CODE, Str); for (Pos = 0; Pos <= (CodeLength + 1); Pos ++) {EEPROM.write (Pos, Str [Pos]); } lcd.setCursor (0, 0); lcd.print ("Mã Lưu:"); lcd.setCursor (0, 1); lcd.print (Str);
Đã mở khóa = true; }
khác {
lcd.clear (); lcd.print ("Truy cập Bị Từ chối."); chậm trễ (2000); lcd.clear (); lcd.print ("Mật khẩu:");
} // mã mở khóa while (Đã mở khóa) {Unlock (); if (digitalRead (clearlockbutton) == LOW) {delay (200); lcd.clear (); lcd.print ("Đã khóa"); chậm trễ (2000); lcd.clear (); Đã mở khóa = false; SaveTimer = millis () + 30000; }}
ClearCode ();
}
else if (clButtonState == LOW) {delay (500);
while (clearlockbutton == LOW); if ((millis () - SaveTimer)> 4500) {
}
ClearCode ();
}
if ((long) (millis () - DisplayTimer)> = 0) {DisplayTimer + = DisplayDelay; lcd.setCursor (9, 0); lcd.print (Str); lcd.print ("");
} }
void ClearCode () {
Vị trí = 0; Str [Pos] = '\ 0'; lcd.setCursor (0, 0); lcd.print ("Mật khẩu:"); lcd.setCursor (0, 1); lcd.print ("");
}
void Unlock () {
myServo.write (150);
} // nút khóa chương trình void Lock () {
myServo.write (50);
}
Bước 3:
khi hoàn thành mọi thứ nó sẽ trông như thế này.
Đề xuất:
Tính toán Cơ học lượng tử tính toán: 4 bước
Tính toán Cơ học lượng tử tính toán: Các phép tính toán trong hóa học và vật lý có thể tiết lộ các tính chất rất thú vị trên một số mẫu vật (đặc biệt nếu chúng có thể được sửa đổi để có hiệu quả tốt hơn của một hợp chất ban đầu nhất định). trong các thủ tục, bên cạnh các yếu tố của d
Nút an toàn không dây cho an toàn PLC: 6 bước (có hình ảnh)
Nút an toàn không dây cho an toàn PLC: Dự án này là bằng chứng của tôi về khái niệm sử dụng IoT và (cuối cùng) người máy để tạo ra một lớp an toàn bổ sung cho các cơ sở sản xuất nguy hiểm. Nút này có thể được sử dụng để bắt đầu hoặc dừng nhiều quá trình, bao gồm cả việc điều khiển tín hiệu
An toàn hơn Tốt hơn: Làm cho Ga Tàu An toàn hơn: 7 bước
An toàn hơn Tốt hơn: Làm cho Ga Tàu An toàn hơn: Nhiều ga xe lửa ngày nay không an toàn do thiếu an ninh, rào chắn và cảnh báo có tàu đến. Chúng tôi thấy cần phải khắc phục điều đó. Để giải quyết vấn đề này, chúng tôi đã tạo ra An toàn hơn tốt hơn. Chúng tôi đã sử dụng cảm biến rung, cảm biến chuyển động và
Đầu Robot chụp ảnh toàn cảnh (ảnh toàn cảnh): 13 bước (có ảnh)
Camera Panorama Đầu robot (ảnh toàn cảnh): Bạn đã bao giờ muốn chụp ảnh toàn cảnh chỉ bằng một nút bấm? Tài liệu hướng dẫn này sẽ hướng dẫn bạn cách chế tạo một đầu robot để gắn máy ảnh của bạn lên, sau đó sẽ gắn vào chân máy. Đầu robot sẽ di chuyển theo hai trục để
Lily điện hoặc ghim an toàn: Cách an toàn và trông tốt khi làm việc đó: 9 bước (có hình ảnh)
Lily điện hoặc Chốt an toàn: Làm thế nào để An toàn và Trông Tốt khi Làm Điều đó: Tài liệu hướng dẫn này dành cho người đi bộ và người đi xe đạp. Ai muốn được nhìn thấy vào ban đêm mà vẫn nhìn tốt. Hãy tặng nó cho bạn gái của bạn, chị gái của bạn, anh trai của bạn, anh trai nhà bạn hoặc thậm chí là mẹ của bạn. Bất kỳ ai sành điệu và đi bộ, chạy hoặc đi xe đạp vào ban đêm!!!