AlphaBot: Ultraschall Notbremse: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Die Seite wurde neu angelegt: „'''Autor:''' Prof. Dr.-Ing. Schneider == Inhalt des siebten Termins == * Wir haben die Servoansteuerung wiederholt. * Wir haben…“ |
Keine Bearbeitungszusammenfassung |
||
| Zeile 8: | Zeile 8: | ||
== Quelltext == | == Quelltext == | ||
<div style="width:1200px; height:300px; overflow:auto; border: 2px solid #088"> | <div style="width:1200px; height:300px; overflow:auto; border: 2px solid #088"> | ||
<pre> | <pre> | ||
Version vom 28. April 2022, 14:48 Uhr
Autor: Prof. Dr.-Ing. Schneider
Inhalt des siebten Termins
- Wir haben die Servoansteuerung wiederholt.
- Wir haben den Ultraschall-Sensor mittig ausgerichtet.
- Wir haben Abstandswerte gemessen.
- Wir sind vorwärts gefahren und haben 20 cm eine Notbremsung gemacht.
Quelltext
// Bibliothek einbinden
#include "AlphaBot.h"
#include <Servo.h>
// KONSTANTEN deklarieren
const byte PORT_ENC_L=2; // Die linke Lichtschranke (CNTL) liegt an Arduino D2
const byte PORT_ENC_R=3; // Die rechte Lichtschranke (CNTR) liegt an Arduino D3
const byte ANZAHL_INCREMENTE=40; // Die Encoderscheibe hat 20 Löcher und somit 40 Zustände
const int TRIG = 11; // US Trigger an D11
const int ECHO = 12; // US Echo an D12
const int nServoPort = 9; // Der Servo liegt auf D9
// Instanzen erzeugen
AlphaBot Alf = AlphaBot(); // Instanz des AlphaBot erzeugen
Servo AlfServo; // Servo Instanz
void initUltraschall()
{
pinMode(ECHO, INPUT); // Define the ultrasonic echo input pin
pinMode(TRIG, OUTPUT); // Define the ultrasonic trigger input pin
}
float messeUSAbstand() // Abstand in cm
{
float USAbstand = 0; // Rückgabewert initialisieren
digitalWrite(TRIG, LOW); // setze Trigger auf LOW für 2μs
delayMicroseconds(2);
digitalWrite(TRIG, HIGH); // setze Trigger auf HIGH für mind. 10 us
delayMicroseconds(10);
digitalWrite(TRIG, LOW); // setze Trigger auf LOW
float fSignalLaufzeit = pulseIn(ECHO, HIGH); // Messung der Singnallaufzeit des Impulses
USAbstand = fSignalLaufzeit/58; // Umrechnung Laufzeit in s in Abstand in cm
//Y m =(X s * 344)/ 2;
//X s =( 2 * Y m)/ 344;
//X s = 0.0058 * Y m;
//cm = us /58
return USAbstand; // Rückgabewert
}
void setup() // Einmalige Systeminitialisierung
{
initUltraschall(); // US initialisieren
AlfServo.attach(nServoPort); // Servo verbinden
Serial.begin(9600); // Serieller Monitor mit 9600 Baud
AlfServo.write(90); // Der Servo soll sich an die Mitte drehen
delay(15);
Alf.MotorRun(80,80); // Alf fährt vorwärts; Leistung 100
}
void loop() // Main Schleife
{
float USAbstand =0;
USAbstand = messeUSAbstand(); // US Abstand messen
Serial.println(USAbstand);
if (USAbstand<20){
Serial.println("Notbremse");
Alf.Brake(); // Anhalten
}
}
-->
Hausaufgaben bis zum 7. Termin
In den Schulferien (14.04.22, 21.04.22) machen wir eine Osterpause! Ihr habt natürlich keine Hausaufgaben.
→ zurück zum Hauptartikel: Projekt Alf