Numerolukko (Arduino gadget)

Tarvikkeet

TÄMÄ OSIO ON HIUKAN KESKEN = TYÖNALLA!

Arduino Uno + USB-johto
Arduino IDE -ohjelmointiympäristö asennettuna tietokoneelle (ilmainen)
Breadboard eli kytkentälevy (ei pakollinen, mutta helpottaa kytkentää)
Hyppylankoja eli kytkentäjohtoja, uros-uros sekä tarvittaessa uros-naaras

Sitten tarvitaan Keypad eli kalvonäppäimistö, joka on yleinen ja edullinen Arduino -komponentti. Esimerkiksi Radioduolla hinta on 4,14€ (28.10.2019). Näppäimistöjä löytyy erikokoisina. Tässä on käytetty ylläolevan linkin mukaista 3x4 kokoista matriisia. Liitteenä on käyttöohje PDF -muodossa, josta löydät kytkentäohjeet.

Riippuen projektista, tarvitset jotain, minkä oikea salasana aktivoi. Se voi olla vaikkapa servomoottori, jonka avulla voit tehdä helppotoimisen salpalukon tai vaikkapa äänitiedosto (katso puhelin -gadget). Tässä projektissa tehdään vain led-valo -koodi, joten tarvitaan sopiva määrä ledejä.

Pohjana on käytetty tätä nettisivua: https://www.electroschematics.com/arduino-with-keypad/

Kytkentä:
1. Kytke numeropädi ohjeen mukaisesti.
2. Kytke ledit vapaaksi jääneisiin portteihin. GND:n voi jakaa ledeille breadboardin kautta.

Liitteet:

Keypad käyttöohje

Arduino IDE koodi

Voit kopioida alla olevan koodin suoraan IDE:n ohjelmaruutuun:


//Paina numeropädiltä ensin * ja syötä sitten koodi. Paina lopuksi #


#include <Keypad.h>// Header file dor Keypad
const byte ROWS = 4;
const byte COLS = 3;

char keys [ROWS][COLS]= {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
byte rowPins[ROWS]={2, 3, 4, 5};
byte colPins[COLS]={6, 7, 8};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
char KEY[4] = {'1', '2', '3', '4'}; //Tässä kohden on salasana
char attempt [4] = {0,0,0,0};
int z=0;

void setup()
{
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
Serial.begin(9600);
}
void correctKEY() //tee tämä, jos oikea avain on syötetty
{
Serial.println(" Avain hyväksytty...");
digitalWrite(12, HIGH);
delay(1000);
digitalWrite(12,LOW);

}
void incorrectKEY () // tee tämä, jos avain on väärä
{
Serial.println(" Avain hylätty!");
digitalWrite(13,HIGH);
delay(1000);
digitalWrite(13,LOW);
}
void checkKEY()
{
int correct=0;
int i;
for ( i = 0; i < 4 ; i++)
{
if (attempt[i]==KEY[i])
{
correct++;
}
}
if (correct==4)
{
correctKEY();
}
else
{
incorrectKEY();
}
for (int zz=0; zz<4; zz++) //poista aiemmin syötetyt
{
attempt[zz]=0;
}
}
void readKeypad()
{
char key = keypad.getKey();
if (key != NO_KEY)
{
switch(key)
{
case '*':
z=0;
break;
case '#':
delay(100); //added debounce
checkKEY();
break;
default:
attempt[z]=key;
z++;
}

}
}

void loop()
{
readKeypad();
}

Peda.net käyttää vain välttämättömiä evästeitä istunnon ylläpitämiseen ja anonyymiin tekniseen tilastointiin. Peda.net ei koskaan käytä evästeitä markkinointiin tai kerää yksilöityjä tilastoja. Lisää tietoa evästeistä