Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
- Committer:
- oehlemar
- Date:
- 2020-02-24
- Revision:
- 0:7ee4c6416e08
File content as of revision 0:7ee4c6416e08:
#include "mbed.h"
#include "IRSensor.h"
#include "Controller.h"
#include "LowpassFilter.h"
DigitalOut myled(LED1);
int main()
{
DigitalOut led0(PD_4);
DigitalOut led1(PD_3);
DigitalOut led2(PD_6);
DigitalOut led3(PD_2);
DigitalOut led4(PD_7);
DigitalOut led5(PD_5);
AnalogIn distance(PA_0); // Kreieren der Ein- und Ausgangsobjekte
DigitalOut enable(PG_1);
DigitalOut bit0(PF_0);
DigitalOut bit1(PF_1);
DigitalOut bit2(PF_2);
IRSensor irSensor0(distance, bit0, bit1, bit2, 0); // Objekte kreieren
IRSensor irSensor1(distance, bit0, bit1, bit2, 1);
IRSensor irSensor2(distance, bit0, bit1, bit2, 2);
IRSensor irSensor3(distance, bit0, bit1, bit2, 3);
IRSensor irSensor4(distance, bit0, bit1, bit2, 4);
IRSensor irSensor5(distance, bit0, bit1, bit2, 5);
enable = 1; // schaltet die Sensoren ein
DigitalOut enableMotorDriver(PG_0);
DigitalIn motorDriverFault(PD_1);
DigitalIn motorDriverWarning(PD_0);
PwmOut pwmLeft(PF_9);
PwmOut pwmRight(PF_8);
EncoderCounter counterLeft(PD_12, PD_13);
EncoderCounter counterRight(PB_4, PC_7);
Controller controller(pwmLeft, pwmRight, counterLeft, counterRight);
while(1) {
/*
led0 = 1; // LED is ON
led1 = 0;
led2 = 0;
led3 = 0;
led4 = 0;
led5 = 0;
wait(0.2); // 200 ms
led0 = 0; // LED is ON
led1 = 1;
led2 = 0;
led3 = 0;
led4 = 0;
led5 = 0;
wait(0.2); // 200 ms
led0 = 0; // LED is ON
led1 = 0;
led2 = 1;
led3 = 0;
led4 = 0;
led5 = 0;
wait(0.2); // 200 ms
led0 = 0; // LED is ON
led1 = 0;
led2 = 0;
led3 = 1;
led4 = 0;
led5 = 0;
wait(0.2); // 200 ms
led0 = 0; // LED is ON
led1 = 0;
led2 = 0;
led3 = 0;
led4 = 1;
led5 = 0;
wait(0.2); // 200 ms
led0 = 0; // LED is ON
led1 = 0;
led2 = 0;
led3 = 0;
led4 = 0;
led5 = 1;
wait(0.2); // 200 ms
AnalogIn distance(PA_0); // Kreieren der Ein- und Ausgangsobjekte
DigitalOut enable(PG_1);
DigitalOut bit0(PF_0);
DigitalOut bit1(PF_1);
DigitalOut bit2(PF_2);
enable = 1; // schaltet die Sensoren ein
bit0 = 0; // Wahl des Sensors mit dem Multiplexer (Sensor hinten)
bit1 = 0;
bit2 = 0;
float d = -0.58f*sqrt(distance)+0.58f; // Lesen der Distanz in [m]
printf("Distance hinten: %f \r \n",d);
bit0 = 1; // Wahl des Sensors mit dem Multiplexer (Sensor hinten)
bit1 = 0;
bit2 = 0;
d = -0.58f*sqrt(distance)+0.58f; // Lesen der Distanz in [m]
printf("Distance hinten-links: %f \r \n",d);
bit0 = 0; // Wahl des Sensors mit dem Multiplexer (Sensor hinten)
bit1 = 1;
bit2 = 0;
d = -0.58f*sqrt(distance)+0.58f; // Lesen der Distanz in [m]
printf("Distance vorne-links: %f \r \n",d);
bit0 = 0; // Wahl des Sensors mit dem Multiplexer (Sensor hinten)
bit1 = 0;
bit2 = 1;
d = -0.58f*sqrt(distance)+0.58f; // Lesen der Distanz in [m]
printf("Distance vorne-rechts: %f \r \n",d);
bit0 = 1; // Wahl des Sensors mit dem Multiplexer (Sensor hinten)
bit1 = 0;
bit2 = 1;
d = -0.58f*sqrt(distance)+0.58f; // Lesen der Distanz in [m]
printf("Distance hinten-rechts: %f \r \n",d);
bit0 = 1; // Wahl des Sensors mit dem Multiplexer (Sensor hinten)
bit1 = 1;
bit2 = 0;
d = -0.58f*sqrt(distance)+0.58f; // Lesen der Distanz in [m]
printf("Distance vorne: %f \r \n",d);
*/
float distance0 = irSensor0.read(); // gibt die Distanz in [m] zurueck
float distance1 = irSensor1.read();
float distance2 = irSensor2.read();
float distance3 = irSensor3.read();
float distance4 = irSensor4.read();
float distance5 = irSensor5.read();
printf("Distance hinten: %f \r \n", distance0);
printf("Distance hinten-links: %f \r \n", distance1);
printf("Distance vorne-links: %f \r \n", distance2);
printf("Distance vorne: %f \r \n", distance3);
printf("Distance vorne-rechts: %f \r \n", distance4);
printf("Distance hinten-rechts: %f \r \n", distance5);
if (distance0 <= 0.1) { led0=1;
}else {led0=0;}
if (distance1 <= 0.1) { led1=1;
}else {led1=0;}
if (distance2 <= 0.1) { led2=1;
}else {led2=0;}
if (distance3 <= 0.1) { led3=1;
}else {led3=0;}
if (distance4 <= 0.1) { led4=1;
}else {led4=0;}
if (distance5 <= 0.1) { led5=1;
}else {led5=0;}
/*
pwmLeft.period(0.00005); // Setzt die Periode auf 50 μs
pwmRight.period(0.00005);
pwmLeft = 0.5; // Setzt die Duty-Cycle auf 50%
pwmRight = 0.5;
*/
enableMotorDriver = 1; // Schaltet den Leistungstreiber ein
//pwmLeft = 0.7; // Duty-Cycle von 70%
//pwmRight = 0.3;
controller.setDesiredSpeedLeft(100.0); // Drehzahl in [rpm]
controller.setDesiredSpeedRight(-100.0);
wait(0.2);
}
}