מנעול קומבינציה יוצא דופן על ארדואינו
כדי להרכיב אותו אתה צריך להשתמש במכשיר מיוחד של קטניות מלבניות, כמו גם מספר מונים וערמה. אך למכשיר המוגמר יהיו מידות כוללות גדולות וזה לא יהיה נוח לשימוש. ככלל, מחשבות כאלה רודפות. הצעד הראשון בהגשמת חלום היה יצירת תוכנית לארדואינו. זה ישמש כמנעול שילוב. כדי לפתוח אותו, תצטרך ללחוץ על מקש אחד, אלא על כמה, ולעשות זאת בו זמנית. התוכנית המוגמרת נראית כך:
איכות התמונה אינה הטובה ביותר, אך החיבור נוצר לקרקע, D3, D5, D7, D9 ו- D11.
הקוד מוצג להלן:
const int ina = 3;
const int inb = 5;
const int inc = 9;
const int ledPin = 13;
int i = 1000;
בתים a = 0;
בתים b = 0;
בתים c = 0;
בתים d = 0;
זמן לא חתום = 0; // אל תשכח את כל מה שדורש ערך של מיליוני ()
זמנית ארוכה לא חתומה = 0; // לאחסן זמן לא חתום
בתים keya [] = {0, 0, 0, 0, 0, 0, 0, 0}; // קודים למעשה
בתים מקש [] = {1, 1, 1, 1, 0, 1, 0, 0};
בייט keyc [] = {1, 0, 1, 0, 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, פלט);
pinMode (11, פלט);
digitalWrite (7, נמוך); // להחליף את האדמה
digitalWrite (11, נמוך);
זמן = מילי (); // צריך לספור זמן
}
void blinktwice () {// LED מהבהב כפול
digitalWrite (ledPin, HIGH);
עיכוב (100);
digitalWrite (ledPin, LOW);
עיכוב (100);
digitalWrite (ledPin, HIGH);
עיכוב (100);
digitalWrite (ledPin, LOW);
עיכוב (200);
}
לולאת חלל () {
אם (k == 0) {
blinktwice (); // בקש קוד
}
אם (k == 8) {
digitalWrite (ledPin, HIGH);
עיכוב (3000);
k הוא 0;
}
a = digitalRead (אינה); // לקרוא רמות אות מכפתורים - לחוץ / לא לחוץ
b = digitalRead (inb);
c = digitalRead (inc);
עיכוב (100); // הבא אם - הגנה מפני פוזיטיביות כוזבות, אינך יכול להשתמש
אם ((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 = מיליס ();
temp = temp - זמן;
אם (temp> 10000) {
k הוא 0;
d הוא 0;
זמן = מילי ();
}
}
כדי להימנע משאלות מיותרות לגבי הקוד, יש להבהיר כמה נקודות. פונקציית ההגדרה משמשת להקצאת יציאות. הפונקציה הבאה היא Input_Pullup, הנחוצה כדי להגדיל את מתח הסיכה ב -5 V. זה נעשה באמצעות נגדי. בשל כך, לא יתקיימו מעגלים קצרים שונים. לנוחות רבה יותר, מומלץ להשתמש בפונקציה blinktwice. באופן כללי, בעת יצירת תוכניות שונות, אתה צריך לנסות פונקציות אחרות.
לאחר הקצאת הפונקציות נקרא האות מהיציאות. אם נלחץ על הכפתור, הוא יצוין על ידי המספר 1, ואם לא - 2. לאחר מכן, ניתוח כל הערכים. לדוגמה, היה שילוב כזה כמו 0,1,1. משמעות הדבר היא לחיצה על המקש הראשון ושני האחרים אינם. אם כל הערכים נכונים, אז גם מצב 8 נכון. עדות לכך היא על ידי נורית LED מוארת בלוח הקדמי. בשלב הבא עליכם להזין קוד ספציפי שישמש לפתיחת הדלת.
רכיבי הקוד האחרונים משמשים לאיפוס ערכי המונה. פונקציה כזו מבוצעת אם חלפו יותר מעשר שניות מאז הקשת המקש האחרונה.ללא קוד זה, היית יכול לעבור על כל האפשרויות האפשריות, למרות שיש הרבה כאלה. לאחר יצירת מכשיר זה, עליך לבדוק אותו.