Hallo,
wir haben ein Skript geschrieben, das ihr ganz am ende sehen könnt jedoch bewegen sich unsere Motoren (Schrittmotoren) nicht. es lässt sich alles auf den Arduino (UNO) laden jedoch wenn man dann das Fach angibt passiert nichts.
Wir würden uns sehr freuen wenn jemand es zumindest versucht einen Fehler zu finden ![]()
danke im voraus für die Zeit investierung
Skript:
int fach;
// Pindefinition der Motoren
const int StepMot1 = 12;
const int RiMot1 = 11;
const int StepMot2 = 8;
const int RiMot2 = 7;
const int StepMot3 = 5;
const int RiMot3 = 4;
// Definition der Drehrichtung
// Im Ausgang davon, dass rechts = hoch, links = runter, links = vor, rechts = zurück
const boolean links = 1;
const boolean rechts = 0;
boolean flag;
int pos; // aktuelle Position, muss bekannt sein, damit jeweils
// ein Schritt nach links oder rechts ausgegeben werden kann
void setup()
{
Serial.begin(9600);
// Pins als Output festlegen
pinMode(StepMot1, OUTPUT);
pinMode(StepMot2, OUTPUT);
pinMode(StepMot3, OUTPUT);
pinMode(RiMot1, OUTPUT);
pinMode(RiMot2, OUTPUT);
pinMode(RiMot3, OUTPUT);
pos = 0; // und merken, dass er auf Schritt 0 steht
}
void loop() {
if(Serial.available() > 0)
{
fach = Serial.read(); // das Fach wird aus dem seriellen Monitor erlesen
// Fach 1: Herbert (unten links)
if(fach == 'Herbert' )
{
// Schritte a) Motor 3
for (int i = 0; i < 200; i++)
{
digitalWrite(RiMot3, flag);
digitalWrite(StepMot3, HIGH);
delay(2);
digitalWrite(StepMot3,LOW);
}
if (flag == links) {flag=rechts;} else {flag= links;}
delay(1000);
// Schritte Motor 2
for (int i = 0; i < 900; i++)
{
digitalWrite(RiMot2, flag);
digitalWrite(StepMot2, HIGH);
delay(2);
digitalWrite(StepMot2,LOW);
}
if (flag == links) {flag=rechts;} else {flag= links;}
delay(1000);
//Schritte Motor 1
for (int i = 0; i < 4400; i++)
{
digitalWrite(RiMot1, flag);
digitalWrite(StepMot1, HIGH);
delay(2);
digitalWrite(StepMot1,LOW);
}if (flag == links) {flag=rechts;} else {flag= links;}
delay(1000);
//Schritte b) Motor 3
for (int i = 0; i < 200; i++)
{
digitalWrite(RiMot3, flag);
digitalWrite(StepMot3, HIGH);
delay(2);
digitalWrite(StepMot3,LOW);
}if (flag == links) {flag=rechts;} else {flag= links;}
delay(1000);
// jetzt zurück zu pos=0 durch Motor 1
for (int i = 0; i < 4400; i++)
{
digitalWrite(RiMot1, flag);
digitalWrite(StepMot1, HIGH);
delay(2);
digitalWrite(StepMot1,LOW);
}if (flag == links) {flag=rechts;} else {flag= links;}
delay(1000);
// Schritte Motor 2 zurück
for (int i = 0; i < 900; i++)
{
digitalWrite(RiMot2, flag);
digitalWrite(StepMot2, HIGH);
delay(2);
digitalWrite(StepMot2,LOW);
}
if (flag == links) {flag=rechts;} else {flag= links;}
delay(1000);
}