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.