Hallo!
Ich habe ein Problem, vermutlich weil meine Programmierkenntnisse nicht sonderlich gut sind.
Über einen kleinen Schrittmotor 28BYJ-48 mit ULN2003 wird eine kleine Schnecke angetrieben die Fischfutter fördert. Die Mechanik samt Motor funktioniert soweit nur das Programm nicht.
Über ein Poti soll die Futtermenge eingestellt werden, also die Zeit/Anzahl der Umdrehungen des Motors.
Ist dieser Wert erreicht soll das Programm enden.
Aber irgendwie zählt er das i immer über den Wert des Poti hinaus und fängt von vorne an => der Motor dreht sich dauerhaft.
Es würde reichen, wenn er in ein ewiges Delay geht wenn der Wert erreicht ist, da der Arduino morgens zusammen mit dem Licht eingeschaltet wird und abends ausgeschaltet wird.Also Füttern und dann delay(15Stunden)
Vielleicht kann mir jemand helfen.
/*
Fischfutterautomat
*/
const int motorPin1 = 8; // Blue - In 1
const int motorPin2 = 9; // Pink - In 2
const int motorPin3 = 10; // Yellow - In 3
const int motorPin4 = 11; // Orange - In 4
// Red - pin 5 (VCC)
unsigned int motorSpeed = 1000;
unsigned int sensorValue ;
void setup() {
Serial.begin(9600);
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
sensorValue = analogRead(A0);
Serial.println(sensorValue);
delay(1000);
}
void loop() {
for (int i=0; i<sensorValue; i++){
// 1
digitalWrite(motorPin4, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin1, LOW);
delayMicroseconds(motorSpeed);
// 2
digitalWrite(motorPin4, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin1, LOW);
delayMicroseconds(motorSpeed);
// 3
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin1, LOW);
delayMicroseconds(motorSpeed);
// 4
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin1, LOW);
delayMicroseconds(motorSpeed);
// 5
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin1, LOW);
delayMicroseconds(motorSpeed);
// 6
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin1, HIGH);
delayMicroseconds(motorSpeed);
// 7
digitalWrite(motorPin4, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin1, HIGH);
delayMicroseconds(motorSpeed);
// 8
digitalWrite(motorPin4, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin1, HIGH);
delayMicroseconds(motorSpeed);
Serial.println(i);
delay(10);
if (i = sensorValue)
{
Serial.println("Futtermenge erreicht");
delay(1000); //Ausschalten
}
}
}