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.
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:
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();
}
//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();
}