INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
RGB und Druckknopf
17.06.2015, 11:00
Beitrag #1
RGB und Druckknopf
Hallo!
Ich habe einen mini "test"-code geschrieben:

const int Rot=22;
const int Gruen=23;
const int Blau=24;
const int Druckknopf= 40;
int OnOff = 0;
int counterNeu =0;

void setup() {
pinMode(Rot, OUTPUT);
pinMode(Gruen, OUTPUT);
pinMode(Blau, OUTPUT);

pinMode(Druckknopf, INPUT);
}

void loop() {
OnOff = digitalRead(Druckknopf);
if((OnOff==HIGH)){
counterNeu++;
}

switch(counterNeu){
case 1: digitalWrite(Rot,HIGH); digitalWrite(Gruen,LOW);digitalWrite(Blau,LOW);
break;
case 2: digitalWrite(Gruen, HIGH); digitalWrite(Rot,LOW);digitalWrite(Blau,LOW);
break;
case 3: digitalWrite(Blau, HIGH); digitalWrite(Rot,LOW);digitalWrite(Gruen,LOW);
break;
default: digitalWrite(Rot, LOW);digitalWrite(Gruen,LOW);digitalWrite(Blau,LOW);
}
counterNeu=counterNeu%4;
}



Was passieren sollte:
1. Druck auf Knopf-->LED leuchtet Rot
2. Druck auf Knopf--> LED leuchtet Grün
3. Druck auf Knopf--> LED leuchtet Blau
4. Druck auf Knopf--> LED aus

Leider funktioniert das ganze nicht richtig. Es wird bei Druck die Farbe gewechselt - oder auch nicht. Auch mit dem "Aus" auf den 4. Druck funktioniert nicht immer. Es macht also was es will.
Meine Frage: Liegt das am Code? Ich kann nicht sehen, woran es im Code mangeln könnte....


Danke für eure Hilfe.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.06.2015, 11:17
Beitrag #2
RE: RGB und Druckknopf
Du hast eine Art Zufallsgenerator gebastelt.
Solange du den Taster betätigst andern sich die Farben ganz schnell.
Mache mal nach der Tastenabfrage eine Pause von 200msec.
Ist primitiv aber an Anfang machen es Alle so.

Nicht jeder Neuling in einem Forum hat keine Ahnung über die Materie!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.06.2015, 11:39
Beitrag #3
RE: RGB und Druckknopf
...ausserdem ist der Knopf wharscheinlich gegen Vcc geschaltet ohne Pulldown-Widerstand. Richtig macht man es, indem man den Taster gegen GND schaltet und den Pin dann mit INPUT_PULLUP initialisiert.
Die Logik ist dann umgekehrt: LOW ist gedrueckt.

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.06.2015, 11:42 (Dieser Beitrag wurde zuletzt bearbeitet: 17.06.2015 11:50 von hello_world.)
Beitrag #4
RE: RGB und Druckknopf
(17.06.2015 11:17)fraju schrieb:  Du hast eine Art Zufallsgenerator gebastelt.
Solange du den Taster betätigst andern sich die Farben ganz schnell.
Mache mal nach der Tastenabfrage eine Pause von 200msec.
Ist primitiv aber an Anfang machen es Alle so.

Hei! Vielen Dank, jetzt macht es was es soll!

Könntest du noch kurz genauer auf die Aussagen eingehen?
[quote]
Solange du den Taster betätigst andern sich die Farben ganz schnell.
[\quote]
Wieso ändern sich die Farben ganz schnell, wenn gedrückt? Eigentlich geht doch dann der counter hoch und nur eine leuchtet?!?
Wie kommt es dazu dass die Farbe zufällig ist?!?

[quote]
Ist primitiv aber an Anfang machen es Alle so.
[\quote]
Wie bekomme ich das ganze dann etwas "professioneller"??

Liebe Grüße

Puh! So schnell so viele Antworten, danke!
Ich habe mal ein Foto angehängt, welches die Schaltung zeigt.

Scheinbar funktioniert auch die delay-Lösung noch nicht zuverlässig... Wie sähe denn ein anständiger code für diese Schaltung aus?!??!


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.06.2015, 14:02
Beitrag #5
RE: RGB und Druckknopf
(17.06.2015 11:42)hello_world schrieb:  Wieso ändern sich die Farben ganz schnell, wenn gedrückt? Eigentlich geht doch dann der counter hoch und nur eine leuchtet?!?
Naja, das Coding im loop() dauert nur ein paar Millisekunden (wenn ueberhaupt). Wenn Du einen Knopf drueckst, dann dauert das, auch wenn Du nur mal kurz drueckst, wahrscheinlich so ungefaehr 50 Millisekunden. D.h. das ganze wird ungefaehr 20 bis 50 mal durchlaufen. D.h. das Hochzaehlen findet 20 bis 50 mal statt. (Die Zahlen sind wild geschaetzt...)

Zitat:Wie kommt es dazu dass die Farbe zufällig ist?!?
...weil Du nicht immer genau gleich lange auf die Taste drueckst.

Zitat:Wie bekomme ich das ganze dann etwas "professioneller"??
Als erstes mal musst Du eine Flankenerkennung einbauen. D.h. Du merkst Dir in einer globalen Variable den Zustand der Taste. Nur wenn der Zustand sich von "nicht gedrueckt" (LOW) auf "gedrueckt" (HIGH) aendert, dann tust Du was.
Der naechste Schritt waere dann Entprellen (Debouncing), aber das ist jetzt wahrscheinlich zu viel.

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste