สารบัญ:
- ขั้นตอนที่ 1: Dreadboard:
- ขั้นตอนที่ 2: Juiste Aansluiting Dreadboard:
- ขั้นตอนที่ 3: รหัสบัดกรี / Juiste:
- ขั้นตอนที่ 4: ขั้นตอนที่ 4 เสร็จสิ้น:
วีดีโอ: คราก เดอ คลูอิส: 4 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:06
แนะนำตัว
ฮัลโหล อัลเลมาล
Ik ga eerlijk zijn en hierbij zeggen dat dit de eerste keer is dat ik op Instrucables zit na mijn project ITTT. Dus voor mijn 'If This That' project zet ik deze instuctable online.
Het idee is om een soort van escape room kluis te maken waarvan je makkelijk op je รหัสคอมพิวเตอร์ kan veranderen. LET OP: het is dus niet met een schermpje!Hier onder de benodigdheden voor de DIY 'een kluisje met aanpasbare kluis code':- Arduino uno (en usb naar arduino cabel).- Laptop (met arduino programma).- 4 Buttons (anders kun je geen code invoeren).- 6 Zwarte kabels (deze gebruik je voor de Gnd(-).- 2 Rode kabels (deze gebruik je voor 5V(+).- 4 Groene kabels (deze gebruik je voor het uitlezen van knopje)).- 1 Gele kabel (deze gebruik je voor de aansturing van de servo).- 1 Houten kistje- 1 พลาสติก bakje- 1 Ijzeren pin
ขั้นตอนที่ 1: Dreadboard:
Om te Beginnen เป็น het altijd handig om een vergelijkbaar โครงการ op te zoeken op internet. Ik kon hier niet veel van vinden en ben het plaatje hierboven wel tegen gekomen! ^^^
Ik ben hier mee aan de slag gegaan en heb eigenlijk 4x gekopieerd wat hier aan gesloten staat. Dit zie je op de foto's ^^^
Ook stond op deze เว็บไซต์ een code erbij voor 1 knopje Deze มี ik gekopieerd en ben ik op door gegaan voor 4 knopjes
ลำดับชั้นของโค้ด die erbij hoorde (สำหรับ nu): NIET WERKEND
#รวม
เซอร์โว myservo;
int อินพุตพิน = 2; // ปุ่ม int outputPin = 9; // เซอร์โว int buttonState = สูง; // omdat schakelaar ต่ำเปิดอยู่ int pos = 0; // เริ่ม positie servo int oldbuttonState; สถานะภายใน;
การตั้งค่าเป็นโมฆะ () { myservo.attach (outputPin); pinMode(inputPin, INPUT_PULLUP); Serial.begin(38400); } วงเป็นโมฆะ () { int buttonState = digitalRead (inputPin); if (buttonState == สูง && !oldbuttonState) { if (state == 0) { pos = 0; รัฐ = 1; } อื่น ๆ { pos = 180; รัฐ = 0; } oldbuttonState = 1; } อื่น if (buttonState == LOW && oldbuttonState) { oldbuttonState = 0; } Serial.println(pos); Serial.println (ปุ่มสถานะ); myservo.write (ตำแหน่ง); }
ขั้นตอนที่ 2: Juiste Aansluiting Dreadboard:
Mijn volgende stap คือ een shema tekenen zo dat ik precies weet hoe het weer terug in elkaar moet.
Hierboven mijn schema en hier onder mijn code (voor nu): NIET WERKEND
#รวม
เซอร์โว myservo;
int inputPin2 = 2; // button1 int inputPin3 = 3; // button2 int inputPin4 = 4; // button3 int inputPin5 = 5; // button4
int buttonState2 = สูง; // omdat schakelaar ต่ำเปิดอยู่ int buttonState3 = สูง; int buttonState4 = สูง; int buttonState5 = สูง;
int oldbuttonState2; int oldbuttonState3; int oldbuttonState4; ภายใน oldbuttonState5;
int correctCode = {1, 2, 3, 4}; int enterCode[4]; int codeIndex = 0;
int outputPin = 9; // เซอร์โว
ตำแหน่งภายใน; // เริ่ม positie servo bool เสร็จสมบูรณ์ = true;
การตั้งค่าเป็นโมฆะ () { myservo.attach (outputPin); pinMode(inputPin2, INPUT_PULLUP); pinMode(inputPin3, INPUT_PULLUP); pinMode(inputPin4, INPUT_PULLUP); pinMode(inputPin5, INPUT_PULLUP); Serial.begin(38400); }
วงเป็นโมฆะ () { ถ้า (เสร็จสมบูรณ์) { สำหรับ (int i = 0; i < 4; i++) { enterCode = 0; } ตำแหน่ง = 100; myservo.write (ตำแหน่ง); Serial.println("เสร็จสิ้น"); เสร็จสิ้น = เท็จ; }
อื่น { int buttonState2 = digitalRead (inputPin2); int buttonState3 = digitalRead (inputPin3); int buttonState4 = digitalRead (inputPin4); int buttonState5 = digitalRead (inputPin5);
ถ้า (buttonState2 == สูง && !oldbuttonState2)//button1 { enterCode [codeIndex] = 1; รหัสดัชนี++; //รหัสดัชนี +=1 oldbuttonState2 = 1; } อื่น if (buttonState2 == LOW && oldbuttonState2) { oldbuttonState2 = 0; }
ถ้า (buttonState3 == สูง && !oldbuttonState3) //button2 { Serial.println ("BUTTON2 PRESSED"); enterCode[codeIndex] = 2; codeIndex++; oldbuttonState3 = 1; }
อื่น if (buttonState3 == LOW && oldbuttonState3) { oldbuttonState3 = 0; }
ถ้า (buttonState4 == สูง && !oldbuttonState4)//button3 { enterCode [codeIndex] = 3; codeIndex++; oldbuttonState4 = 1; } else if (buttonState4 == LOW && oldbuttonState4) { oldbuttonState4 = 0; }
ถ้า (buttonState5 == สูง && !oldbuttonState5)//button4 { enterCode [codeIndex] = 4; รหัสดัชนี++; oldbuttonState5 = 1; } อื่น ๆ ถ้า (buttonState5 == LOW && oldbuttonState5) { oldbuttonState5 = 0; } //Serial.print("ป้อน: "); //Serial.println(enterCode[codeIndex-1]); //Serial.print("เปิด: "); // Serial.println (codeIndex-1); }
ถ้า (codeIndex == 4) { codeIndex = 0; รหัสบูลEnteredCorrectly = true; สำหรับ (int i = 0; i <4; i++) { if (correctCode != enterCode) { codeEnteredCorrectly = false; } }
ถ้า (codeEnteredCorrectly) { pos = 0; myservo.write (ตำแหน่ง); Serial.println(pos); ล่าช้า (5000); } เสร็จสิ้น = จริง; Serial.println(codeEnteredCorrectly ? "true": "false"); } }
ขั้นตอนที่ 3: รหัสบัดกรี / Juiste:
จ๋า! เบน เจ อัล โซเวอร์ เกโคเมน?! สุด!
Nu is het handig om even rustig aan te doen en alles goed te bedenken!Maak eerst een soldeer shema'tje voor dat je gaat beginnen met solderen.(dit helpt je een hoop als je dit voor af doet inplaats van achteraf!).
Nu moet je rekening gaan houden พบ hoe je kluis eruit gaat zien. En dus ook waar je je kabels ใกล้ toe legt. Ook je de arduino ใน het kluisje legt ของ erbuiten
รายการมี ik er voor gekozen om aan een kant mijn kluisje te maken. En om aan de andere mijn arduino (met daar boven een printplaatje met daar op de knopjes) te maken. Bekijk het laatstekeeen plaatje.
ไอน์เดลิจค์! Na ook veel hulp van mijn mede studenten en een hoop zelf te hebben gedaan, is hier de WERKENDE รหัส:
#รวม
เซอร์โว myservo;
int inputPin2 = 2; // button1 int inputPin3 = 3; // button2 int inputPin4 = 4; // button3 int inputPin5 = 5; // button4
int buttonState2 = สูง; // สำหรับปุ่มทั้งหมด een state int buttonState3 = สูง; int buttonState4 = สูง; int buttonState5 = สูง;
int oldbuttonState2; // สำหรับปุ่มทั้งหมด een oldstate int oldbuttonState3; int oldbuttonState4; ภายใน oldbuttonState5;
int correctCode = {1, 3, 4, 2}; // แก้ไขโค้ด int enterCode[4]; // ในโค้ด gegeven int codeIndex = 0; //หมอดู
int outputPin = 9; // เอาต์พุตเซอร์โวมอเตอร์
ตำแหน่งภายใน; // positie servo bool เสร็จสมบูรณ์ = true; // เปิดห้องนิรภัย
การตั้งค่าเป็นโมฆะ () { myservo.attach (outputPin); pinMode(inputPin2, INPUT_PULLUP); pinMode(inputPin3, INPUT_PULLUP); pinMode(inputPin4, INPUT_PULLUP); pinMode(inputPin5, INPUT_PULLUP); Serial.begin(38400); }
วงเป็นโมฆะ () { ถ้า (เสร็จสมบูรณ์) // de servo op het juiste punt te laten starten
{ สำหรับ (int i = 0; i <4; i++) // สำหรับ ieder cijfer ใน eneterCode { enterCode = 0; } ตำแหน่ง = 100; //100 graden เป็น voor mij de 'dichte' stand myservo.write(pos); //stuurt de pos naar de servo เสร็จสมบูรณ์ = false; // โค้ด de นั้นสมบูรณ์แล้ว } อื่น { int buttonState2 = digitalRead (inputPin2); int buttonState3 = digitalRead (inputPin3); int buttonState4 = digitalRead (inputPin4); int buttonState5 = digitalRead (inputPin5); ถ้า (buttonState2 == สูง && !oldbuttonState2) //button1 { Serial.println ("BUTTON1 PRESSED"); // laat zien dat deze ปุ่ม gedrukt คือ enterCode[codeIndex] = 1; //zet het cijfer 1 ในรหัส enterCode codeIndex++; // หมอดู + 1 oldbuttonState2 = 1; //kijkt ของ de knop คือ gedrukt } else if (buttonState2 == LOW && oldbuttonState2) // als button1 คือ los gelaten { oldbuttonState2 = 0; //kunnen er andere ใน gedrukt worden } if (buttonState3 == HIGH && !oldbuttonState3)//button2 {
Serial.println ("กด BUTTON2"); // laat zien dat deze ปุ่ม gedrukt คือ enterCode[codeIndex] = 2; //zet het cijfer 2 ในรหัส enterCode codeIndex++; // หมอดู + 1 oldbuttonState3 = 1; //kijkt ของ de knop คือ gedrukt } else if (buttonState3 == LOW && oldbuttonState3) // als button2 คือ los gelaten { oldbuttonState3 = 0; //kunnen er andere ใน gedrukt worden }
ถ้า (buttonState4 == สูง && !oldbuttonState4) //button3 { Serial.println ("BUTTON3 PRESSED"); // laat zien dat deze ปุ่ม gedrukt คือ enterCode[codeIndex] = 3; //zet het cijfer 3 ในรหัส enterCode codeIndex++; // หมอดู + 1 oldbuttonState4 = 1; //kijkt ของ de knop คือ gedrukt } else if (buttonState4 == LOW && oldbuttonState4) // als button3 คือ los gelaten { oldbuttonState4 = 0; //kunnen er andere ใน gedrukt worden }
ถ้า (buttonState5 == สูง && !oldbuttonState5)//button4 { Serial.println ("BUTTON4 PRESSED"); // laat zien dat deze ปุ่ม gedrukt คือ enterCode[codeIndex] = 4; //zet het cijfer 4 ในรหัส enterCode codeIndex++; // หมอดู + 1 oldbuttonState5 = 1; //kijkt ของ de knop คือ gedrukt } else if (buttonState5 == LOW && oldbuttonState5) // als button4 คือ los gelaten { oldbuttonState5 = 0; //kunnen er andere ใน gedrukt worden } }
ถ้า (codeIndex == 4) // als mijn teller hoger คือ dan 4 { codeIndex = 0; // zet de teller weer op 0 bool codeEnteredCorrectly = true; // maakt een nieuwe boolean aan for (int i = 0; i < 4; i++) // voor ieder cijfer in de enterCode { if (correctCode != enterCode)//word gekeken of het niet in de แก้ไขรหัส zit { codeEnteredCorrectly = false; //als er een cijfer op de foute plaatst staat dan word hij false } }
ถ้า (codeEnteredCorrectly) // โค้ดที่ถูกต้องคือ: { pos = 0; //0 graden เป็น voor mij de 'open' stand myservo.write(pos); //stuurt de pos naar de servo Serial.println ("เสร็จสมบูรณ์"); //geeft บ่งชี้ว่าเสร็จสิ้นการล่าช้า (5000); ///5 วินาที om het kluisje te openen } เสร็จสิ้น = true; //รหัส de niet ไป Serial.println("ลองอีกครั้ง"); //บ่งชี้ว่า dat je overnieuw moet proberen. }
}
ขั้นตอนที่ 4: ขั้นตอนที่ 4 เสร็จสิ้น:
คลิกเพื่อดูภาพอื่น ๆ เพลิดเพลินไปกับความสนุก!
Ik lees graag wat jullie er van hebben gemaakt. Veel suc6 en maak er iets moois van!
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
โครโนเมโทร เดอ โคซินา ต้นไม้แห่งชีวิต: 4 ขั้นตอน
โครโนเมโทร เดอ โคซินา ต้นไม้แห่งชีวิต: El cronómetro de cocina es una herramienta que le permite al estudiante realizar varias tareas sin perder la atenci&n de los tiempos de la cocina Funciona como un cronómetro midiendo intervalos de 10 min, cada lapso de tiempo s
การสมัครรักษาคะแนนเปตอง / เฌอ-เดอ-บูล: 7 ขั้นตอน
แอปพลิเคชันเก็บคะแนนเปตอง / Jeu-de-Boules: นี่คือแอปพลิเคชันเก็บคะแนนเปตอง (บางครั้งเรียกว่า Jeu de Boules) สำหรับ Android แอปพลิเคชันนี้สามารถใช้งานได้ตามที่เป็นอยู่และทำงานได้อย่างสมบูรณ์ หรือใช้ร่วมกับจอแสดงผล Petanque Matrix [แยกคำสั่ง
เซนเซอร์ เดอ โมวิเมียโต้! Como Uso Uno?: 6 ขั้นตอน
เซนเซอร์ เดอ โมวิเมียโต้! Como Uso Uno?: Sensar el movimiento en mi opinión es una de las cosas mas útiles que podemos hacer a la hora de hacer electrónica y de ahorrar energía en cualquier lugar, ya sea en nuestras en casas สาธารณะ, casas สาธารณะ . Por esta razón les traigo