Bau eines Autonomen Schwarmvehikels
(EN google-translate)
(PL google-translate)
Um den Motortreiber zwischen den Pins des Arduino-Micro unterzubringen, muß es möglich sein, die Pins A0 bis A5 auch als digitale Ausgänge zu verwenden.
Hierzu ein Test:
int zustand = 0; //A0 = D18 //A1 = D19 //A2 = D20 //A3 = D21 //A4 = D22 //A5 = D23 //A6 = D24 //A7 = D25 //A8 = D26 //A9 = D27 //A10 = D28 //A11 = D29 void setup() { pinMode(18,OUTPUT); pinMode(19,OUTPUT); //pinMode(3,OUTPUT); //tone(3,710); } void loop() { digitalWrite(18,1); digitalWrite(19,1); delay(800); digitalWrite(18,0); digitalWrite(19,0); delay(800); }
Code 0-1: Testweise Pin A0 und A1 als digitale Ausgänge verwenden.
Basisprogramm - alles inaktiv, LED D13 blinkt
int zustand = 0; //A0 = D18 //A1 = D19 //A2 = D20 //A3 = D21 //A4 = D22 //A5 = D23 //A6 = D24 //A7 = D25 //A8 = D26 //A9 = D27 //A10 = D28 //A11 = D29 void setup() { pinMode(18,INPUT); //A0 pinMode(19,INPUT); //A1 pinMode(20,INPUT); //A2 pinMode(21,INPUT); //A3 pinMode(22,INPUT); //A4 pinMode(23,INPUT); //A5 pinMode(2,INPUT); //D2 pinMode(3,INPUT); //D3 pinMode(4,INPUT); //D4 pinMode(5,INPUT); //D5 pinMode(6,INPUT); //D6 pinMode(7,INPUT); //D7 pinMode(8,INPUT); //D8 pinMode(9,INPUT); //D9 pinMode(13,OUTPUT); //LED } void loop() { digitalWrite(13,1); delay(500); digitalWrite(13,0); delay(500); }
Code 0-2: Basisprogramm - alles inaktiv, LED D13 blinkt
Analoge Werte lesen und auf die serielle Schnittstelle schreiben
int sensorwert=0; //A0 = D18 //A1 = D19 //A2 = D20 //A3 = D21 //A4 = D22 //A5 = D23 //A6 = D24 //A7 = D25 //A8 = D26 //A9 = D27 //A10 = D28 //A11 = D29 void setup() { pinMode(18,INPUT); //A0 pinMode(19,INPUT); //A1 pinMode(20,INPUT); //A2 pinMode(21,INPUT); //A3 pinMode(22,INPUT); //A4 pinMode(23,INPUT); //A5 pinMode(2,INPUT); //D2 pinMode(3,INPUT); //D3 pinMode(4,INPUT); //D4 pinMode(5,INPUT); //D5 pinMode(6,INPUT); //D6 pinMode(7,INPUT); //D7 pinMode(8,INPUT); //D8 pinMode(9,INPUT); //D9 pinMode(13,OUTPUT); //LED Serial.begin(9600); //LINKER MOTOR: } void loop() { sensorwert = analogRead(11); Serial.write(48+(sensorwert/1000)%10); Serial.write(48+(sensorwert/100)%10); Serial.write(48+(sensorwert/10)%10); Serial.write(48+(sensorwert/1)%10); Serial.write(' '); Serial.write(' '); digitalWrite(13,1); delay(250); digitalWrite(13,0); delay(250); }
Code 0-3: Analoge Werte lesen und auf die serielle Schnittstelle schreiben
Vorwärtsfahrt-Test
int sensorwert=0; //A0 = D18 //A1 = D19 //A2 = D20 //A3 = D21 //A4 = D22 //A5 = D23 //A6 = D24 //A7 = D25 //A8 = D26 //A9 = D27 //A10 = D28 //A11 = D29 void setup() { pinMode(18,INPUT); //A0 pinMode(19,INPUT); //A1 pinMode(20,INPUT); //A2 pinMode(21,INPUT); //A3 pinMode(22,INPUT); //A4 pinMode(23,INPUT); //A5 pinMode(2,INPUT); //D2 pinMode(3,INPUT); //D3 pinMode(4,INPUT); //D4 pinMode(5,INPUT); //D5 pinMode(6,INPUT); //D6 pinMode(7,INPUT); //D7 pinMode(8,INPUT); //D8 pinMode(9,INPUT); //D9 pinMode(13,OUTPUT); //LED Serial.begin(9600); //Rechte Motorseite: pinMode(10,OUTPUT); //Enable 1, L293_PIN1 pinMode(8,OUTPUT); //Input 2, L293_PIN7 pinMode(3,OUTPUT); //Input 1, L293_PIN2 digitalWrite(3,1); digitalWrite(8,0); analogWrite(10,0); //Linke Motorseite: pinMode(13,OUTPUT); //Enable 2, L293_PIN9 pinMode(19,OUTPUT); //A1 Input 3, L293_PIN15 pinMode(11,OUTPUT); //Input 4, L293_PIN10 digitalWrite(19,1); digitalWrite(11,0); analogWrite(13,0); } void loop() { sensorwert = analogRead(11); Serial.write(48+(sensorwert/1000)%10); Serial.write(48+(sensorwert/100)%10); Serial.write(48+(sensorwert/10)%10); Serial.write(48+(sensorwert/1)%10); Serial.write(' '); Serial.write(' '); digitalWrite(13,1); analogWrite(10,0); analogWrite(13,255); delay(250); digitalWrite(13,0); analogWrite(10,255); analogWrite(13,0); delay(250); }
Code 0-4: Vorwärtsfahrt-Test
An einer Wand entlang fahren
int sensorwert=0; int regler=0; //A0 = D18 //A1 = D19 //A2 = D20 //A3 = D21 //A4 = D22 //A5 = D23 //A6 = D24 //A7 = D25 //A8 = D26 //A9 = D27 //A10 = D28 //A11 = D29 void setup() { pinMode(18,INPUT); //A0 pinMode(19,INPUT); //A1 pinMode(20,INPUT); //A2 pinMode(21,INPUT); //A3 pinMode(22,INPUT); //A4 pinMode(23,INPUT); //A5 pinMode(2,INPUT); //D2 pinMode(3,INPUT); //D3 pinMode(4,INPUT); //D4 pinMode(5,INPUT); //D5 pinMode(6,INPUT); //D6 pinMode(7,INPUT); //D7 pinMode(8,INPUT); //D8 pinMode(9,INPUT); //D9 pinMode(13,OUTPUT); //LED // Serial.begin(9600); //Rechte Motorseite: pinMode(10,OUTPUT); //Enable 1, L293_PIN1 pinMode(8,OUTPUT); //Input 2, L293_PIN7 pinMode(3,OUTPUT); //Input 1, L293_PIN2 digitalWrite(3,1); digitalWrite(8,0); analogWrite(10,0); //Linke Motorseite: pinMode(13,OUTPUT); //Enable 2, L293_PIN9 pinMode(19,OUTPUT); //A1 Input 3, L293_PIN15 pinMode(11,OUTPUT); //Input 4, L293_PIN10 digitalWrite(19,1); digitalWrite(11,0); analogWrite(13,0); } void loop() { sensorwert = analogRead(11); regler = 250-sensorwert; if(regler>100) regler=100; else if(regler<-100) regler=-100; regler/=32; /* Serial.write(48+(sensorwert/1000)%10); Serial.write(48+(sensorwert/100)%10); Serial.write(48+(sensorwert/10)%10); Serial.write(48+(sensorwert/1)%10); Serial.write(' '); Serial.write(' '); */ //digitalWrite(13,1); analogWrite(13,255-regler); //digitalWrite(13,0); analogWrite(10,255+regler); delay(10); }
Code 0-5: An einer Wand entlang fahren