Testprogramme
(EN google-translate)
(PL google-translate)
Lauflicht
int zustand = 0; void setup() { DDRB=255; } void loop() { PORTB=(1<<zustand); delay(400); zustand++; zustand%=8; }
Code 0-1: Lauflicht.
Sensor 1 und 2 (A0 und A3)
int sensorwert = 0; void setup() { DDRB=255; } void loop() { // sensorwert = analogRead(0); //Frontalsensor sensorwert = analogRead(3); //Seitensensor PORTB=(1<<(sensorwert>>6)); delay(50); }
Code 0-2: Sensor frontal und seitlich.
Motortest
//Über die Taster wird die Richtung gewechselt. //Zuordnung Analog zu Digital //A0 = D18 //A1 = D19 //A2 = D20 //A3 = D21 //A4 = D22 //A5 = D23 //A6 = D24 //A7 = D25 //A8 = D26 //A9 = D27 //A10 = D28 //A11 = D29 int sensorwert = 0; void setup() { //VORNE LINKER MOTOR pinMode(23,OUTPUT); //A5 digitalWrite(23,0); analogWrite(3,0); //VORNE RECHTER MOTOR pinMode(22,OUTPUT); digitalWrite(22,0); analogWrite(5,0); //HINTEN LINKER MOTOR pinMode(7,OUTPUT); //A5 digitalWrite(7,0); analogWrite(6,0); //HINTEN RECHTER MOTOR pinMode(12,OUTPUT); digitalWrite(12,0); analogWrite(13,0); } void motor_links_vorne(int wert) { if(wert>=0) { pinMode(23,OUTPUT); //A5 digitalWrite(23,1); analogWrite(3,255-wert); } else { pinMode(23,OUTPUT); //A5 digitalWrite(23,0); analogWrite(3,-wert); } } void motor_rechts_vorne(int wert) { if(wert>=0) { pinMode(22,OUTPUT); digitalWrite(22,0); analogWrite(5,wert); } else { pinMode(22,OUTPUT); digitalWrite(22,1); analogWrite(5,255+wert); } } //----- void motor_links_hinten(int wert) { if(wert>=0) { pinMode(7,OUTPUT); //A5 digitalWrite(7,1); analogWrite(6,255-wert); } else { pinMode(7,OUTPUT); //A5 digitalWrite(7,0); analogWrite(6,-wert); } } void motor_rechts_hinten(int wert) { if(wert>=0) { pinMode(12,OUTPUT); digitalWrite(12,0); analogWrite(13,wert); } else { pinMode(12,OUTPUT); digitalWrite(12,1); analogWrite(13,255+wert); } } void loop() { sensorwert = analogRead(0); PORTB=(1<<(sensorwert>>6)); if(sensorwert>200) { motor_links_vorne(220); motor_rechts_vorne(220); motor_links_hinten(220); motor_rechts_hinten(220); } else { motor_links_vorne(0); motor_rechts_vorne(0); motor_links_hinten(0); motor_rechts_hinten(0); } }
Code 0-3: Motortest.
Wandregler
//Über die Taster wird die Richtung gewechselt. //Zuordnung Analog zu Digital //A0 = D18 //A1 = D19 //A2 = D20 //A3 = D21 //A4 = D22 //A5 = D23 //A6 = D24 //A7 = D25 //A8 = D26 //A9 = D27 //A10 = D28 //A11 = D29 int sensorwert = 0; int sensorwert_frontal = 0; int stellgroesse=0; void setup() { DDRB=255; //VORNE LINKER MOTOR pinMode(23,OUTPUT); //A5 digitalWrite(23,0); analogWrite(3,0); //VORNE RECHTER MOTOR pinMode(22,OUTPUT); digitalWrite(22,0); analogWrite(5,0); //HINTEN LINKER MOTOR pinMode(7,OUTPUT); //A5 digitalWrite(7,0); analogWrite(6,0); //HINTEN RECHTER MOTOR pinMode(12,OUTPUT); digitalWrite(12,0); analogWrite(13,0); Serial.begin(9600); } void motor_links_vorne(int wert) { if(wert>=0) { pinMode(23,OUTPUT); //A5 digitalWrite(23,1); analogWrite(3,255-wert); } else { pinMode(23,OUTPUT); //A5 digitalWrite(23,0); analogWrite(3,-wert); } } void motor_rechts_vorne(int wert) { if(wert>=0) { pinMode(22,OUTPUT); digitalWrite(22,0); analogWrite(5,wert); } else { pinMode(22,OUTPUT); digitalWrite(22,1); analogWrite(5,255+wert); } } //----- void motor_links_hinten(int wert) { if(wert>=0) { pinMode(7,OUTPUT); //A5 digitalWrite(7,1); analogWrite(6,255-wert); } else { pinMode(7,OUTPUT); //A5 digitalWrite(7,0); analogWrite(6,-wert); } } void motor_rechts_hinten(int wert) { if(wert>=0) { pinMode(12,OUTPUT); digitalWrite(12,0); analogWrite(13,wert); } else { pinMode(12,OUTPUT); digitalWrite(12,1); analogWrite(13,255+wert); } } void loop() { sensorwert = analogRead(3); Serial.println(sensorwert,DEC); stellgroesse = (sensorwert-160); stellgroesse/=2; stellgroesse-=10; if(stellgroesse>45) stellgroesse=45; if(stellgroesse<-45) stellgroesse=-45; sensorwert_frontal = analogRead(0); /* if(sensorwert_frontal>200) { PORTB=255; motor_links_vorne(-240); motor_links_hinten(240); motor_rechts_vorne(240); motor_rechts_hinten(-240); } else { */ PORTB=(1<<(sensorwert>>6)); motor_links_vorne(210-stellgroesse); motor_links_hinten(210-stellgroesse); motor_rechts_vorne(210+stellgroesse); motor_rechts_hinten(210+stellgroesse); // } }
Code 0-4: Wandregler.
Servo testen
Der Servo ist bei PB7. PB7 muss deaktiviert werden.
#include<Servo.h> Servo servo; int sensorwert_unten = 0; void setup() { servo.attach(11); servo.write(180); delay(2000); // Serial.begin(9600); } void loop() { sensorwert_unten = analogRead(1); //Serial.println(sensorwert_unten,DEC); if(sensorwert_unten>400) { sensorwert_unten = analogRead(1); delay(50); if(sensorwert_unten>400) servo.write(0); delay(50); } else { servo.write(180); delay(50); } }
Code 0-5: Servo testen.
Komplexes Zusammenspiel
//Über die Taster wird die Richtung gewechselt. //Zuordnung Analog zu Digital //A0 = D18 //A1 = D19 //A2 = D20 //A3 = D21 //A4 = D22 //A5 = D23 //A6 = D24 //A7 = D25 //A8 = D26 //A9 = D27 //A10 = D28 //A11 = D29 #include<Servo.h> Servo servo; int sensorwert_unten = 0; int sensorwert = 0; int sensorwert_frontal = 0; int stellgroesse=0; void setup() { DDRB=127; //VORNE LINKER MOTOR pinMode(23,OUTPUT); //A5 digitalWrite(23,0); analogWrite(3,0); //VORNE RECHTER MOTOR pinMode(22,OUTPUT); digitalWrite(22,0); analogWrite(5,0); //HINTEN LINKER MOTOR pinMode(7,OUTPUT); //A5 digitalWrite(7,0); analogWrite(6,0); //HINTEN RECHTER MOTOR pinMode(12,OUTPUT); digitalWrite(12,0); analogWrite(13,0); Serial.begin(9600); servo.attach(11); servo.write(180); delay(2000); servo.detach(); } void motor_links_vorne(int wert) { if(wert>=0) { pinMode(23,OUTPUT); //A5 digitalWrite(23,1); analogWrite(3,255-wert); } else { pinMode(23,OUTPUT); //A5 digitalWrite(23,0); analogWrite(3,-wert); } } void motor_rechts_vorne(int wert) { if(wert>=0) { pinMode(22,OUTPUT); digitalWrite(22,0); analogWrite(5,wert); } else { pinMode(22,OUTPUT); digitalWrite(22,1); analogWrite(5,255+wert); } } //----- void motor_links_hinten(int wert) { if(wert>=0) { pinMode(7,OUTPUT); //A5 digitalWrite(7,1); analogWrite(6,255-wert); } else { pinMode(7,OUTPUT); //A5 digitalWrite(7,0); analogWrite(6,-wert); } } void motor_rechts_hinten(int wert) { if(wert>=0) { pinMode(12,OUTPUT); digitalWrite(12,0); analogWrite(13,wert); } else { pinMode(12,OUTPUT); digitalWrite(12,1); analogWrite(13,255+wert); } } void loop() { sensorwert = analogRead(3); Serial.println(sensorwert,DEC); stellgroesse = (sensorwert-160); stellgroesse/=2; stellgroesse-=10; if(stellgroesse>45) stellgroesse=45; if(stellgroesse<-45) stellgroesse=-45; sensorwert_frontal = analogRead(0); delay(50); sensorwert_unten = analogRead(1); delay(50); if(sensorwert_frontal>250) { PORTB=127; motor_links_vorne(-240); motor_links_hinten(240); motor_rechts_vorne(240); motor_rechts_hinten(-240); } else if(sensorwert_unten>400) { sensorwert_unten = analogRead(1); delay(50); if(sensorwert_unten>400) { servo.attach(11); servo.write(0); delay(500); servo.write(180); delay(500); servo.detach(); } delay(50); } else { PORTB=((1<<(sensorwert>>6)) & 127); motor_links_vorne(210-stellgroesse); motor_links_hinten(210-stellgroesse); motor_rechts_vorne(210+stellgroesse); motor_rechts_hinten(210+stellgroesse); } }
Code 0-6: Komplexes Zusammenspiel.