Hallo ich beschäftige mich seit kurzem mit dem Arduino.
Also auf deutsch ich hab noch nicht viel Ahnung.
Ich habe mir ein Starterset min einem Nano bestellten und schon einige Sachen erfolgreich hin bekommen nun aber bin ich an meine Grenzen geraten.
Ich will eine Schaltung mit einem Schrittmotor einem Feuchtigkeitssensor und einem Taster bauen.
Diese Wie folgt funktionieren soll.
Wenn der Feuchtigkeitssensor anschlägt soll der Schrittmotor ein paar Steps in eine Richtung drehen und dann Stehen bleiben und wenn der Taster gedrückt wird soll der Motor die gleich Anzahl an Steps wieder zurück drehen und Stehen bleiben.
Hab leider keine Ahnung wie ich das Programmieren soll.
TanjaGoldrain:
... Hab leider keine Ahnung wie ich das Programmieren soll. ...
Meine Erfahrung ist, dass ich Algorithmen viel leichter verstehen und umsetzen kann, wenn ich mir die gewünschten Vorgänge als Programmablaufdiagramm male. Für derlei Zeug gibt es auch gute und einfache Werkzeuge (Libreoffice Draw würde ich zuerst probieren).
Ganz grob gesehen so ungefär. Aber da musst du noch Feinheiten anpassen. Wenn es dann funktioniert noch die Delay mit Millis ersetzen. (Beispiel BlinkWithoutDelay)
#include <Stepper.h>
int SPMU = 32;
int messwert=0;
int taster = 3;
int LED=6;
Stepper myStepper(SPMU, 2,3,4,5);
void setup(){
Serial.begin(9600);
pinMode (6,OUTPUT);
pinMode (3,INPUT);
myStepper.setSpeed(500);
}
void loop() {
messwert=analogRead(A4);
Serial.print("Feuchtigkeits-Messwert:");
Serial.println(messwert);
if (messwert < 200 ){
myStepper.step(2048);
digitalWrite(LED, LOW);
}
if (taster == HIGH ){
myStepper.step(-2048);
}
delay(5000);
}
#include <Stepper.h>
int SPMU = 32;
int messwert=0;
int taster=11;
Stepper myStepper(SPMU, 2,3,4,5);
void setup(){
Serial.begin(9600);
pinMode (11,INPUT);
myStepper.setSpeed(500);
}
void loop() {
messwert=analogRead(A4);
Serial.print("Feuchtigkeits-Messwert:");
Serial.println(messwert);
if (messwert < 200 ){
myStepper.step(2048);
}
if (taster == HIGH ){
myStepper.step(-2048);
}
delay(5000);
}
aber irgendwie funktioniert dieser nicht so wie wir uns das vorstellen.
Wenn keine Wasser da ist dreht sich der Motor und wenn Wasser da ist Stoppt er und dreht in die andere Richtung. Der Taster hat gar keine Funktion. Mit der Feuchtigkeitsauslösung wollten wir es aber genau anders rum haben, sprich Wenn kein wasser da ist ist alles in ruhe "Modus". Kommt wasser auf die Feuchtigkeitsauslösung dreht der Motor in die eine Richtung und Stopt dann nach einen Step. Betätigt man den Taster soll er in die andere Richtung fahren und dann wieder stoppen.
Taster (oder Pins allgemein) musst du mit digitalRead() einlesen
Du machst im Prinzip das:
if (11 == 1)
{
}
Der Taster braucht außerdem einen Pulldown-Widerstand gegen Masse. Wenn du keinen externen Widerstand verbaut hast, dann verwende INPUT_PULLUP und frage auf LOW statt HIGH ab.