Hallo nochmal,
die Waage arbeitet soweit, allerdings fehlt noch die Bedienfreundlichkeit.
Vielleicht könnt ihr mir da weiterhelfen.
Der Code sieht bisher so aus:
PHP-Code:
int sensorPin1 = A2;
int sensorPin2 = A3;
int sensorValue1 = 0;
int sensorValue2 = 0;
int motorPin1 = 8; // Blue - 28BYJ48 pin 1
int motorPin2 = 9; // Pink - 28BYJ48 pin 2
int motorPin3 = 10; // Yellow - 28BYJ48 pin 3
int motorPin4 = 11; // Orange - 28BYJ48 pin 4
// Red - 28BYJ48 pin 5 (VCC)
int motorSpeed = 0;
void setup() {
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
Serial.begin(9600);
}
void loop(){
sensorValue1 = analogRead(sensorPin1);
sensorValue2 = analogRead(sensorPin2);
Serial.println(sensorValue1);
if (sensorValue1 > 512 && sensorValue2 < 512)
{
motorSpeed = 1;
counterclockwise();
}
if (sensorValue1 < 512 && sensorValue2 < 512)
{
motorSpeed = 2;
counterclockwise();
}
if (sensorValue1 < 512 && sensorValue2 > 512)
{
motorSpeed = 0;
counterclockwise();
}
}
void counterclockwise (){
// 1
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(motorSpeed);
// 2
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay (motorSpeed);
// 3
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(motorSpeed);
// 4
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(motorSpeed);
// 5
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(motorSpeed);
// 6
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, HIGH);
delay (motorSpeed);
// 7
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(motorSpeed);
// 8
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(motorSpeed);
}
Der Motor dreht zuerst schnell, dann langsamer und schaltet bei Erreichen der Endstellung ab, aber natürlich beim runternehmen der Waagschale auch gleich wieder ein.
Ich hätte gerne dass der ganze Vorgang hier unterbrochen wird und erst nach drücken eines Tasters wieder startet. Ebenso soll nach dem Einschalten erst auf Tastendruck gestartet werden.
Wie krieg ich das denn rein?
Danke
Andy
Lesezeichen