Tests der bisher aufgebrachten Peripherie
(EN google-translate)
(PL google-translate)
Bild 0-1: Testperipherie für die nachfolgenden Programme: Sensor, Motor, externe Spannungsversorgung.
Im folgenden werden die bisher aufgebrachten Peripherien getestet:
|
1. LED-Leiste
int zustand = 0;
void setup()
{
DDRB=255;
}
void loop()
{
PORTB=(1<<zustand);
delay(400);
zustand++;
zustand%=8;
}
Code 0-1: Lauflicht.
2. Taster
void setup()
{
DDRB=255;
pinMode(2,INPUT);
digitalWrite(2,1); //Pullup-Widerstand
pinMode(4, INPUT);
digitalWrite(4,1); //Pullup-Widerstand
}
void loop()
{
if(digitalRead(2)==LOW)
{
PORTB|=0b00001010;
}
else
{
PORTB&=~0b00001010;
}
if(digitalRead(4)==LOW)
{
PORTB|=0b11110000;
}
else
{
PORTB&=~0b11110000;
}
}
Code 0-2: Taster.
3. Sensoreingänge
int sensorwert = 0;
void setup()
{
DDRB=255;
}
void loop()
{
sensorwert = analogRead(2);
PORTB=(1<<(sensorwert>>6));
delay(50);
}
Test Sensor links, A2.
int sensorwert = 0;
void setup()
{
DDRB=255;
}
void loop()
{
sensorwert = analogRead(3);
PORTB=(1<<(sensorwert>>6));
delay(50);
}
Code 0-3: Test Sensor rechts, A3.
1. Motortreiber
//Ü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
void setup()
{
DDRB=255;
pinMode(2,INPUT);
digitalWrite(2,1); //Pullup-Widerstand
pinMode(4, INPUT);
digitalWrite(4,1); //Pullup-Widerstand
//LINKER MOTOR
//A5 als digitaler Ausgang, INPUT 3
pinMode(23,OUTPUT);
//A0 als digitaler Ausgang, INPUT 4
pinMode(18,OUTPUT);
digitalWrite(23,1); //1 eine Richtung
digitalWrite(18,0); //0
analogWrite(6,0);
//RECHTER MOTOR
//A4 als digitaler Ausgang, INPUT 2
pinMode(22,OUTPUT);
//A1 als digitaler Ausgang, INPUT 1
pinMode(19,OUTPUT);
digitalWrite(22,1); //1 eine Richtung
digitalWrite(19,0); //0
analogWrite(5,0);
}
void loop()
{
if(digitalRead(2)==LOW)
{
//linker Motor
digitalWrite(23,1); //1 eine Richtung
digitalWrite(18,0); //0
analogWrite(6,127);
//rechter Motor
digitalWrite(22,1); //1 eine Richtung
digitalWrite(19,0); //0
analogWrite(5,127);
}
else if(digitalRead(4)==LOW)
{
//linker Motor
digitalWrite(23,0); //0
digitalWrite(18,1); //1 andere Richtung
analogWrite(6,127);
//rechter Motor
digitalWrite(22,0); //0
digitalWrite(19,1); //1 andere Richtung
analogWrite(5,127);
}
else
{
//Beide Motore inaktiv
//linker Motor
digitalWrite(23,1); //1 eine Richtung
digitalWrite(18,0); //0
analogWrite(6,0);
//rechter Motor
digitalWrite(22,1); //1 eine Richtung
digitalWrite(19,0); //0
analogWrite(5,0);
}
}
Code 0-4: Test Motortreiber.
Sensor-geregelte Fahrt entlang einer Wand
//Ü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 stellgroesse=0;
int senden=0;
void setup()
{
DDRB=255;
pinMode(2,INPUT);
digitalWrite(2,1); //Pullup-Widerstand
pinMode(4, INPUT);
digitalWrite(4,1); //Pullup-Widerstand
//LINKER MOTOR
//A5 als digitaler Ausgang, INPUT 3
pinMode(23,OUTPUT);
//A0 als digitaler Ausgang, INPUT 4
pinMode(18,OUTPUT);
digitalWrite(23,0); //1 eine Richtung
digitalWrite(18,1); //0
analogWrite(6,0);
//RECHTER MOTOR
//A4 als digitaler Ausgang, INPUT 2
pinMode(22,OUTPUT);
//A1 als digitaler Ausgang, INPUT 1
pinMode(19,OUTPUT);
digitalWrite(22,1); //1 eine Richtung
digitalWrite(19,0); //0
analogWrite(5,0);
Serial.begin(9600);
}
void loop()
{
sensorwert = analogRead(2);
PORTB=(1<<(sensorwert>>6));
stellgroesse = (sensorwert-100);
//linker Motor
analogWrite(6,127-stellgroesse);
//rechter Motor
analogWrite(5,127+stellgroesse);
//seriell senden:
if(stellgroesse<0)
{
senden = -stellgroesse;
Serial.write('-');
}
else
{
senden = stellgroesse;
Serial.write('+');
}
Serial.write(48+(senden/1000)%10);
Serial.write(48+(senden/100)%10);
Serial.write(48+(senden/10)%10);
Serial.write(48+(senden/1)%10);
Serial.write('\r');
Serial.write('\n');
}
Code 0-5: Sensor-geregelte Fahrt entlang einer Wand