Das Programm soll auf Tasterdruck starten, aber ich bin einem Fehler begegnet den ich nicht finde, bei Tasterdruck passiert nämlich nichts.(Bin neu)

int LED1=1;
int LED2=2;
int LED3=3;
int LED4=4;
int LED5=5;
int LED6=6;
int Taster=7;
int x;
int Gedrueckt=0;

void setup(){
pinMode(Taster, INPUT_PULLUP);
Serial.begin(9600); //beginn der seriellen schnittstelle
randomSeed(analogRead(A1));
}
void loop(){
int t=digitalRead(Taster);

if(t==Gedrueckt){ //Wenn Taster gedrückt
x=random(1,7); //Zufällige Zahl zwischen 1 und 6
Serial.println(x); //Schreibe gewählte Zahl auf den Seriellen Monitor
}

}

Bitte markiere (Bleistiftsymbol) deinen Code und drücke die Schaltfläche </>. Dann wird derSketch lesbar dargestellt.

Du musst dein Ergebnis vom Tastendruck in einer Variablen speichern und darauf abfragen.
Beispiele findest du auch in der IDE.

Anstatt:

lieber:

int t = digitalRead(Taster);
if (t == Gedrueckt){ //Wenn Taster gedrückt

Wie speichere ich das Ergebnis des Tasterdrucks als Variable?

byte LED1 = 1;
byte LED2 = 2;
byte LED3 = 3;
byte LED4 = 4;
byte LED5 = 5;
byte LED6 = 6;
byte Taster = 7;
byte x;

void setup() {
  pinMode(Taster, INPUT_PULLUP);
  Serial.begin(9600); //beginn der seriellen schnittstelle
  randomSeed(analogRead(A1));
}
void loop() {
  if (!digitalRead(Taster)) { //Wenn Taster gedrückt
    x = random(1, 7); //Zufällige Zahl zwischen 1 und 6
    Serial.println(x); //Schreibe gewählte Zahl auf den Seriellen Monitor
  }
}

So, wie @jremington es beschrieben hat. Da es sich aber eh nur um einen Wert handelt, der nur 0 oder 1 sein kann, reicht auch eine Variable vom Typ "byte". Ein "int" Typ ist nicht notwendig (Speicherplatzverschwendung).

Weil der Taster-Pin mit INPUT_PULLUP initialisiert wird, gilt der Taster als gedrückt, wenn digitalRead(Taster) der Wert 0 zurück gibt. 1 ist dementsprechend "nicht gedrückt".

Ich hatte doch geschrieben, sieh dir die Beispiele an.
Da steht alles drin, zum nachlesen.

Zudem solltest du deinen Sketch lesbar gestalten. Warum machst du das nicht.

Weil ich nicht weiß wie ich lesbarer machen könnte :sweat_smile:
In der Schule wurde es uns so beigebracht.

Das habe ich dir doch in Post #2 geschrieben.

Noch eine kleine Hilfestellung ... Das erwartete Ergebnis sieht so aus:

int LED1 = 1;
int LED2 = 2;
int LED3 = 3;
int LED4 = 4;
int LED5 = 5;
int LED6 = 6;
int Taster = 7;
int x;
int Gedrueckt = 0;

void setup() {
  pinMode(Taster, INPUT_PULLUP);
  Serial.begin(9600); //beginn der seriellen schnittstelle
  randomSeed(analogRead(A1));
}
void loop() {
  int t = digitalRead(Taster);

  if (t == Gedrueckt) { //Wenn Taster gedrückt
    x = random(1, 7); //Zufällige Zahl zwischen 1 und 6
    Serial.println(x); //Schreibe gewählte Zahl auf den Seriellen Monitor
  }
}

Dazu:

  • Den Code in der Arduino IDE mit Strg-T formatieren (sorgt für korrekte Einrückungen -> bessere Lesbarkeit!).
  • Den Code danach in der IDE mit "Für Forum kopieren" in die Zwischenablage und von dort in den Post kopieren

Alternativ zum letzten Punkt kann man im Post-Editor die Taste
image
betätigen und dann den Code zwischen die beiden Tags kopieren:

image

Wo findet man die Code-Tag-Taste?

Sechster Eintrag von links in der Kopfleiste des Post-Editors:

image

Dort gibt es noch weitere interessante Möglichkeiten, einfach mal durchprobieren ...

Ich nehme mal an Du hast einen Arduino UNO.

Auf Pin 1 liegt die serielle Schnittstelle.
Du verwendest dieses Pin zwar im Moment nicht aber wahrscheinlich später.

Wähle ein anderen Pin für die LED.

Grüße Uwe

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.