Ich möchte über den Seriellen Port Daten an ein Nextion Display senden und zwar wenn am Pin 5V anliegen soll er 1 mal etwas an das Display senden und wenn 5V NICHT anliegen soll er wieder 1 mal was anderes an das Display senden.
Hier dazu ein kleiner Versuchsaufbau im Vorfeld:
const int sig = 2;
bool flag = false;
void setup() {
Serial.begin(9600);
pinMode(sig, INPUT);
}
void loop() {
if (flag == false && digitalRead(sig) == HIGH) {
Serial.println("HIGH");
flag = true;
}
if (flag == true && digitalRead(sig) == LOW) {
Serial.println("LOW");
flag = false;
}
}
Wenn ich jetzt den Seriellen Monitor starte erhalte ich am Anfang gar nichts -> Soweit OK
Ich gebe an meinen Pin 2 5V und erhalte 1 mal "HIGH" -> PERFEKT
Ich nehme die 5V wieder weg und erhalte aber das hier:
LOW
HIGH
LOW
HIGH
LOW
HIGH
LOW
HIGH
LOW
HIGH
LOW
HIGH
LOW
HIGH
LOW
HIGH
LOW
HIGH
LOW
HIGH
LOW
HIGH
LOW
HIGH
LOW
HIGH
LOW
HIGH
LOW
HIGH
LOW
HIGH
LOW
HIGH
LOW
HIGH
LOW
HIGH
LOW
HIGH
LOW
HIGH
LOW
HIGH
LOW
HIGH
LOW
HIGH
LOW
Ich erhalte immer das selbe, immer dieselbe Anzahl von Zeilen und das jedes mal, gebe ich wieder 5V drauf erhalte ich richtigerweise wieder 1 mal "HIGH", gebe ich die 5V weg erhalte ich wieder das selbe wie oben.
Ich weis nicht welchen Fehler ich mache, daher bitte ich um hilfe.
Wie ist dein Input-Pin beschalten?
Ein Schaltplan wäre günstig.
s-fr:
3. Ich nehme die 5V wieder weg und erhalte aber das hier:
Was bedeutet "nehme ich die 5V wieder weg"?
Welche Spannung liegt an deinem Input-Pin, wenn "nichts" anliegt?
Möglicherweise hängt dein Input-Pin "in der Luft" und hat deshalb keine definierte Spannung. Eine definierte Spannung ist nötig um die gewünschten Ergebnisse zu erhalten.
Wahrscheinlich brauchst du einen Pullup- oder Pulldown-Widerstand.
Du kannst auch versuchen statt
pinMode(sig, INPUT);
das zu verwenden:
pinMode(sig, INPUT_PULLUP);
Die if-Abfragen musst du dann entsprechend anpassen.
Falls du einen Taster oder Schalter am Input-Pin hast, oder ein loses Kabel, bedenke, dass Phänomen "Prellen".
s-fr:
Ich weis nicht welchen Fehler ich mache, daher bitte ich um hilfe.
Ohne viel nachgedacht zu haben, tippe ich auf fehlenden Pullup-/Pulldown-Widerstand. Der Pin „sig“ bekommt statt „keine 5 Volt“ einfach „gar nichts“ (auch kein GND). Schalte einen Widerstand (ich benutze üblicherweise 4,7 oder 10 kOhm) zwischen „sig“ und GND.
gregorss:
Ohne viel nachgedacht zu haben, tippe ich auf fehlenden Pullup-/Pulldown-Widerstand. Der Pin „sig“ bekommt statt „keine 5 Volt“ einfach „gar nichts“ (auch kein GND). Schalte einen Widerstand (ich benutze üblicherweise 4,7 oder 10 kOhm) zwischen „sig“ und GND.
Gruß
Gregor
Genau das war der Fehler, bei einem Pinloch am Breadboard war kein Kontakt mehr zum Arduino, anderes Loch verwendet und es funktioniert wies soll!