Skip to content
Snippets Groups Projects

Nacharbeit-kamao

1 file
+ 55
14
Compare changes
  • Side-by-side
  • Inline
@@ -9,13 +9,13 @@
\|_________|
Name:
- Name des Skripts
- Nacharbeit von Kaiming Mao
Description:
- Beschrebiung was dieses Skript macht
- Entcode und Ultraschalsensor
Author:
- Namen der Autoren
- Kaiming Mao
**************************************************/
@@ -23,7 +23,7 @@
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 WIFI_COMMUNICATION
@@ -48,14 +48,19 @@
#include "basic_functions.h"
#include "custom_config.h"
#include "custom_functions.h"
#include <Encoder.h>
/* *************** *
Initialisierung
* *************** */
// Encoder-Pins definieren (Beispiel: Pins 5 und 6)
Encoder myEnc(5, 6);
long oldPosition = -999;
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
Serial.begin(115200);
#endif
@@ -75,7 +80,7 @@ void setup() {
left_strip.init();
right_strip.init();
// Pin deklaration der Ultraschallsensoren
// Pin-Deklaration der Ultraschallsensoren
pinMode(TRIGF, OUTPUT);
pinMode(TRIGB, OUTPUT);
pinMode(ECHOF, INPUT);
@@ -94,31 +99,67 @@ void setup() {
// Initialisierung abgeschlossen
_println_("Ready!");
// buzzer_signal(350, 2, 100); //tone() und IR-Empfangen läuft nicht gleichzeitig!!!!
// Heranfahren an Schranke
drive_light_on();
ServoSteer.turn(STEER_START_POS);
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);
readUS();
}
Motor.stop();
communication(); // Kommunikation-Funktion (IR+NRF)
printCourseTable(); // Ausgabe der Empfangenen Zustandstabelle
printCourseTable(); // Ausgabe der empfangenen Zustandstabelle
set_led_color(0, 100, 0);
all_led_blink(2, 200);
delay(3000); // Warten bis Schranke offen ist
}
/* ************* *
Hauptprogramm
* ************* */
void loop() {
drive_course(); //Hier wird nur diese Funktion ausgeführt werden --> Erweitern Sie diese um ihren Funktionen!
//Bearbeiten Sie die drive_course Funktion unter custom_functions und erweitern Sie diese an der gekennzeichneten Stelle um die Parkfunktionen
// Encoder-Werte auslesen und ausgeben
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