Hallo Community,
ich bitte euch um Hilfe bei meinem Projekt. Ich hoffe Ihr könnt mir helfen, sodass ich wieder auf den richtig Pfad komme.
Funktion vom Programm:
Ich bau meiner Freundin zum 30er einen Wecker der beim (Weckalarm) eine Music und einen liebes Spruch per Thermodrucker druckt.
Leider habe ich ein Problem, beim Programmieren.
Ich hoffe Ihr könnt mir dabei helfen.
Der Digitale Eingang "Wecker_Pin8", ist ein Schalter(Solange der Weckalarm ON ist ist dieser Wert vom Schalter=1). Wenn der Weckalarm auf ON ist, soll der Digitale Eingang "Wecker_Pin8" nur einem im Sketch gelesen werden, sodass der Drucker nur einen Text Druck und der DFPlayer nur ein kurzes Signal bekommt, ALSO in Kurzfassung wie ein Taster. Achtung der Digitale Eingang "Drucken_Pin9", ist bei der Analyse nicht zu beachten, dieser ist nur ein Taster für einen Manuelen Druckauftrag.
Verwendete Hardware:
Drucker-Thermodrucker
Steuerung-Arduino Uno
Audio Wiedergabe- DFPlayer Mini
Wecker
Ich bedanke mich schon im vorhinein, für euere Antworten.
Lg
Auch SoftwareSerial ist eine serielle Schnittstelle und kein Bus.
Da können keine 2 Geräte mit angesteuert werden.
Es muss dazu eine zweite Instanz erstellt werden, dann kann man diese so nacheinander (nicht gleichzeitig) nutzen.
Enables the selected SoftwareSerial object to listen. Only one SoftwareSerial object can listen at a time; data that arrives for other ports will be discarded. Any data already received is discarded during the call to listen() function (unless the given instance is already listening)
willkommen im Arduino-Forum.
Gut gemacht den Code als Code-Section zu posten.
Die Beschreibung der Funktionialität die du haben willst ist noch nicht so ganz eindeutig.
Am IO-pin 8 ist ein Schalter angeschlossen. Schalter im Sinne von in die eine Richtung betätigen und der Kontakt im Schalter ist geschlossen und bleibt auch geschlossen bis man in mit der Hand in die andere Richtung betätigt. Erst nach der Handbetätigung wird der Kontakt wieder geöffnet.
Im Unterschied zu was man einen Taster nennt. Kontakt ist nur so lange geschlossen wie man den Taster betätigt. So bald man den Taster loslässt wird der Kontakt über eine Feder geöffnet.
Was du jetzt haben möchtest ist, dass der Schalter wie ein Taster reagiert.
Tasterkontakt wird geschlossen und es soll trotzdem nur ein kurzer Steuerimpuls erzeugt werden.
Das ganze ist ein Wecker. Also muss da noch irgendwie die Uhrzeit rein oder ist es ein Kurzzeitwecker?
Oder willst du jeweils kurz vor dem Weckvorgang den Schalter manuell betätigen?
Vermutlich nicht.
Kurzen Impuls erzeugen macht man über eine extra Variable die zunächst einen Wert hat der sinngemäß "noch nicht geweckt" hat dann wird der Kurzimpuls erzeugt und direkt anschließend wird die Variable auf sinngemäß "wecken ist erfolgt" gesetzt.
Vorzugsweise als boolsche Variable
Name zum Beispiel "WeckTextGedruckt"
boolean WeckTextGedruckt = false;
Im Programm nach dem ersten ausdrucken
WeckTextGedruckt = true;
Aber irgendwie muss das wenn der nächste Wekczeitpunkt gekommen ist wieder auf
WeckTextGedruckt = false;
zurückgestetzt werden.
Und da solltest du mal die ganze Funktionialität in normalen Worten schreiben.