tanken mitt projekt är att man ska kunna låsa och öppna en dörr genom att slå in rätt kod på en keypad
Vad som behövs till projektet:
- Keypad
- Kablar
- En prototyp jag bygger själv av paff
- Solenoid
- Batteri
- En kod
Koden för en keypad jag tog från:
http//makerprojekt.wordpress.com/portfolio/29-keypad:
#include <Keypad.h> const byte numRows= 4; //number of rows on the keypad const byte numCols= 4; //number of columns on the keypad //keymap defines the key pressed according to the row and columns just as appears on the keypad char keymap[numRows][numCols]= { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; //Code that shows the the keypad connections to the arduino terminals byte rowPins[numRows] = {9,8,7,6}; //Rows 0 to 3 byte colPins[numCols]= {5,4,3,2}; //Columns 0 to 3 //initializes an instance of the Keypad class Keypad myKeypad= Keypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols); void setup() { Serial.begin(9600); } void loop() { char keypressed = myKeypad.getKey(); if (keypressed != NO_KEY) { Serial.print(keypressed); } } }
Nu har jag även m.h.a. Ville kopplat klart solenoiden så att den tillsammans med en kod åker ut i 3s och sedan in lika länge. Jag använde mig av en 10 volts spänning vilket även verkade vara tillräckligt.
Hur jag kopplade min solenoid (på bilden är det en elmotor men solenoiden använder sig av samma koppling) den tog jag härifrån: https://makerprojekt.com/portfolio/11-dc-motor-speed
Nu var nästa steg i projektet att bygga en låda av paff som får fungera som en husprototyp eftersom att detta projekt för tillfället inte kommer bli mer än just en prototyp. Jag började bygga men märkte snabbt att paffet jag jobbade med inte var stabilt nog vilket ledde till att jag var tvungen att försöka flera gånger med olika metoder för att få fram ett “hus” som klarar av att hålla upp solenoiden, som är relativt tung. Efter flera om och men fick ja till slut fram en modell som fungerar för mitt ändamål.
På min låda gjorde jag en dörr med hjälp av en mattkniv. Jag gjorde även ett så litet hål som möjlig för att kunna lägga kablarna och resten av mina kopplingar innuti lådan medans keypaden är på lådans utsida
Efter att jag byggt klart min prototyp kände jag att jag tyckte den var rätt så tråkig så jag printade ut papper jag limmade på och målade den så att den så mycket roligare ut
Här är koden efter att jag jobbat på den en stund (jag har bl.a. uteslutit allt som omfattar servos eftersom att jag inte använder en sådan
#include <Keypad.h> // include keypad library by Stanley & Brevig char secretCode[] = {"2018A"}; // set password int antal = sizeof(secretCode) - 1; // count password characters int place = 0; // keep track of element in password array const byte rows = 4; const byte cols = 4; char keys[rows][cols]= { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; byte rowPins[rows] = {9,8,7,6}; // Rows 0 to 3 byte colPins[cols]= {5,4,3,2}; // Columns 0 to 3 Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, rows, cols); void setup() { Serial.begin(9600); // serial comm. only for debugging purposes Serial.println("CanDy MachINE ................ 2018"); Serial.println(""); pinMode(11,OUTPUT); } void loop() { char key = keypad.getKey(); if (key == '*' || key == '#') { place = 0; Serial.print(place); Serial.println(" *#"); (11, LOW) } else if(place == antal) { Serial.println("----- ÖPPNA DÖRR -----"); delay(2000); place = 0; digitalWrite(11, HIGH); } else if(key == '\0') { //Serial.println("Null character"); } else if (key != secretCode[place]) { place = 0; Serial.print(place); Serial.println(" invalid pass"); } else if (key == secretCode[place]) { place++; Serial.print(place); Serial.println(" correct pass"); } delay(50); }
#include <Keypad.h> // include keypad library by Stanley & Brevig char secretCode[] = {"2018A"}; // set password int antal = sizeof(secretCode) - 1; // count password characters int place = 0; // keep track of element in password array const byte rows = 4; const byte cols = 4; bool state = LOW; char keys[rows][cols]= { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; byte rowPins[rows] = {9,8,7,6}; // Rows 0 to 3 byte colPins[cols]= {5,4,3,2}; // Columns 0 to 3 Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, rows, cols); void setup() { Serial.begin(9600); // serial comm. only for debugging purposes Serial.println("CanDy MachINE ................ 2018"); Serial.println(""); pinMode(11,OUTPUT); } void loop() { char key = keypad.getKey(); if (key == '*' || key == '#') { place = 0; Serial.print(place); Serial.println(" *#"); state = HIGH; Serial.print(state) } else if(place == antal) { Serial.println("----- ÖPPNA DÖRR -----"); delay(2000); place = 0; state = LOW; Serial.print(state); } else if(key == '\0') { //Serial.println("Null character"); } else if (key != secretCode[place]) { place = 0; Serial.print(place); Serial.println(" invalid pass"); } else if (key == secretCode[place]) { place++; Serial.print(place); Serial.println(" correct pass"); } delay(50); digitalWrite(11, state); }