Dörrlås

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:

  1. Keypad
  2. Kablar
  3. En prototyp jag bygger själv av paff
  4. Solenoid
  5. Batteri
  6. En kod
  7. dörrlås sketch29-keypad

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

133

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

3ff7ec77-52e4-4624-879b-7e8bade51044.jpeg

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);
    }


 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s