Arduino Solartracker code, was ist falsch?
Hallo, ich bin in der 9d und wir machen ein Projekt, bei dem wie ein Solartracker bauen und mit dem Arduino programmieren müssen. Wir haben einen Code mit einem Schrittmotor an der unteren Achse und einem Servomotor an der oberen Achse. Der Code funktioniert nicht. Kann mir jemand helfen oder eventuell einen richtigen Code geben? Wir versuchen schon seit Wochen das Problem zu lösen und schaffen es einfach nicht!
#include <Stepper.h>
int SPU = 2048;
Stepper Motor(SPU, 1,3,2,4);
#include <Servo.h>
Servo servoblau;
int eingang1=A0;
int sensorwert1=0;
int eingang2=A1;
int sensorwert2=1;
int eingang3=A2;
int sensorwert3=2;
int eingang4=A3;
int sensorwert4=3;
int winkelweite=180;
void setup()
{
Serial.begin(9600);
Motor.setSpeed(5);
servoblau.attach(8);
}
void loop()
{
servoblau.write(180);
auslesen();
while (sensorwert1-sensorwert2>20)
{
winkelweite=winkelweite+5;
servoblau.write(winkelweite);
auslesen();
}
while (sensorwert1-sensorwert2<-20)
{
winkelweite=winkelweite-5;
servoblau.write(winkelweite);
auslesen();
}
while (sensorwert3-sensorwert4>20)
{
Motor.step(-10);
auslesen();
}
while (sensorwert3-sensorwert4<-20)
{
Motor.step(10);
auslesen();
}
}
void auslesen()
{
sensorwert1=analogRead(eingang1);
sensorwert2=analogRead(eingang2);
sensorwert3=analogRead(eingang3);
sensorwert4=analogRead(eingang4);
Serial.print("Sensorwert1=");
Serial.println(sensorwert1);
Serial.print("Sensorwert2=");
Serial.println(sensorwert2);
Serial.print("Sensorwert3=");
Serial.println(sensorwert3);
Serial.print("Sensorwert4=");
Serial.println(sensorwert4);
Serial.print("Winkelweite");
Serial.println(winkelweite);
}
2 Antworten
Hallo,
was funktioniert nicht? wie sieht dein schema aus? wie hast du alles angeschlossen?
paar fotos wären nett..
ausserdem ich sehe:
Stepper Motor(SPU, 1,3,2,4);
pins 1 und 2 sollte nicht benutzt werden..diese sind für TX und RX der seriellen kommunikation (Hardware) damit du überhaupt Serial rausbekommst.
versuch mal mit anderen pins..8,9,10 und 11 in reihe (auch so verdrahten)
...
servoblau.write(180);
bei jedem durchlauf vom loop, tut der servo IMMER die position 180 anfahren, egal was dann kommt, wird zurückgestellt..das ganze mehrere male pro sekunde.
servoblau.write(winkelweite);
wäre besser;)
Vielen Dank für die Hilfe, bei uns funktioniert der Schrittmotor manchmal, manchmal nicht. Der Servomotor macht garnichts. Fotos kommen bald…
Ich kenne mich damit nicht aus, aber sind die Leerstellen in Zeile 2 und vor allem 3 Absicht?
Ansonsten habe ich noch ein paar Stichwörter ergänzt. Vielleicht sieht das noch jemand, der sich damit auskennt.