Hallo Leute!
Ich hab da einen Code geschrieben, welcher, auch mit kleinen Macken, soweit funktioniert und macht was er soll.
Jetzt folgt meine Bitte an euch:
Ich möchte sobald die Variable anzahl den wert 3 und 4 hat und die LED somit leuchtet, einen (Linear-)Motor einmalig für 2sec ansteuern, sobald die Variable den Wert 1,2,5,6 hat den Motor umpolen, sodass er den daran angebauten Schieber wieder schließt. Bzw. so:
anzahl = 1 Der Schieber soll geschlossen sein
anzahl = 2 der Schieber soll geschlossen sein
anzahl = 3 kurzer Impuls (2 Sekunden) + - am Motor - Schieber offen
anzahl = 4 Schieber offen
anzahl = 5 kurzer Impuls (2 Sekunden) - + am Motor - Schieber zu
anzahl = 6 der Schieber soll geschlossen sein
Die LED ledPin blinkt auch immer wieder, genauso wie die Anzeige am LED. Das müsste sich eigentlich auch nicht immer aktualisieren, nur bei Änderung.
Ich bitte um Hilfe! Bin Neuling im Bereich Arduino und Programmieren!
Hier der Code:
//OUTPUTS
const int ledPin = 9;
const int pauseLed = 10;
//INPUTS
const int buttonPin = 8;
const int pausePin = 7;
//Variablen
int anzahl;
int buttonState = LOW;
int buttonread = 0;
int pauseState = LOW;
int pauseread = 0;
//Display
#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
void setup()
{
//OUTPUTS
pinMode(ledPin, OUTPUT);
pinMode(pauseLed, OUTPUT);
//INPUTS
pinMode(buttonPin, INPUT);
pinMode(pausePin, INPUT);
//Serielle Verbindung
Serial.begin(9600);
Serial.println("Serial port opened");
//Display
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print("Schieber-");
lcd.setCursor(0,1);
lcd.print("schaltung 1.0");
delay(3500);
lcd.clear();
if(anzahl == 0)
{
lcd.setCursor(2,1);
lcd.print("START");
}
}
void loop()
{
pauseread = digitalRead(pausePin);
buttonread = digitalRead(buttonPin);
//Entprellen
//Display
lcd.setCursor(0,0);
lcd.print("ANZAHL");
lcd.setCursor(0,1);
lcd.print(anzahl);
if (anzahl >0)
{
lcd.setCursor(2,1);
lcd.print(" ");
}
if (pauseread == LOW)
{
if (buttonread == HIGH)
{
delay(20);
if (digitalRead(buttonPin))
{
if (buttonState == LOW)
{
if (digitalRead(buttonPin))
{
anzahl = anzahl + 1;
buttonState = HIGH;
Serial.print("ANZAHL ");
Serial.print(anzahl);
Serial.println("");
}
}
}
}
else
{
if (buttonState == HIGH)
{
anzahl = anzahl;
buttonState = LOW;
}
}
if (anzahl == 3 || anzahl == 4)
{
digitalWrite(ledPin, HIGH);
Serial.println("Schieber offen");
lcd.setCursor(5,1);
lcd.print("SCHIEBER ON");
delay(100);
}
if (anzahl >= 7)
{
anzahl = 1;
}
else
{
digitalWrite(ledPin, LOW);
lcd.setCursor(7,1);
lcd.print(" ");
}
pauseread = LOW;
digitalWrite(pauseLed, LOW);
lcd.setCursor(9,0);
lcd.print(" ");
}
else if (pauseread == HIGH)
{
digitalWrite(pauseLed, HIGH);
lcd.setCursor(9,0);
lcd.print("PAUSE");
}
}