Hallo iedereen,
ik heb een probleempje met mijn keypad.
ik vermoedt dat het probleem zich in mijn code bevindt en niet aan mijn keypad zelf.
Ik zal kort even toelichten wat de bedoeling is van project om een betere achtergrond te creeren
Voor het project heb ik een led display gemaakt in de vorm van een gezicht.
Door middel van het keypad zou geswitched kunnen worden tussen 3 gezichten (blij , neutraal , droevig).
Mijn keypad bestaat uit drie toetsen.
Het is een zelfgemaakt keypad gemaakt van aluminium folie en papier.
Aan mijn keypad zijn 4 draadjes verbonden.
1 draad is verbonden met mijn arduino poort 4 als output en op high gezet.
De andere 3 draadjes zijn verbonden met A0,A1 en A2 en als input gezet.
Mijn theorie hier achter was dat wanneer er gedrukt werd op de knop de aluminium folie van poort 4 het folie van bv. poort A0 aanraakt ik via een digital read paart A0 als high zo kunnen uitlezen en zo dan via een while loop de leds die bij een blij gezichtje horen zo kunnen aanzetten.
Dit is echter niet gelukt wanneer ik mijin code compileer blijven mijn ledjes loopen tussen een neutraal gezichte en een droevig gezichtje zonder dat ik een toets van mijn keypad heb ingedrukt.
Ik heb al verschillende keren proberen te zoeken naar een antwoord voor mijn probleem maar zonder succes.
Ik post mijn volledige code hier omdat ik niet weet waar in mijn code ik een fout heb begaan en ik ook geen errors krijg die me in de juiste richting kunnen helpen. Ik hoop dat een paar frisse ogen kunnen spotten wat ik niet heb kunnen spotten tot nu toe.
Alvast hartelijk bedankt!
// leds parts of face
#define winkL 13//geel
#define eyeL 12//wit
#define winkR 11//paars
#define eyeR 10//grijs
#define face 9//rood
#define sadM 8//groen
#define toungM 7//oranje
#define neutralM 6// blauw
#define smileM 5 //paars2
//keys ->> input when pressed it touches de constant high one
#define smileK A0
#define neutralK A1
#define sadK A2
//constant high one
#define rowOutput 4
//counts --> to keep track how many times a face is pressed
int smileCount= 0;
int neutralCount= 0;
int sadCount= 0;
//var
int smileVal=0;
int neutralVal=0;
int sadVal=0;
void setup() {
// put your setup code here, to run once:
//leds
pinMode(winkL, OUTPUT);
pinMode(eyeL, OUTPUT);
pinMode(winkR, OUTPUT);
pinMode(eyeR, OUTPUT);
pinMode(face, OUTPUT);
pinMode(sadM, OUTPUT);
pinMode(toungM, OUTPUT);
pinMode(neutralM,OUTPUT);
pinMode(smileM, OUTPUT);
//Constant
pinMode(rowOutput, OUTPUT);
//keys
pinMode(smileK, INPUT);
pinMode(neutralK, INPUT);
pinMode(sadK, INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(rowOutput, 1); //->attachemnet to keypad that is always high
// reading if input becomes high == "being pressed"
smileVal=digitalRead(smileK);
neutralVal=digitalRead(neutralK);
sadVal=digitalRead(sadK);
//show happy face when pressed
while (smileVal== 1)
{
digitalWrite(face, smileVal);
digitalWrite(eyeL, smileVal);
digitalWrite(eyeR, smileVal);
digitalWrite(smileM, smileVal);
smileCount++;
delay(1000);
smileVal=0;
reset();
}
//show neutral face when pressed
while (neutralVal == 1)
{
digitalWrite(face, neutralVal);
digitalWrite(eyeL, neutralVal);
digitalWrite(eyeR, neutralVal);
digitalWrite(neutralM,neutralVal);
neutralCount++;
delay(1000);
neutralVal=0;
reset();
}
//show sad face when pressed
while (sadVal == 1)
{
digitalWrite(face, sadVal);
digitalWrite(eyeL, sadVal);
digitalWrite(eyeR, sadVal);
digitalWrite(sadM, sadVal);
sadCount++;
delay(1000);
sadVal=0;
reset();
}
}
//to reset de leds to low
void reset(){
digitalWrite(winkL, 0);
digitalWrite(eyeL, 0);
digitalWrite(winkR, 0);
digitalWrite(eyeR, 0);
digitalWrite(face, 0);
digitalWrite(sadM, 0);
digitalWrite(toungM, 0);
digitalWrite(neutralM, 0);
digitalWrite(smileM, 0);
}