Isi kandungan:

Kraak De Kluis: 4 Langkah
Kraak De Kluis: 4 Langkah

Video: Kraak De Kluis: 4 Langkah

Video: Kraak De Kluis: 4 Langkah
Video: Уникальный слух помогает парню взламывать сейфы ради интереса 2024, November
Anonim
Kraak De Kluis
Kraak De Kluis

Pengenalan

Hallo allemaal, Ik ga eerlijk zijn en hierbij zeggen dat dit de eerste keer adalah dat ik op instruksit zit na mijn projek ITTT. Dus voor mijn 'If This Then That' projek zet ik deze boleh dimulakan secara dalam talian.

Het idee is om een soort van escape room kluis te maken waarvan je makkelijk op je computer de code 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 Butang (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 knopjes).- 1 kabel Gele (deze gebruik je voor de aansturing van de servo).- 1 Houten kistje- 1 plastik bakje- 1 pin Ijzeren

Langkah 1: Papan Dread:

Papan Dread
Papan Dread
Papan Dread
Papan Dread
Papan Dread
Papan Dread
Papan Dread
Papan Dread

Om te beginnen is het altijd handig om een vergelijkbaar projek 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 site een code erbij voor 1 knopje. Deze mempunyai ik gekopieerd en ben ik op pintu gegaan voor 4 knopjes.

Hieronder de code die erbij hoorde (voor nu): NIET WERKEND

#sertakan

Servo myservo;

int inputPin = 2; // butang int outputPin = 9; // servo int buttonState = TINGGI; // rendah omdat schakelaar terbuka adalah int pos = 0; // mulakan positie servo int oldbuttonState; keadaan int;

batal persediaan () {myservo.attach (outputPin); pinMode (inputPin, INPUT_PULLUP); Serial.begin (38400); } gelung void () {int buttonState = digitalRead (inputPin); if (buttonState == TINGGI &&! oldbuttonState) {if (state == 0) {pos = 0; nyatakan = 1; } lain {pos = 180; nyatakan = 0; } oldbuttonState = 1; } lain jika (buttonState == LOW && oldbuttonState) {oldbuttonState = 0; } Serial.println (pos); Serial.println (buttonState); myservo.write (pos); }

Langkah 2: Juiste Aansluiting Dreadboard:

Juiste Aansluiting Dreadboard
Juiste Aansluiting Dreadboard
Juiste Aansluiting Dreadboard
Juiste Aansluiting Dreadboard
Juiste Aansluiting Dreadboard
Juiste Aansluiting Dreadboard
Juiste Aansluiting Dreadboard
Juiste Aansluiting Dreadboard

Mijn volgende stap was een shema tekenen zo dat ik presisi weet hoe het weer terug di elkaar moet.

Hierboven mijn schema en hier onder mijn code (voor nu): NIET WERKEND

#sertakan

Servo myservo;

int inputPin2 = 2; // butang1 int inputPin3 = 3; // butang2 int inputPin4 = 4; // butang3 int inputPin5 = 5; // butang4

int buttonState2 = TINGGI; // rendah omdat schakelaar terbuka adalah int buttonState3 = TINGGI; int buttonState4 = TINGGI; int buttonState5 = TINGGI;

int oldbuttonState2; int oldbuttonState3; int oldbuttonState4; int oldbuttonState5;

int correctCode = {1, 2, 3, 4}; int enterCode [4]; int codeIndex = 0;

int outputPin = 9; // servo

int pos; // mulakan positie servo bool selesai = benar;

batal persediaan () {myservo.attach (outputPin); pinMode (inputPin2, INPUT_PULLUP); pinMode (inputPin3, INPUT_PULLUP); pinMode (inputPin4, INPUT_PULLUP); pinMode (inputPin5, INPUT_PULLUP); Serial.begin (38400); }

gelung void () {if (selesai) {untuk (int i = 0; i <4; i ++) {enterCode = 0; } pos = 100; myservo.write (pos); Serial.println ("Selesai"); selesai = salah; }

lain {int buttonState2 = digitalRead (inputPin2); int buttonState3 = digitalRead (inputPin3); int buttonState4 = digitalRead (inputPin4); int buttonState5 = digitalRead (inputPin5);

if (buttonState2 == TINGGI &&! oldbuttonState2) // butang1 {enterCode [codeIndex] = 1; codeIndex ++; // kod Indeks + = 1 butang lamaState2 = 1; } lain jika (buttonState2 == LOW && oldbuttonState2) {oldbuttonState2 = 0; }

if (buttonState3 == TINGGI &&! oldbuttonState3) // butang2 {Serial.println ("BUTTON2 PRESSED"); enterCode [codeIndex] = 2; codeIndex ++; oldbuttonState3 = 1; }

lain jika (buttonState3 == LOW && oldbuttonState3) {oldbuttonState3 = 0; }

if (buttonState4 == TINGGI &&! oldbuttonState4) // butang3 {enterCode [codeIndex] = 3; codeIndex ++; oldbuttonState4 = 1; } lain jika (buttonState4 == LOW && oldbuttonState4) {oldbuttonState4 = 0; }

if (buttonState5 == TINGGI &&! oldbuttonState5) // butang4 {enterCode [codeIndex] = 4; codeIndex ++; oldbuttonState5 = 1; } lain jika (buttonState5 == LOW && oldbuttonState5) {oldbuttonState5 = 0; } //Serial.print("entered: "); //Serial.println(enterCode[codeIndex-1]); //Serial.print("On: "); //Serial.println(codeIndex-1); }

jika (codeIndex == 4) {codeIndex = 0; kod boolEnteredCorrectly = benar; untuk (int i = 0; i <4; i ++) {if (correctCode ! = enterCode ) {codeEnteredCorrectly = false; }}

jika (codeEnteredCorrectly) {pos = 0; myservo.write (pos); Serial.println (pos); kelewatan (5000); } selesai = benar; Serial.println (codeEnteredCorrectly? "True": "false"); }}

Langkah 3: Kod Solderen / Juiste:

Kod Solderen / Juiste
Kod Solderen / Juiste
Kod Solderen / Juiste
Kod Solderen / Juiste
Kod Solderen / Juiste
Kod Solderen / Juiste

Ja! ben je al zover gekomen ?! Hebat!

Nu is heet handig om even rustig aan te doen en alles goed te bedenken! Maak eerst een soldeer shema'tje voor dat je gaat mula bertemu solderen. (Ditolong je een hoop als je dit voor af doet inplaats van achteraf!).

Nu moet je menyegarkan gaan houden bertemu hoe je kluis eruit gaat zien. En dus ook waar je je kabels naar toe legt. Ook je de arduino di het kluisje legt of erbuiten.

Bij mij telah ik er voor gekozen om aan een kant mijn kluisje te maken. En om aan de andere mijn arduino (bertemu daar boven een printplaatje bertemu daar op de knopjes) te maken. Bekijk het laatste plaatje voor een duidelijkere uit

Eindelijk! Na ook veel hulp van mijn mede studentsen en een hoop zelf te hebben geza, adalah hier de WERKENDE code:

#sertakan

Servo myservo;

int inputPin2 = 2; // butang1 int inputPin3 = 3; // butang2 int inputPin4 = 4; // butang3 int inputPin5 = 5; // butang4

int buttonState2 = TINGGI; // butang alloor ven een state int buttonState3 = TINGGI; int buttonState4 = TINGGI; int buttonState5 = TINGGI;

int oldbuttonState2; // butang voor alle een oldstate int oldbuttonState3; int oldbuttonState4; int oldbuttonState5;

int correctCode = {1, 3, 4, 2}; // betulkan kod int enterCode [4]; // dalam kod gegeven int codeIndex = 0; // beritahu

int outputPin = 9; // output servomotortje

int pos; // positie servo bool selesai = benar; // Bilik kebal terbuka

batal persediaan () {myservo.attach (outputPin); pinMode (inputPin2, INPUT_PULLUP); pinMode (inputPin3, INPUT_PULLUP); pinMode (inputPin4, INPUT_PULLUP); pinMode (inputPin5, INPUT_PULLUP); Serial.begin (38400); }

gelung kosong () {jika (selesai) // de servo op het juiste punt te laten starten

{untuk (int i = 0; i <4; i ++) // voor ieder cijfer di eneterCode {enterCode = 0; } pos = 100; // 100 graduan adalah moor de 'dichte' stand myservo.write (pos); // stuurt de pos naar de servo selesai = salah; // de code adalah niet compleet} lain {int buttonState2 = digitalRead (inputPin2); int buttonState3 = digitalRead (inputPin3); int buttonState4 = digitalRead (inputPin4); int buttonState5 = digitalRead (inputPin5); if (buttonState2 == TINGGI &&! oldbuttonState2) // butang1 {Serial.println ("BUTTON1 PRESSED"); // laat zien dat deze button gedrukt adalah enterCode [codeIndex] = 1; // zet het cijfer 1 in de enterCode codeIndex ++; // teller + 1 oldbuttonState2 = 1; // kijkt de knop adalah gedrukt} lain jika (buttonState2 == LOW && oldbuttonState2) // als button1 adalah los gelaten {oldbuttonState2 = 0; // kunnen er andere in gedrukt worden} if (buttonState3 == TINGGI &&! oldbuttonState3) // butang2 {

Serial.println ("BUTTON2 PRESSED"); // laat zien dat deze button gedrukt adalah enterCode [codeIndex] = 2; // zet het cijfer 2 in de enterCode codeIndex ++; // teller + 1 oldbuttonState3 = 1; // kijkt de knop adalah gedrukt} yang lain jika (buttonState3 == LOW && oldbuttonState3) // als button2 los gelaten {oldbuttonState3 = 0; // kunnen er andere dalam gedrukt worden}

if (buttonState4 == TINGGI &&! oldbuttonState4) // butang3 {Serial.println ("BUTTON3 PRESSED"); // laat zien dat deze button gedrukt adalah enterCode [codeIndex] = 3; // zet het cijfer 3 in de enterCode codeIndex ++; // teller + 1 oldbuttonState4 = 1; // kijkt de knop adalah gedrukt} yang lain jika (buttonState4 == LOW && oldbuttonState4) // als button3 los gelaten {oldbuttonState4 = 0; // kunnen er andere dalam gedrukt worden}

if (buttonState5 == TINGGI &&! oldbuttonState5) // butang4 {Serial.println ("BUTTON4 PRESSED"); // laat zien dat deze button gedrukt adalah enterCode [codeIndex] = 4; // zet het cijfer 4 in de enterCode codeIndex ++; // teller + 1 oldbuttonState5 = 1; // kijkt de knop adalah gedrukt} yang lain jika (buttonState5 == LOW && oldbuttonState5) // als button4 los gelaten {oldbuttonState5 = 0; // kunnen er andere dalam gedrukt worden}}

if (codeIndex == 4) // als mijn teller hoger adalah dan 4 {codeIndex = 0; // zet de teller weer op 0 kod boolEnteredCorrectly = true; // maakt een nieuwe boolean aan untuk (int i = 0; i <4; i ++) // voor ieder cijfer in de enterCode {if (correctCode ! = enterCode ) // kata gekeken dari het niet di de correctCode zit {codeEnteredCorrectly = false; // als er een cijfer op de foute plaatst staat dan word hij false}}

if (codeEnteredCorrectly) // juga de code correct adalah: {pos = 0; // 0 graden moor de 'open' stand myservo.write (pos); // stuurt de pos naar de servo Serial.println ("Selesai"); // geeft indicatie dat hij compleet adalah kelewatan (5000); // 5 saat om het kluisje te open}} selesai = benar; // de code is niet goed Serial.println ("cuba lagi"); // indicatie dat je overnieuw moet proberen. }

}

Langkah 4: Langkah 4 SELESAI:

Langkah4 SELESAI
Langkah4 SELESAI

Schroef je kluisje bij elkaar en bersenang-senang! Ik heb er zelf raadsels bij bedacht om het zo iets moeilijker te maken!

Ik lees graag wat jullie er van hebben gemaakt. Veel suc6 en maak erets moois van!

Disyorkan: