PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Code



Modellbauer
03.05.2015, 02:56
Habe ein kleines Problem beim Üben mit Arduino

Ich will das beim kontakt von 12 und dem 5 oder 3,3V ausgang der Blinkvorgang einer an 11 angeschlossenen LED startet.
Was habe ich hier falsch gemacht?
Ich kann den Fehler einfach nicht finden.



void setup(){
pinMode(11, OUTPUT);
pinMode(12, INPUT);

}

void loop(){

digitalRead(12);

if(12 == HIGH){

digitalWrite(11, HIGH);
delay(1000);
digitalWrite(11, LOW);
delay(200);

}else{

digitalWrite(11, LOW);

}
}

radbruch
03.05.2015, 07:03
Hallo

Müßte es nicht

if(digitalRead(12) == HIGH)

heißen?

http://starthardware.org/lektion-12-der-taster-und-if-abfrage

Gruß

Micha

redround
03.05.2015, 10:20
wie radbruch schon sagte, sind die beiden Zeilen

digitalRead(12);

if(12 == HIGH){

falsch.

Zudem kann das ganze so nur funktionieren, wenn du am Eingang auch einen Pulldown-Widerstand hast, der den Eingang auf LOW zieht, wenn eben keine Spannung anliegt. Deshalb wäre neben dem Code auch ein Schaltplan (und bitte kein Fritzing Gekritzel) notwendig, da weitere Probleme auch auf der Hardware Seite sein können. Üblicherweise macht man das ganze übrigens anders herum. Man legt die Eingänge über PullUp Widerstände (dafür hat der Prozessor extra interne PullUps verbaut ... sieht auch Doku zu pinMode() ) dauerhaft auf HIGH. Um dann zum Beispiel einen Taster oder sowas auszuwerten, wird der auf der einen Seite mit dem Eingangs-Pin und auf der anderen Seite mit GND verbunden. Beim Betätigen des Schalters wird der Eingang dann LOW und man kann darauf reagieren. Diese Variante nennt sich deshalb Active-LOW. Das was Du machst ist Active-HIGH (Erkennen einer positiven Spannung am Eingang). Das macht man eigentlich nur im Ausnahmefall.

Modellbauer
03.05.2015, 23:46
Habe das gerade entsprechend umgebaut und es funktioniert wie geplant.
Vielen dank für die Hilfe!