Ich habe vrsucht folgendes zu programmieren, ging aber nicht. Könnt ihr mir den Code (arduino) schreiben?

... komplette Frage anzeigen

3 Antworten

#define Tasterpin 3
#define LEDpin 2

boolean gedrueckt = false;

void setup() {
pinMode(LEDpin,OUTPUT);
pinMode(Tasterpin,INPUT_PULLUP);
pinMode(LEDpin,LOW);
}

void loop() {
if (digitalRead(Tasterpin) == LOW)
{
delay(100);
gedrueckt = !gedrueckt;
digitalWrite(LEDpin, gedrueckt);
}
}

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Firas2
12.10.2016, 19:59

was bedeutet " gedückt = !gedrückt; "

0

Ich verstehe nicht ganz, was Du Dir bei dem Code denkst. Kannst Du das auch noch dazuschreiben?

Du guckst, ob der Knopf gedrückt ist, und wenn ja, dann wartest Du erstmal ne Runde. Da hört bei mir das Verständnis schon auf.

Und so zeug. Eigentlich komplett uneinsichtig, weshalb Du das machst.

Bei mir sähe das so aus:

Setup:

Leuchtidode an

Variable mit Leuchtioden-Zustand auf true

Loop:

Wenn Knopf gedrückt, dann BEGIN

* und LED-Zustand == an, dann wird der LED-Zustand aus gesetzt.

* und LED-Zustand == aus, dann wird der LEDD-Zustand an gesetzt

setze den Pin entsprechend vom LED-Zustand

END

Wenn Knopf nicht gedrückt, dann mach gar nichts.

Übersetz das mal in Deine Umgebung. Sollte laufen.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Firas2
12.10.2016, 19:00

void setup() { 
pinMode(2,OUTPUT);     LED bereit
pinMode(3,INPUT_PULLUP); taster bereit
pinMode(2,LOW); LED soll nicht an am anfang sein

void loop() { 
delay(10);  eig. unwichtig
if(digitalRead(3)==HIGH){   wenn taster gedrückt
delay(50); *
if(digitalRead(3)==HIGH){ * überprüfen, ob er immernoch gedrückt ist
for(int i = 0; i>1;){  geht aus der schleife, erst wenn i>als 1
delay(50);   eig. unwichtig
if(digitalRead(3)==LOW){   wenn taster losgelassen wird
digitalWrite(2,HIGH);           dann LED an
i = 2;   und es gibt die möglichkeit aus der Schleife herauszukommen
for(int b = 0; b>1;){    wenn b>als 1 dann kommt er aus einer Neuen Schleife raus
if (digitalRead(3)==HIGH){  wenn Taster gedrückt wird, dann LED an
delay(50);               **
if (digitalRead(3)==HIGH){  **überprüfen, ob Taster gedrückt wurde
for(int c = 0; c>1;){                neue schleife
if (digitalRead(3)==LOW){    wenn taster losgelassen wird, dann
digitalWrite(2,LOW);              LED aus
b = 2;     die zwei schleifen können beendet werden
c = 2; 









}

0

tu doch mal deinen code nach pastebin.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Firas2
12.10.2016, 18:32

hier mein code (eigentlich gibt es Leerzeichen hinter den Meißten...): 

void setup() {
pinMode(2,OUTPUT);
pinMode(3,INPUT_PULLUP);
pinMode(2,LOW);
}
void loop() {
delay(10);
if(digitalRead(3)==HIGH){
delay(50);
if(digitalRead(3)==HIGH){
for(int i = 0; i>1;){
delay(50);
if(digitalRead(3)==LOW){
digitalWrite(2,HIGH);
i = 2;
for(int b = 0; b>1;){
if (digitalRead(3)==HIGH){
delay(50);
if (digitalRead(3)==HIGH){
for(int c = 0; c>1;){
if (digitalRead(3)==LOW){
digitalWrite(2,LOW);
b = 2;
c = 2;
}
}
}
}
}
}
}
}
}
}

0