รหัสล็อคผิดปกติบน Arduino
ในการประกอบมันคุณต้องใช้อุปกรณ์พิเศษของพัลส์รูปสี่เหลี่ยมเช่นเดียวกับตัวนับจำนวนมากและฮีป แต่อุปกรณ์ที่เสร็จแล้วจะมีขนาดใหญ่โดยรวมและไม่สะดวกในการใช้ ตามกฎแล้วความคิดดังกล่าวหลอกหลอน ขั้นตอนแรกในการตระหนักถึงความฝันคือการสร้างโปรแกรมสำหรับ Arduino มันจะทำหน้าที่เป็นล็อคการรวมกัน เพื่อที่จะเปิดมันคุณจะต้องกดปุ่มเดียวไม่ได้ แต่หลาย ๆ ปุ่มและทำมันพร้อมกัน รูปแบบที่เสร็จแล้วมีลักษณะดังนี้:
คุณภาพของภาพไม่ดีที่สุด แต่การเชื่อมต่อนั้นทำบนพื้นดิน, D3, D5, D7, D9 และ D11
รหัสแสดงด้านล่าง:
const int ina = 3;
const int inb = 5;
const int inc = 9;
const int ledPin = 13;
int i = 1,000;
ไบต์ a = 0;
ไบต์ b = 0;
ไบต์ c = 0;
ไบต์ d = 0;
ไม่ได้ลงนามเป็นเวลานาน = 0; // อย่าลืมทุกสิ่งที่มีค่าเป็นมิลลิวินาที
temp ยาวที่ไม่ได้ลงชื่อ = 0; // เก็บในที่ไม่ได้ลงชื่อยาว
byte keya [] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; // รหัสจริง
byte keyb [] = {1, 1, 1, 1, 1, 0, 1, 0, 0};
byte keyc [] = {1, 0, 1, 0, 1, 1, 1, 1, 0};
ไบต์ k = 0;
การตั้งค่าเป็นโมฆะ () {
pinMode (ina, INPUT_PULLUP); // 3 อินพุตเชื่อมต่อกับปุ่มต่างๆ
pinMode (inb, INPUT_PULLUP);
pinMode (inc, INPUT_PULLUP);
pinMode (ledPin, OUTPUT); // LED ในตัวบนพินที่ 13
pinMode (7, OUTPUT);
pinMode (11, OUTPUT);
digitalWrite (7, ต่ำ); // แทนที่โลก
digitalWrite (11, ต่ำ);
เวลา = มิลลิวินาที (); // จำเป็นต้องนับเวลา
}
เป็นโมฆะ blinktwice () {// LED กระพริบสองครั้ง
digitalWrite (ledPin, HIGH);
ล่าช้า (100);
digitalWrite (ledPin, LOW);
ล่าช้า (100);
digitalWrite (ledPin, HIGH);
ล่าช้า (100);
digitalWrite (ledPin, LOW);
ล่าช้า (200);
}
void loop () {
ถ้า (k == 0) {
blinktwice (); // พรอมต์สำหรับรหัส
}
ถ้า (k == 8) {
digitalWrite (ledPin, HIGH);
ล่าช้า (3000);
k คือ 0;
}
a = digitalRead (ina); // อ่านระดับสัญญาณจากปุ่ม - กด / ไม่ได้กด
b = digitalRead (inb);
c = digitalRead (inc);
ล่าช้า (100); // ถัดไปถ้า - การป้องกันผลบวกเท็จคุณไม่สามารถใช้งานได้
if ((digitalRead (ina) == a) && (digitalRead (inb) == b) && (digitalRead (inc) == c)) {
ถ้า (a == keya [k]) {
ถ้า (b == keyb [k]) {
ถ้า (c == keyc [k]) {
k ++;
}
}
}
}
ถ้า (k == 1) {
ถ้า (d == 0) {
เวลา = มิลลิวินาที ();
d ++;
}
}
temp = millis ();
temp = temp - time;
if (temp> 10,000) {
k คือ 0;
d คือ 0;
เวลา = มิลลิวินาที ();
}
}
เพื่อหลีกเลี่ยงคำถามที่ไม่จำเป็นเกี่ยวกับรหัสควรมีการแจกแจงบางประเด็น ฟังก์ชั่นตั้งค่าใช้สำหรับกำหนดพอร์ต ฟังก์ชั่นถัดไปคือ Input_Pullup ซึ่งจำเป็นในการเพิ่มแรงดันพินโดย 5 V สิ่งนี้ทำโดยใช้ตัวต้านทาน ด้วยเหตุนี้วงจรสั้น ๆ จะไม่เกิดขึ้น เพื่อความสะดวกยิ่งขึ้นขอแนะนำให้ใช้ฟังก์ชั่นกะพริบ โดยทั่วไปเมื่อสร้างโปรแกรมต่าง ๆ คุณต้องลองใช้ฟังก์ชั่นอื่น ๆ
หลังจากกำหนดฟังก์ชั่นแล้วสัญญาณจะถูกอ่านจากพอร์ต หากกดปุ่มมันจะถูกระบุด้วยหมายเลข 1 และหากไม่ใช่ - 2 ถัดไปคือการวิเคราะห์ค่าทั้งหมด ตัวอย่างเช่นมีชุดค่าผสมเช่น 0,1,1 ซึ่งหมายความว่าปุ่มแรกถูกกดและอีกสองไม่ หากค่าทั้งหมดเป็นจริงเงื่อนไข 8 ก็เป็นจริงเช่นกัน นี่คือหลักฐานโดย LED สว่างบนแผงด้านหน้า ถัดไปคุณต้องป้อนรหัสเฉพาะที่จะให้บริการเพื่อเปิดประตู
องค์ประกอบรหัสสุดท้ายจะใช้ในการรีเซ็ตค่าตัวนับ ฟังก์ชั่นดังกล่าวจะดำเนินการถ้าเกิน 10 วินาทีผ่านไปนับตั้งแต่การกดปุ่มครั้งสุดท้ายหากไม่มีรหัสนี้คุณสามารถทำตามตัวเลือกทั้งหมดที่เป็นไปได้แม้ว่าจะมีตัวเลือกมากมาย หลังจากสร้างอุปกรณ์นี้คุณจะต้องทดสอบ