Skip to content
Snippets Groups Projects

Nacharbeit-kamao

1 file
+ 55
14
Compare changes
  • Side-by-side
  • Inline
@@ -9,13 +9,13 @@
@@ -9,13 +9,13 @@
\|_________|
\|_________|
Name:
Name:
- Name des Skripts
- Nacharbeit von Kaiming Mao
Description:
Description:
- Beschrebiung was dieses Skript macht
- Entcode und Ultraschalsensor
Author:
Author:
- Namen der Autoren
- Kaiming Mao
**************************************************/
**************************************************/
@@ -23,7 +23,7 @@
@@ -23,7 +23,7 @@
Kommunikation des Arduino Megas
Kommunikation des Arduino Megas
* ******************************* */
* ******************************* */
//Kommunikation über die USB-Schnittstelle (Serial) oder über WiFi (ESP32 Modul)?
// Kommunikation über die USB-Schnittstelle (Serial) oder über WiFi (ESP32 Modul)?
#define SERIAL_COMMUNICATION
#define SERIAL_COMMUNICATION
// #define WIFI_COMMUNICATION
// #define WIFI_COMMUNICATION
@@ -48,14 +48,19 @@
@@ -48,14 +48,19 @@
#include "basic_functions.h"
#include "basic_functions.h"
#include "custom_config.h"
#include "custom_config.h"
#include "custom_functions.h"
#include "custom_functions.h"
#include <Encoder.h>
/* *************** *
/* *************** *
Initialisierung
Initialisierung
* *************** */
* *************** */
 
// Encoder-Pins definieren (Beispiel: Pins 5 und 6)
 
Encoder myEnc(5, 6);
 
 
long oldPosition = -999;
 
void setup() {
void setup() {
// Hier wird entschieden wie die Serielle Kommunikation vom Mega erfolgen soll.
// Hier wird entschieden wie die serielle Kommunikation vom Mega erfolgen soll.
#ifdef SERIAL_COMMUNICATION
#ifdef SERIAL_COMMUNICATION
Serial.begin(115200);
Serial.begin(115200);
#endif
#endif
@@ -75,7 +80,7 @@ void setup() {
@@ -75,7 +80,7 @@ void setup() {
left_strip.init();
left_strip.init();
right_strip.init();
right_strip.init();
// Pin deklaration der Ultraschallsensoren
// Pin-Deklaration der Ultraschallsensoren
pinMode(TRIGF, OUTPUT);
pinMode(TRIGF, OUTPUT);
pinMode(TRIGB, OUTPUT);
pinMode(TRIGB, OUTPUT);
pinMode(ECHOF, INPUT);
pinMode(ECHOF, INPUT);
@@ -94,31 +99,67 @@ void setup() {
@@ -94,31 +99,67 @@ void setup() {
// Initialisierung abgeschlossen
// Initialisierung abgeschlossen
_println_("Ready!");
_println_("Ready!");
// buzzer_signal(350, 2, 100); //tone() und IR-Empfangen läuft nicht gleichzeitig!!!!
// Heranfahren an Schranke
// Heranfahren an Schranke
drive_light_on();
drive_light_on();
ServoSteer.turn(STEER_START_POS);
ServoSteer.turn(STEER_START_POS);
readUS();
readUS();
while (US_distance_f >= 100) { //Fahre bis die Schranke 100 mm entfernt
while (US_distance_f >= 100) { // Fahre bis die Schranke 100 mm entfernt ist
Motor.drive_forward(50);
Motor.drive_forward(50);
readUS();
readUS();
}
}
Motor.stop();
Motor.stop();
communication(); // Kommunikation-Funktion (IR+NRF)
communication(); // Kommunikation-Funktion (IR+NRF)
printCourseTable(); // Ausgabe der Empfangenen Zustandstabelle
printCourseTable(); // Ausgabe der empfangenen Zustandstabelle
set_led_color(0, 100, 0);
set_led_color(0, 100, 0);
all_led_blink(2, 200);
all_led_blink(2, 200);
delay(3000); // Warten bis Schranke offen ist
delay(3000); // Warten bis Schranke offen ist
}
}
/* ************* *
/* ************* *
Hauptprogramm
Hauptprogramm
* ************* */
* ************* */
void loop() {
void loop() {
drive_course(); //Hier wird nur diese Funktion ausgeführt werden --> Erweitern Sie diese um ihren Funktionen!
// Encoder-Werte auslesen und ausgeben
//Bearbeiten Sie die drive_course Funktion unter custom_functions und erweitern Sie diese an der gekennzeichneten Stelle um die Parkfunktionen
readEncoder();
 
 
// Hauptprogrammfunktionalitäten
 
drive_course(); // Hier wird nur diese Funktion ausgeführt --> Erweitern Sie diese um Ihre Funktionen!
}
}
 
 
// Funktion zum Lesen der Encoder-Werte
 
void readEncoder() {
 
long newPosition = myEnc.read();
 
if (newPosition != oldPosition) {
 
oldPosition = newPosition;
 
_print_("Encoder Position: ");
 
_println_(newPosition);
 
}
 
}
 
 
// Funktion zum Lesen der Ultraschallsensorwerte
 
void readUS() {
 
// Trig-Impuls erzeugen
 
digitalWrite(TRIGF, LOW);
 
delayMicroseconds(2);
 
digitalWrite(TRIGF, HIGH);
 
delayMicroseconds(10);
 
digitalWrite(TRIGF, LOW);
 
 
// Echozeit messen
 
long durationF = pulseIn(ECHOF, HIGH);
 
long durationB = pulseIn(ECHOB, HIGH);
 
 
// Abstand berechnen
 
US_distance_f = durationF * 0.034 / 2; // Abstand vorne
 
US_distance_b = durationB * 0.034 / 2; // Abstand hinten
 
 
_print_("Ultraschall Vorne: ");
 
_print_(US_distance_f);
 
_println_(" cm");
 
_print_("Ultraschall Hinten: ");
 
_print_(US_distance_b);
 
_println_(" cm");
 
}
 
\ No newline at end of file
Loading