INHOUDSOPGAWE:

Kraak De Kluis: 4 stappe
Kraak De Kluis: 4 stappe

Video: Kraak De Kluis: 4 stappe

Video: Kraak De Kluis: 4 stappe
Video: De FOMO show pleegt een overval | De Kluis'23 #4 2024, Julie
Anonim
Kraak De Kluis
Kraak De Kluis

Inleiding

Hallo almal, Ek kan eerlik sê dat hierdie die eerste keer dat ek op my instruksies sit, my projek ITTT. Dus voor my 'If This Then That' -projek nie kan instel nie.

Die idee is om 'n soort van ontsnappingsruimte te vind, waarvan u die rekenaar op 'n rekenaar kan kodeer. LAAT OP: dit is nie 'n skermskerm nie! Hier is die benodigdhede vir die selfdoen ''n kluisje met 'n aanpasbare kluiskode':- Arduino uno (en usb naar arduino-kabel).- Laptop (met arduino-program).- 4 knoppies (anders kan u geen kode invoere nie.).- 1 kabel (dit kan gebruik word om die servo aan te skaf).- 1 Houten kistje- 1 plastiek bakje- 1 pen

Stap 1: Dreadboard:

Dreadboard
Dreadboard
Dreadboard
Dreadboard
Dreadboard
Dreadboard
Dreadboard
Dreadboard

Om te begin, is altyd 'n soortgelyke projek om op die internet te soek. ^^^

Ek kan hier met die slag 'n eie 4x gekopieerd kry wat hier op die geslote staat staan. Sien dit op die foto's ^^^

Ook kan hierdie webwerf 'n kode bied vir 1 knop. Hierdie het ek gekopieerd en ek kon deur 4 knoppies gaan.

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

#insluit

Servo myservo;

int inputPin = 2; // knoppie int outputPin = 9; // servo int buttonState = HOOG; // laag omdat schakelaar oop is int pos = 0; // begin positie servo int oldbuttonState; int toestand;

ongeldige opstelling () {myservo.attach (outputPin); pinMode (inputPin, INPUT_PULLUP); Serial.begin (38400); } void lus () {int buttonState = digitalRead (inputPin); if (buttonState == HIGH &&! oldbuttonState) {if (state == 0) {pos = 0; staat = 1; } anders {pos = 180; toestand = 0; } oldbuttonState = 1; } anders as (buttonState == LOW && oldbuttonState) {oldbuttonState = 0; } Serial.println (pos); Serial.println (buttonState); myservo.write (pos); }

Stap 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

My volgende stap was 'n tekening wat ek presies weet hoe ons weer in mekaar moet terugkeer.

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

#insluit

Servo myservo;

int inputPin2 = 2; // button1 int inputPin3 = 3; // button2 int inputPin4 = 4; // button3 int inputPin5 = 5; // knoppie 4

int buttonState2 = HOOG; // laag omdat skakelaar oop is int buttonState3 = HOOG; int buttonState4 = HOOG; int buttonState5 = HOOG;

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; // begin positie servo bool voltooid = waar;

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

leegte lus () {if (voltooi) {for (int i = 0; i <4; i ++) {enterCode = 0; } pos = 100; myservo.write (pos); Serial.println ("Voltooi"); voltooi = vals; }

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

if (buttonState2 == HIGH &&! oldbuttonState2) // button1 {enterCode [codeIndex] = 1; codeIndex ++; // kodeindeks += 1 oldbuttonState2 = 1; } anders as (buttonState2 == LOW && oldbuttonState2) {oldbuttonState2 = 0; }

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

anders as (buttonState3 == LOW && oldbuttonState3) {oldbuttonState3 = 0; }

as (buttonState4 == HIGH &&! oldbuttonState4) // button3 {enterCode [codeIndex] = 3; codeIndex ++; oldbuttonState4 = 1; } anders as (buttonState4 == LOW && oldbuttonState4) {oldbuttonState4 = 0; }

if (buttonState5 == HIGH &&! oldbuttonState5) // button4 {enterCode [codeIndex] = 4; codeIndex ++; oldbuttonState5 = 1; } anders as (buttonState5 == LOW && oldbuttonState5) {oldbuttonState5 = 0; } //Serial.print("entered: "); //Serial.println(enterCode[codeIndex-1]); //Serial.print("On: "); //Serial.println(codeIndex-1); }

as (codeIndex == 4) {codeIndex = 0; bool codeEnteredCorrectly = true; for (int i = 0; i <4; i ++) {if (correctCode ! = enterCode ) {codeEnteredCorrectly = false; }}

as (codeEnteredCorrectly) {pos = 0; myservo.write (pos); Serial.println (pos); vertraging (5000); } voltooi = waar; Serial.println (codeEnteredCorrectly? "True": "false"); }}

Stap 3: Solderen/ Juiste -kode:

Solderen/ Juiste -kode
Solderen/ Juiste -kode
Solderen/ Juiste -kode
Solderen/ Juiste -kode
Solderen/ Juiste -kode
Solderen/ Juiste -kode

Ja! ben je al zover gekomen ?! Super!

Nu is dit handig om selfs rustig aan jou te doen en alles goed te bederf! Maak eers 'n soldeer wat jy vir solank kan begin.

Nou moet jy rekening hou met hoe jy jou kluis kan sien. Ook jy het die arduino in die kluisje van die buituiten.

By my het ek 'n kans gekry om 'n kant van my kluisje te maak. En gee aan die ander my arduino (met daarbo 'n drukplaat met daar op die knoppies) om te maak. Bekyk die laaste plaatjie vir 'n duidelike uitleg.

Eindelik! Hier is ook die WERKENDE -kode:

#insluit

Servo myservo;

int inputPin2 = 2; // button1 int inputPin3 = 3; // button2 int inputPin4 = 4; // button3 int inputPin5 = 5; // knoppie 4

int buttonState2 = HOOG; // voor alle knoppies 'n staat int buttonState3 = HOOG; int buttonState4 = HOOG; int buttonState5 = HOOG;

int oldbuttonState2; // voor alle knoppies 'n oldstate int oldbuttonState3; int oldbuttonState4; int oldbuttonState5;

int correctCode = {1, 3, 4, 2}; // korrigeer kode int enterCode [4]; // in gegee kode int codeIndex = 0; // verteller

int outputPin = 9; // servomotortje -uitvoer

int pos; // positie servo bool voltooi = waar; // Maak kluis oop

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

void lus () {as (voltooi) // die diens op die regte punt om te laat begin

{for (int i = 0; i <4; i ++) // voor ieder cijfer in eneterCode {enterCode = 0; } pos = 100; // 100 grade was voor mij de 'dichte' stand myservo.write (pos); // stuur die pos na die servo voltooi = vals; // die kode is nie volledig} anders {int buttonState2 = digitalRead (inputPin2); int buttonState3 = digitalRead (inputPin3); int buttonState4 = digitalRead (inputPin4); int buttonState5 = digitalRead (inputPin5); if (buttonState2 == HIGH &&! oldbuttonState2) // button1 {Serial.println ("BUTTON1 GEDRUK"); // laat sien dat hierdie knoppie gedruk is enterCode [codeIndex] = 1; // stel die nommer 1 in die enterCode codeIndex ++ in; // teller + 1 oldbuttonState2 = 1; // kyk of die knop gedruk is} anders as (buttonState2 == LOW && oldbuttonState2) // as button1 is los gelaten {oldbuttonState2 = 0; // kan ander in gedrukt word} if (buttonState3 == HIGH && oldbuttonState3) // button2 {

Serial.println ("BUTTON2 GEDRUK"); // laat sien dat hierdie knoppie gedruk is enterCode [codeIndex] = 2; // dit kan 2 in die enterCode codeIndex ++; // teller + 1 oldbuttonState3 = 1; // kyk of die knop gedruk is} anders as (buttonState3 == LOW && oldbuttonState3) // as button2 is los gelaten {oldbuttonState3 = 0; // kan ander in gedrukt word}

if (buttonState4 == HIGH &&! oldbuttonState4) // button3 {Serial.println ("BUTTON3 GEDRUK"); // laat sien dat hierdie knoppie gedruk is enterCode [codeIndex] = 3; // stel die nommer 3 in die enterCode codeIndex ++; // teller + 1 oldbuttonState4 = 1; // kyk of die knop gedruk is} anders as (buttonState4 == LOW && oldbuttonState4) // as button3 is los gelaten {oldbuttonState4 = 0; // kan ander in gedrukt word}

if (buttonState5 == HIGH &&! oldbuttonState5) // button4 {Serial.println ("BUTTON4 GEDRUK"); // laat sien dat hierdie knoppie gedruk is enterCode [codeIndex] = 4; // dit is 4 in die enterCode codeIndex ++; // teller + 1 oldbuttonState5 = 1; // kyk of die knop gedruk word} anders as (buttonState5 == LOW && oldbuttonState5) // as button4 is los gelaten {oldbuttonState5 = 0; // kan ander in gedrukt word}}

as (codeIndex == 4) // as mijn teller hoger dan 4 {codeIndex = 0 is; // zet de teller weer op 0 bool codeEnteredCorrectly = true; // maak een nieuwe boolean aan for (int i = 0; i <4; i ++) // voor ieder cijfer in the enterCode {if (correctCode ! = enterCode ) // word gekeken of it not in de correctCode zit {codeEnteredCorrectly = false; // as daar 'n fout op die plaat is, kan die woord vals wees}}

as (codeEnteredCorrectly) // as die kode korrek is: {pos = 0; // 0 grade was voor my de 'open' stand myservo.write (pos); // stuur die pos na die servo Serial.println ("Voltooi"); // gee indicatie dat hy compleet is delay (5000); // 5 sec om het kluisje te openen} complete = true; // die kode is nie goed Serial.println ("probeer weer"); // aandui dat jy oor die tyd moet proberen. }

}

Stap 4: Stap4 GEDOEN:

Stap 4 GEDOEN
Stap 4 GEDOEN

Ek kan u self plesier hê!

Ek lees graag wat jy van ons gemaak het. Veel sukses en maak iets moois van!

Aanbeveel: