eigendlich wollte ich Dir nicht antworten, denn wie viele andere sicher auch bin ich ebenfalls der Meinung das gehört in den alten Post, schliesslich geht es um das gleiche Thema.
Beim Überarbeiten des Programms hast Du jede Menge Fehler eingebaut , es gibt Klammern die können so nicht sein, da wundert es mich nicht das die If nicht funktionieren. Der Komplette Teil mit den Anweisungen PinMode fehlt. Fang doch einfach mal kleiner an und schau dir nochmal an wie man Eingänge deffiniert, so geht das jedenfalls nicht. Irgendwas hast Du anscheinend nicht verstanden.
Bittte beim nächsten Versuch wieder in dem alten Post
Biber1983:
Nein weil es mir rein um das Programm oben geht ob das soweit ok ist?
Kannst du denn bitte deinen Sketch in der IDE mittels STRG+T besser formatieren.
Dann wird dieser auch besser lesbar.
Du kannst den Sketch im Startpost austauschen.
Ok, ohne jetzt großartig den Sketch auf Funktionsfähigkeit zu prüfen, habe ich die Klammern mal richtig (hoffe ich) gestellt.
Bei mir kompiliert er fehlerfrei.
#include <Stepper.h>
int SPU = 2048;
Stepper Motor (SPU, 3, 5, 4, 6); //Motor erh?lt Pins 8-11
int eingang = A0; //
int sensorWert = 0; //Variable für den Sensorwert mit 0 als Start
int LEDgruen = 9;
int LEDrot = 8 ;
int Sensoroben = 11 ; //Sensor oben
int Sensorunten = 12 ; //Sensor unten
void setup ()
{
Motor.setSpeed (5); //Motorgeschwindigkeit
Serial.begin (9600); //serieller Monitor
pinMode (LEDgruen, OUTPUT); //LED auf Ausgang
pinMode (LEDrot, OUTPUT);
pinMode (Sensoroben, Input); //diese beiden fehlten bei dir
pinMode (Sensorunten, Input);
}
void loop ()
{
// Sensoroben = digitalRead(inputSensoroben);
// Sensorunten = digitalRead(inputSensorunten);
sensorWert = analogRead(eingang);
Serial.print ("LichsensorWert=");
Serial.println (sensorWert);
if (analogRead(sensorWert) <= 150) {
if ( digitalRead(Sensoroben) == LOW)
if (digitalRead(Sensorunten) == HIGH)
Motor.step (4100);
}
if (analogRead(sensorWert) >= 151) {
if ( digitalRead(Sensorunten) == LOW)
if (digitalRead(Sensoroben) == HIGH)
Motor.step (-4100);
}
if (digitalRead(Sensorunten) == LOW ) {
if ( analogRead(sensorWert) <= 150)
if (digitalRead(Sensoroben) == HIGH)
digitalWrite(LEDrot, HIGH);
}
if (digitalRead(Sensoroben) == LOW) {
if ( analogRead(sensorWert) >= 151)
if (digitalRead(Sensorunten) == HIGH)
digitalWrite(LEDgruen, HIGH);
}
else
{
digitalWrite(LEDgruen, HIGH);
delay(1000);
digitalWrite(LEDgruen, LOW);
}
}
2 x pinModes fehlten. Evtl. brauchst du da noch Pullup- oder Pulldown-Widerstände
So, habe es jetzt doch noch geschafft mich heute hinzusetzen und das Programm nochmal komplett zu zerlegen und einzeln aufzuspielen. Soweit klappt alles aber ein Punkt macht mich stutzig.
Wenn der "Offen" Taster betätigt ist und es ist Hell leuchtet die grüne Diode(soweit richtig)
Wenn der Taster "Zu" betätigt ist und es ist dunkel, leuchtet die rote (soweit auch richtig) .Nur Blinkt hier das Grüne noch mit. Das verstehe ich jetzt nicht . Kann mir das jemand erklären?
Motor Pins habe ich neu definiert, da der Stepper nur in eine Richtung gedreht hat.
P.S.: ja das nächste mal hänge ich es an den alten Post.
#include <Stepper.h>
int SPU = 2048;
Stepper Motor (SPU, 2, 4, 3, 5) ;//Motor erh?lt Pins 2-5
int eingang = A0; //
int sensorWert = 0; //Variable für den Sensorwert mit 0 als Start
int LEDgruen = 9;
int LEDrot = 8 ;
int Sensoroben = 12 ; //Sensor oben
int Sensorunten = 11 ; //Sensor unten
void setup ()
{
Motor.setSpeed (5); //Motorgeschwindigkeit
Serial.begin (9600); //serieller Monitor
pinMode (LEDgruen, OUTPUT); //LED auf Ausgang
pinMode (LEDrot, OUTPUT);
pinMode (Sensoroben, INPUT); //diese beiden fehlten bei dir
pinMode (Sensorunten, INPUT);
}
void loop ()
{
sensorWert = analogRead(eingang);
Serial.print ("LichsensorWert=");
Serial.println (sensorWert);
if (analogRead(sensorWert) <= 150) {
if ( digitalRead(Sensoroben) == LOW)
if (digitalRead(Sensorunten) == HIGH)
Motor.step (2050);
}
if (analogRead(sensorWert) >= 151) {
if ( digitalRead(Sensorunten) == LOW)
if (digitalRead(Sensoroben) == HIGH)
Motor.step (-2050);
}
if (digitalRead(Sensorunten) == LOW ) {
if ( analogRead(sensorWert) <= 150)
if (digitalRead(Sensoroben) == HIGH)
digitalWrite(LEDrot, HIGH);
}
if (digitalRead(Sensoroben) == LOW) {
if ( analogRead(sensorWert) >= 151)
if (digitalRead(Sensorunten) == HIGH)
digitalWrite(LEDgruen, HIGH);
}
else
{
digitalWrite(LEDgruen, HIGH);
delay(1000);
digitalWrite(LEDgruen, LOW);
digitalWrite(LEDrot, HIGH);
delay(1000);
digitalWrite(LEDrot, LOW);
}
}
Wenn die Pulldown-Widerstände richtig angeschlossen sind, blinkt die grüne LED im else Zweig. Was die rote macht, hängt vom Rest ab: ohne delay nach digitalWrite (LedRot, LOW); kann es sein, dass man dies gar nicht sieht, und die rote LED dauerhaft leuchtet.