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