รหัสล็อคผิดปกติบน Arduino

Arduino เป็นระบบที่ดีที่สุดสำหรับการคัดลอกอุปกรณ์ใด ๆ ความคิดส่วนใหญ่คงเป็นไปไม่ได้หากไม่มีเธอ เป็นเวลานานมีความคิดเช่นนี้: การสร้างการล็อคแบบพิเศษสำหรับ 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 วินาทีผ่านไปนับตั้งแต่การกดปุ่มครั้งสุดท้ายหากไม่มีรหัสนี้คุณสามารถทำตามตัวเลือกทั้งหมดที่เป็นไปได้แม้ว่าจะมีตัวเลือกมากมาย หลังจากสร้างอุปกรณ์นี้คุณจะต้องทดสอบ

 

(3 โหวต)
กำลังโหลด ...

เพิ่มความคิดเห็น