zondag 3 juni 2012

Arduino - Experiment 5 - Numerical Keypad

In experiment numero 5 heb ik een numeriek toetsenbordje op de arduino aangesloten. Om zichtbaar te maken welke toets ingedrukt is, gebruikte ik een 7 segments display.

Allereerst heb ik het toetsenbordje aangepast zodat er, als je op een toets drukt, op twee draden 5V komt te staan. De combinatie van HIGH en LOW op de draden is hieronder weergegeven:



De code in de Arduino is als volgt:



const int DraadZwart = 13;
const int DraadGrijs = 12;
const int DraadBruin = 11;
const int DraadPaars = 10;
const int DraadRood = 9;
const int DraadBlauw = 8;
const int DraadOranje = 7;
int StatusZwart = 0;
int StatusGrijs = 0;
int StatusBruin = 0;
int StatusPaars = 0;
int StatusRood = 0;
int StatusBlauw = 0;
int StatusOranje = 0;
#define A 0
#define B 1
#define C 2
#define D 3


void setup() {
pinMode(DraadZwart, INPUT);
pinMode(DraadGrijs, INPUT);
pinMode(DraadBruin, INPUT);
pinMode(DraadPaars, INPUT);
pinMode(DraadRood, INPUT);
pinMode(DraadBlauw, INPUT);
pinMode(DraadOranje, INPUT);
pinMode(A,OUTPUT);
pinMode(B,OUTPUT);
pinMode(C,OUTPUT);
pinMode(D,OUTPUT);    
}




void loop(){
StatusZwart = digitalRead(DraadZwart);
StatusGrijs = digitalRead(DraadGrijs);
StatusBruin = digitalRead(DraadBruin);
StatusPaars = digitalRead(DraadPaars);
StatusRood = digitalRead(DraadRood);
StatusBlauw = digitalRead(DraadBlauw);
StatusOranje = digitalRead(DraadOranje);




if (StatusZwart == HIGH && StatusRood == HIGH && StatusGrijs == LOW && StatusBruin == LOW && StatusPaars == LOW && StatusBlauw == LOW && StatusOranje == LOW) {     
digitalWrite(A,HIGH);
digitalWrite(B,LOW);
digitalWrite(C,LOW);
digitalWrite(D,LOW);  
}   
if (StatusZwart == HIGH && StatusBlauw == HIGH && StatusRood == LOW && StatusGrijs == LOW && StatusBruin == LOW && StatusPaars == LOW && StatusOranje == LOW) {     
digitalWrite(A,LOW);
digitalWrite(B,HIGH);
digitalWrite(C,LOW);
digitalWrite(D,LOW);  

if (StatusZwart == HIGH && StatusOranje == HIGH && StatusRood == LOW && StatusGrijs == LOW && StatusBruin == LOW && StatusPaars == LOW && StatusBlauw == LOW) {     
digitalWrite(A,HIGH);
digitalWrite(B,HIGH);
digitalWrite(C,LOW);
digitalWrite(D,LOW);  

if (StatusGrijs == HIGH && StatusRood == HIGH && StatusZwart == LOW && StatusBruin == LOW && StatusPaars == LOW && StatusBlauw == LOW && StatusOranje == LOW) {     
digitalWrite(A,LOW);
digitalWrite(B,LOW);
digitalWrite(C,HIGH);
digitalWrite(D,LOW);  

if (StatusGrijs == HIGH && StatusBlauw == HIGH && StatusZwart == LOW && StatusBruin == LOW && StatusPaars == LOW && StatusRood == LOW && StatusOranje == LOW) {     
digitalWrite(A,HIGH);
digitalWrite(B,LOW);
digitalWrite(C,HIGH);
digitalWrite(D,LOW);  

if (StatusGrijs == HIGH && StatusOranje == HIGH && StatusZwart == LOW && StatusBruin == LOW && StatusPaars == LOW && StatusBlauw == LOW && StatusRood == LOW) {     
digitalWrite(A,LOW);
digitalWrite(B,HIGH);
digitalWrite(C,HIGH);
digitalWrite(D,LOW);  

if (StatusBruin == HIGH && StatusRood == HIGH && StatusZwart == LOW && StatusGrijs == LOW && StatusPaars == LOW && StatusBlauw == LOW && StatusOranje == LOW) {     
digitalWrite(A,HIGH);
digitalWrite(B,HIGH);
digitalWrite(C,HIGH);
digitalWrite(D,LOW);  

if (StatusBruin == HIGH && StatusBlauw == HIGH && StatusZwart == LOW && StatusGrijs == LOW && StatusPaars == LOW && StatusRood == LOW && StatusOranje == LOW) {     
digitalWrite(A,LOW);
digitalWrite(B,LOW);
digitalWrite(C,LOW);
digitalWrite(D,HIGH);  

if (StatusBruin == HIGH && StatusOranje == HIGH && StatusZwart == LOW && StatusGrijs == LOW && StatusPaars == LOW && StatusBlauw == LOW && StatusRood == LOW) {     
digitalWrite(A,HIGH);
digitalWrite(B,LOW);
digitalWrite(C,LOW);
digitalWrite(D,HIGH);  

if (StatusPaars == HIGH && StatusRood == HIGH && StatusZwart == LOW && StatusBruin == LOW && StatusGrijs == LOW && StatusBlauw == LOW && StatusOranje == LOW) {     
digitalWrite(A,LOW);
digitalWrite(B,HIGH);
digitalWrite(C,LOW);
digitalWrite(D,HIGH);  

if (StatusPaars == HIGH && StatusBlauw == HIGH && StatusZwart == LOW && StatusBruin == LOW && StatusGrijs == LOW && StatusRood == LOW && StatusOranje == LOW) {     
digitalWrite(A,LOW);
digitalWrite(B,LOW);
digitalWrite(C,LOW);
digitalWrite(D,LOW);  

if (StatusPaars == HIGH && StatusOranje == HIGH && StatusZwart == LOW && StatusBruin == LOW && StatusGrijs == LOW && StatusBlauw == LOW && StatusRood == LOW) {     
digitalWrite(A,HIGH);
digitalWrite(B,HIGH);
digitalWrite(C,LOW);
digitalWrite(D,HIGH);  
}
if (StatusZwart == LOW && StatusOranje == LOW && StatusRood == LOW && StatusGrijs == LOW && StatusBruin == LOW && StatusPaars == LOW && StatusBlauw == LOW) {     
digitalWrite(A,HIGH);
digitalWrite(B,HIGH);
digitalWrite(C,HIGH);
digitalWrite(D,HIGH);  

}


En uiteindelijk ziet het er dan zo uit, wanneer er niets ingedrukt wordt is het display uit. Zo kun je ook zien dat er een ´0´ ingedrukt wordt.