Re: Matchur för fotboll
Postat: 21 februari 2015, 21:27:06
Tänkte jag skulle kika på att snygga till mappningen av tecken, men först skulle jag "bara" ha alla byggstenar klara.
Och nästa grej var att fixa en liten panel med 5 knappar.
Lödde ihop en med 5 knappar jag lött loss från några paneler man samlat på sig. Vanliga återfjädrande ytmonterade.
Alla fick en gemensam jord, så när man trycker jordas ingången.
I arduino kan man definiera en ingång som INPUT_PULLUP vilket aktiverar en intern pullup.
Men detta hjälper ju inte kontaktstuds ska jag snart inse..
Jag läste lite och fann en interupt-rutin som verkar fiffig, så den använder jag.
Men det beter sig allt annat än snyggt, och jag inte se annat än att det beror på kontaktstuds.
Programmet i all sin enkelhet ska ändra status på en variabel. Men det är liksom svårt att får det att ta konsekvent. Så kontaktstuds är min gissning nu.
Kikat lite på filtrering i kod, ska testa lite och se om det är gångbart.
Bjussar på koden som jag kör med när jag testar knappar:
Och nästa grej var att fixa en liten panel med 5 knappar.
Lödde ihop en med 5 knappar jag lött loss från några paneler man samlat på sig. Vanliga återfjädrande ytmonterade.
Alla fick en gemensam jord, så när man trycker jordas ingången.
I arduino kan man definiera en ingång som INPUT_PULLUP vilket aktiverar en intern pullup.
Men detta hjälper ju inte kontaktstuds ska jag snart inse..
Jag läste lite och fann en interupt-rutin som verkar fiffig, så den använder jag.
Men det beter sig allt annat än snyggt, och jag inte se annat än att det beror på kontaktstuds.
Programmet i all sin enkelhet ska ändra status på en variabel. Men det är liksom svårt att får det att ta konsekvent. Så kontaktstuds är min gissning nu.
Kikat lite på filtrering i kod, ska testa lite och se om det är gångbart.
Bjussar på koden som jag kör med när jag testar knappar:
Kod: Markera allt
int pinBTN1 = 3;
int pinBTN2 = 18;
int pinBTN3 = 19;
int pinBTN4 = 20;
int pinBTN5 = 21;
int pinBCD11 = 53;
int pinBCD12 = 51;
int pinBCD14 = 49;
int pinBCD18 = 47;
int BCDsum = 0;
volatile int StartFromZero = LOW;
volatile int StartFromSet = LOW;
volatile int Pause = LOW;
volatile int StopAndZero = LOW;
volatile int PointCountActive = LOW;
void setup()
{
pinMode(pinBTN1, INPUT_PULLUP);
pinMode(pinBTN2, INPUT_PULLUP);
pinMode(pinBTN3, INPUT_PULLUP);
pinMode(pinBTN4, INPUT_PULLUP);
pinMode(pinBTN5, INPUT_PULLUP);
pinMode(pinBCD11, INPUT_PULLUP);
pinMode(pinBCD12, INPUT_PULLUP);
pinMode(pinBCD14, INPUT_PULLUP);
pinMode(pinBCD18, INPUT_PULLUP);
attachInterrupt(1, intrptBTN1, FALLING);
attachInterrupt(5, intrptBTN2, FALLING);
attachInterrupt(4, intrptBTN3, FALLING);
attachInterrupt(3, intrptBTN4, FALLING);
attachInterrupt(2, intrptBTN5, FALLING);
Serial.begin(9600);
}
void loop()
{
BCDsum = 0;
if (digitalRead(pinBCD11) == LOW) BCDsum = BCDsum + 1;
if (digitalRead(pinBCD12) == LOW) BCDsum = BCDsum + 2;
if (digitalRead(pinBCD14) == LOW) BCDsum = BCDsum + 4;
if (digitalRead(pinBCD18) == LOW) BCDsum = BCDsum + 8;
Serial.println(BCDsum);
Serial.println(StartFromZero);
Serial.println(StartFromSet);
Serial.println(Pause);
Serial.println(StopAndZero);
Serial.println(PointCountActive);
Serial.println("---------------");
delay(2000);
}
void intrptBTN1() {
StartFromZero = !StartFromZero;
}
void intrptBTN2() {
StartFromSet = !StartFromSet;
}
void intrptBTN3() {
Pause = !Pause;
}
void intrptBTN4() {
StopAndZero = !StopAndZero;
}
void intrptBTN5() {
PointCountActive = !PointCountActive;
}