Hallo zusammen
Ich habe folgendes vor: Ich möchte für die Schule eine Art mini-SmartHome bauen und wollte dabei die Vorhänge/Türen schliessen lassen, wenn es draussen dunkel wird. Mein Problem dabei ist es, dass die Befehle für den Motor nicht ständig ausgeführt werden sollten (eine Türe kann ja nicht noch weiter geschlossen werden), jedoch sollte trotzdem immer die Helligkeit gemessen werden. Deshalb habe ich den untenstehenden Code geschrieben, jedoch funktioniert er nicht (der Motor bewegt sich nicht). Ich weiss, mit einem Servo-Motor wäre das ganze wahrscheinlich etwas einfacher, jedoch dürfen wir nur mit dem gegebenen Material arbeiten.
Kann mir jemand helfen?
hey (gleich vorweg ich nutze nepo nicht oft, daher verzeih mir wenn ich flasch liege)
evtl. müsste nach „warte 2000 ms“ noch ein Block „Motor Port A an tempo % 0“
oder „stoppe motor A“
Hallo matts,
der Programmablauf macht folgendes: Es wird in der ersten Schleife genau einmal der Motor mit dem Wert -50 bewegt, da Stopp = 0 und TagNacht = 0 ist. Dann wird nach 2 Sekunden die Variable Stopp auf 1 gesetzt und die erste Schleife beendet.
Nun läuft das Programm in der zweiten Schleife, die eine Endlosschleife ist, da es keine Abbruchbedingung gibt.
Das Programm kann man wesentlich vereinfachen, versuche es mal damit:
Bitte die Info zum Anschluss des Motors gemäß online Hilfe beachten, es sind vermutlich die 6 Anschlusspins der Motorsteuerung unter der RGB LED gemeint. Und bitte beachten, dass die Spannungsversorgung für den Motor richtig angeschlossen ist.
Sorry es muss in der Abfrage heissen „wenn TagNacht <= 80“, da hab ich nicht aufgepasst
Damit jetzt nicht dauernd der Motor angesteuert wird, könntest du den neuen Helligkeitswert mit dem alten Wert (in einer zusätzlichen Variable) vergleichen und nur bei einem unterschiedlichen Wert die Ansteuerung machen.
viel Erfolg!
Hubert
Vielen Dank für die Vorschläge, ich habe jetzt folgendes versucht. Die Lage soll den geöffneten/geschlossenen Zustand aufzeigen. Um zu sehen, ob die Abfrage funktioniert, habe ich noch den Text hinzugefügt. Nun habe ich folgendes Problem (der Motor dreht nur in eine Richtung, aber zu dem komme ich später): Der Text „Tag“ erscheint und nach zwei Sekunden kommt gleich „Nacht“, also scheint irgendetwas mit den Entscheindungen nicht zu stimmen. Ich habe nun diese beiden Varianten ausprobiert.
Hallo matts,
die beiden Programme sind von der Ablauflogik her identisch. TagNacht ist größer oder gleich 80 und Lage ist 0: Der Motor wird mit 50% angesteuert, danach zwei Sekunden Pause und Ausgabe „Tag“. Wenn danach die Ausgabe „Nacht“ kommt, dann muss sich der der Wert des Lichtsensors unter 80 % verändert haben, d.h. ein weiterer Schleifendurchlauf ist erfolgt.
Ich würde das Programm stufenweise entwickeln. Im ersten Schritt nur den Lichtsensor abfragen und die Motorsteuerung erst mal deaktivieren. Die Pausenwerte verkürzen auf 100 ms. Damit die Textausgabe schneller erfolgt, einfach nur einen einzigen Buchstaben „T“ oder „N“ ausgeben und anstatt „Zeige Text“ besser „Zeige Buchstabe“ wählen, dann scrollt das Display nicht.
Nun kannst du den Lichtsensor durch Abdecken mit der Hand ansteuern und die Reaktion des Programms sofort beobachten. Im nächsten Schritt die Pausenwerte höher setzen und dann erst die Motorsteuerung wieder aktivieren.
Der Motor sollte auch jeweils nach der Pause wieder gestoppt werden. Ob er sich bei negativen Werten auch rückwärts dreht kann ich nicht sagen, da ich das selbst so noch nicht probiert habe. Ich würde die Aufgabe auch mit Servomotoren machen, das funktoniert in jedem Fall. SG90 Miniservos gibt es z.B. schon für unter 3,- € pro Stück.