Hallo, mein Vorhaben ist eine Garage für den Saugroboter unter dem Küchenschrank.
Bin natürlich NEU in der Arduino Sache, obwohl das mit so einer kleinen Wetterstation zu lösen war.
Diese Garage soll mittels Servo geöffnet / geschlossen werden.
Der Servo soll durch einen Druckschalter (Taster) ausgelöst werden, wenn der Saugroboter in die Ladestation gefahren ist löst dieser dann den Taster aus.
Also so zu sagen das bei z.B. bei geschlossen Taster der Servo auf sagen wir mal auf 20° (Tor zu) stellt und bei geöffneten Taster dann auf 90° (Tor auf) stellt
Nun habe ich mich 2 Tage hier durch das Forum gelesen und probiert, konnte mein Ziel näherkommen, fand dabei auch noch, dass ich das langsamer zufahren kann.
Leider Funktioniert das noch nicht so richtig wie ich mir das vorstelle.
Mein Problem ist, wenn ich den Wemos D1 mini mit Strom versorge dann stellt er IMMER auf 90° (Tor auf) ich muss also erst den Taster betätigen damit es funktioniert, egal in welchen Schaltzustand sich der Taster befindet.
Ich möchte bei geschlossen Taster 20° und bei geöffneten 90° und würde gern noch den die Verbindung trennen da der Servo in beiden Stellungen brummt.
Was gibt es noch für Lösungsansätze für mich?
Nutze den Servo AZDelivery MG995, ESP8266 WEMOS D1 mini Wlan und einen Taster mit Hebel
Der Servo ist mit GND / 5V / D1 verbunden der Taster mit D2 / GND
Grüße
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int pos ; // variable to store the current servo position
const byte button = 4; // The button will be on Pin 4
const byte POS_A = 14; // Ziel wenn Taster offen
const byte POS_B = 90; // Ziel wenn Taster zu
void setup()
{
myservo.attach(5); // attaches the servo on pin 5 to the servo
pinMode(button, INPUT_PULLUP); // button connects to GND ( LOW when pressed )
}
void loop()
{
if (digitalRead(button) == HIGH) {
if ( pos > POS_A) {
// in steps of 1°
myservo.write(--pos); // tell servo to go stepwise down to POS_A
delay(20);
}
}
if (digitalRead(button) == LOW) {
if ( pos < POS_B) {
// in steps of 1°
myservo.write(++pos); // tell servo to go stepwise up to POS_B
delay(5); // langsame Bewegung : 20 ° / Sekunde
}
}
}```