Mein Ziel ist es ein Bewegungsmelder zu programmieren und ich bin gerade dabei den Taster mit einer LED und LCD screen zu programmieren.
Mein Problem ist, wenn ich auf den Taster drücke soll die LED Aus sein und der LCD Screen soll "Sensor deaktiv!" anzeigen. Wenn ich erneut drücke soll die LED An gehen und der Screen soll "Sensor aktiv" anzeigen. Es klappt mit meinem Sketch aktuell auch.
Das Problem aktuell ist wenn ich mein Sketch starte ist die LED an und es steht Sensor aktiv (bis dahin alles gut). Ich drücke auf den Taster die LED geht aus und es zeigt mir Sensor deaktiv an (weiterhin gut). Sobald ich erneut auf den Taster drücke geht die LED wieder an ABER es wird der Schriftzug Sensor aktiv!v! angezeigt. Das Board versucht voraussichtlich Sensor aktiv und Sensor deaktiv gleichzeitig anzuzeigen. Ich hoffe ihr könnt mir da weiterhelfen.
Das musst Du nicht.
Die Erklärung habe ich Dir geliefert.
Du kannst auch vor dem neu beschreiben des LCD ein lcd.clear() ausführen.
Fakt ist: Du musst irgendwie dafür sorgen, das die vorgehende Ausgabe gelöscht wird.
Anders als bei einigen 7Segmentanzeigen bleibt der übertragene Inhalt auf dem Display stehen, auch wenn nichts mehr übertragen wird, da die Anzeige einen internen Speicher hat.
Wenn also der Speicher nicht überschrieben bzw. gelöscht wird, bleibt der Rest der vorhergehenden Ausgabe stehen....
Ich hätte da noch eine kurze Frage. An welche Spannung muss ich mein Bewegungsmelder denn anschließen, wenn ich bereits 5V für den LCD Screen und 3,3V für das Breadboard verwende?
Die PIR-Moduke sind IMHO als 5V-Module ausgeführt.
Warum nimmst Du 3,3V ans Breadboard?
Was hast Du für einen Controller?
Ausser bei einem ESP ist mir nicht bekannt, das es einen grund gibt, mit 3.3 zu arbeiten.
Es wäre ggfls. sogar kontraproduktiv, wenn Du einen 5V Controller benutzt, aber die 3.3 V als Signalspannung.
Ziehe Dir eine Leitung 5V vom Controller auf das Breadboard und gehe vom BB auf den PIR und mit einem weiteren Kabel auf die Perepherie
Habe jetzt die Module erst mal angeschlossen und getestet ob es funktioniert. Hat alles geklappt.
Das Ziel ist, wenn der Sensor aktiv ist und eine Bewegung erkannt wird, soll die LED blinken und der LCD Screen soll "Person entdeckt" anzeigen. Wenn die Person den Fangkreis verlässt soll der Screen wieder Sensor aktiv anzeigen. Wenn der Sensor deaktiviert ist soll natürlich nichts von dem passieren.
Habe wieder Probleme mit dem LCD Screen der zeigt mir bei einer Bewegung "Person entdeckt" an danach wenn keine Bewegung mehr statt findet zeigt er mir " Sensor aktiv t" an . Ich weiß nicht wo genau ich lcd.clear() einbauen muss?
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int piezo=4;
int bewegung=2;
int LEDrot=6;
int taster=7;
int tasterstatus=0;
int tasterZaehler = 0;
int letzterStatus = 0;
int bewegungsstatus=0;
void setup()
{
lcd.init();
lcd.backlight();
pinMode(LEDrot, OUTPUT);
pinMode(taster, INPUT);
pinMode(piezo, OUTPUT);
pinMode(bewegung, INPUT);
}
void loop()
{
tasterstatus=digitalRead(taster);
bewegungsstatus=digitalRead(bewegung);
if(tasterstatus != letzterStatus)
{
if (tasterstatus == 1)
{
tasterZaehler++;
}
else
{
lcd.setCursor(0, 0);
lcd.print("Sensor deaktiv");
}
}
{
if (tasterZaehler % 2 == 0)
{
lcd.setCursor(0, 0);
lcd.print("Sensor aktiv ");
tasterZaehler = 0;
if (bewegungsstatus == HIGH)
{
digitalWrite(piezo, HIGH);
lcd.setCursor(0, 0);
lcd.print("Person entdeckt ");
digitalWrite(LEDrot, HIGH);
delay(200);
digitalWrite(LEDrot, LOW);
delay(200);
}
if (bewegungsstatus == LOW)
{
digitalWrite(piezo, LOW);
}
}
else
{
lcd.setCursor(0, 0);
lcd.print("Sensor deaktiv");
}
letzterStatus = tasterstatus;
}
}