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
Reaktionstest
22.02.2019, 22:44 (Dieser Beitrag wurde zuletzt bearbeitet: 22.02.2019 23:10 von Joseph_hk31.)
Beitrag #1
Reaktionstest
Hallo, ich bin recht neu und versuche einen Reaktionstest zu programmieren.
Mein Problem ist das ich eine Frage auf einem Bildschirm stelle wie z.B. ist 1+8=3?
und man ja oder nein bei Tastern drücken kann und ich gar keinen plan habe wie ich mache das wenn man das eine drückt es sozusagen falsch ist und wenn ich das andere drücke es richtig ist (mit roter und grüner Lampe). Ich habe es mit while schleifen ausprobiert aber dann musste man erst noch den anderen Taster drücken damit das Programm weiter läuft.
Vielen Dank für eure Hilfe!

Code:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C Lcd(0x27,16,1);

long x,Z1,Z2;                    
int i,e,o;

void setup() {
  


pinMode(7,INPUT_PULLUP);          
pinMode(6,INPUT_PULLUP);          
pinMode(5,INPUT_PULLUP);          
pinMode(8,OUTPUT);              
pinMode(9,OUTPUT);                

randomSeed(analogRead(A1));
Serial.begin(9600);
Lcd.begin();

}

void loop() {
  i=digitalRead(7);              
  e=digitalRead(6);              
  o=digitalRead(5);              
  Lcd.clear();                    
  Lcd.setCursor(2,0);            
  x=random(100-3000);            
  delay(x);
  Lcd.print("Ist 2+2=3?");      
  Z1=millis();                    

  if(digitalRead(i)==0);{
    digitalWrite(9,HIGH);
  }
  if(digitalRead(e)==0);{
    digitalWrite(8,HIGH);
  }
  Z2=millis();
  Lcd.clear();
  Lcd.setCursor(2,0);
  Lcd.print("Zeit: ");
  Lcd.print(Z2-Z1);
  delay(5000);
  
  

}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.02.2019, 23:02
Beitrag #2
RE: Reaktionstest
Stelle Deinen Sketch bitte in Codetags.
Wie das geht, steht hier.
Das kannst Du auch noch nachträglich ändern.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.02.2019, 10:04
Beitrag #3
RE: Reaktionstest
(22.02.2019 22:44)Joseph_hk31 schrieb:  if(digitalRead(i)==0); Das Semikolon beendet die Abfrage{
digitalWrite(9,HIGH);
}

Reaktionstest?
Zitat:delay(5000);
Hier kann 5 Sekunden auf gar nichts reagiert werden.

Gruß Fips

Gruß Fips

Meine Esp8266 & ESP32 Projekte
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.02.2019, 10:24
Beitrag #4
RE: Reaktionstest
Zitat:Reaktionstest?
delay(5000);
Hier kann 5 Sekunden auf gar nichts reagiert werden.

Das habe ich gemacht, da es in der loop steht und nach 5 Sekunden das Programm dann wiederholt wird und nicht direkt nachdem die Zeit auf den Bildschirm geschrieben
wurde.
Und wenn ich das Semikolon wegmache wird es trotzdem übersprungen, gibt es einen befehl der erfüllt werden muss damit das Programm weiter läuft? Huh

Gruß Joseph
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.02.2019, 10:32
Beitrag #5
RE: Reaktionstest
Weil Du Sachen programmiert hast, die so nicht funktionieren können. Z.B.:
Code:
i=digitalRead(7);      
...
// Dein Code
if(digitalRead(i)==0)  <--- Das liest von Pin 0 oder 1
// richtig
if (i == 0) {
  mache irgendwas
}
Du solltest die Pins sinnvoll bezeichnen, ebenso die Variablen. Bei denen solltest Du Dir Gedanken um den Typ machen, z.B.
Code:
const byte pinTaster1 = 7;
...
pinMode(pinTaster1,INPUT_PULLUP);
...
byte input1 = digitalRead(pinTaster1);

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.02.2019, 11:01
Beitrag #6
RE: Reaktionstest
das mit
Code:
if (i == 0)
funktioniert, jedoch nur wenn ich es gedrückt halte während das Programm abläuft, ich suche aber eigentlich nach etwas das wartet bis ich einen der beiden Taster drücke und es danach weitergeht.

Code:
const byte TasterRichtig = 7, TasterFalsch = 6;

void setup() {
  


pinMode(TasterRichtig,INPUT_PULLUP);          
pinMode(TasterFalsch,INPUT_PULLUP);

Muss man was mit pinTaster schreiben oder kann man den einfach irgendwelche Namen geben?

Gruß Joseph
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.02.2019, 11:05
Beitrag #7
RE: Reaktionstest
(23.02.2019 11:01)Joseph_hk31 schrieb:  das mit
Code:
if (i == 0)
funktioniert, jedoch nur wenn ich es gedrückt halte während das Programm abläuft, ich suche aber eigentlich nach etwas das wartet bis ich einen der beiden Taster drücke und es danach weitergeht.

Siehe Beitrag #3

Gruß Fips

Gruß Fips

Meine Esp8266 & ESP32 Projekte
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.02.2019, 11:12 (Dieser Beitrag wurde zuletzt bearbeitet: 23.02.2019 11:14 von Tommy56.)
Beitrag #8
RE: Reaktionstest
(23.02.2019 11:01)Joseph_hk31 schrieb:  das mit
Code:
if (i == 0)
funktioniert, jedoch nur wenn ich es gedrückt halte während das Programm abläuft, ich suche aber eigentlich nach etwas das wartet bis ich einen der beiden Taster drücke und es danach weitergeht.
Das reagiert, wenn der Taster gedrückt wurde. Was Du danach machst, ist Dir überlassen. Du könntest z.B. eine Statusvariable setzen.

Da man Deinen Variablen-/Pinnamen nicht ansehen kann, wofür was da ist, kann man Dir da auch keinen sinnvollen Rat geben.
Evtl. solltest Du erst mal Deinen Sketch mit sinnvollen Namen und Kommentaren, was erreicht werden soll, überarbeiten.

Wie Du Pins und Variablen bezeichnest, ist technisch egal. Es sollte sinnvoll sein.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
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