AlphaBot: Joystick einlesen: 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 1: | Zeile 1: | ||
'''Autor:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]] | '''Autor:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]] | ||
== Inhalt des | == Inhalt des 8. Termins == | ||
* Wir | * Wir lese den Joystick ein. | ||
* Wir | * Wir entprellen die Joystick-Eingabe. | ||
* Wir | * Wir geben den Werte im sereiellen Monitor aus. | ||
== 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> | ||
// | /* Deklaration der Joystick Ports in Fahrtrichtung */ | ||
# | #define JOYSTICK_RECHTS A1 | ||
# | #define JOYSTICK_UNTEN A2 | ||
#define JOYSTICK_OBEN A3 | |||
#define JOYSTICK_EINGABE A4 | |||
#define JOYSTICK_LINKS A5 | |||
boolean JoystickFreigabe_bit = 1; /* Entprellen des Joysticks */ | |||
void | void setup(void) /* Einmalig ausgeführt */ | ||
{ | { | ||
pinMode( | /* Der Joystick wird initialisiert */ | ||
pinMode( | pinMode(JOYSTICK_OBEN, INPUT); | ||
digitalWrite(JOYSTICK_OBEN, HIGH); | |||
pinMode(JOYSTICK_UNTEN, INPUT); | |||
digitalWrite(JOYSTICK_UNTEN, HIGH); | |||
pinMode(JOYSTICK_LINKS, INPUT); | |||
digitalWrite(JOYSTICK_LINKS, HIGH); | |||
pinMode(JOYSTICK_RECHTS, INPUT); | |||
digitalWrite(JOYSTICK_RECHTS, HIGH); | |||
pinMode(JOYSTICK_EINGABE, INPUT); | |||
digitalWrite(JOYSTICK_EINGABE, HIGH); | |||
Serial.begin(9600); // Start des Seriellen Monitors mit 9600 Baude | |||
} | } | ||
void loop(void) /* Zyklische Abfrage */ | |||
{ | { | ||
/* Abfrage des Joysticks */ | |||
delay(1); | |||
delay( | |||
if((digitalRead(JOYSTICK_OBEN) == LOW) || (digitalRead(JOYSTICK_UNTEN) == LOW) || (digitalRead(JOYSTICK_LINKS) == LOW) || (digitalRead(JOYSTICK_RECHTS) == LOW) || (digitalRead(JOYSTICK_EINGABE) == LOW)) | |||
{ | { | ||
if(JoystickFreigabe_bit == true) | |||
{ | |||
delay(10); //10 ms warten - Taster entprellen | |||
if((digitalRead(JOYSTICK_OBEN) == LOW) || (digitalRead(JOYSTICK_UNTEN) == LOW) || (digitalRead(JOYSTICK_LINKS) == LOW) || (digitalRead(JOYSTICK_RECHTS) == LOW) || (digitalRead(JOYSTICK_EINGABE) == LOW)) | |||
{ | |||
JoystickFreigabe_bit = false; | |||
} | if(digitalRead(JOYSTICK_OBEN) == LOW){ | ||
Serial.println("Joystick: OBEN gedrückt"); | |||
} | |||
else if(digitalRead(JOYSTICK_UNTEN) == LOW){ | |||
Serial.println("Joystick: UNTEN gedrückt"); | |||
} | |||
else if(digitalRead(JOYSTICK_LINKS) == LOW){ | |||
Serial.println("Joystick: LINKS gedrückt"); | |||
} | |||
else if(digitalRead(JOYSTICK_RECHTS) == LOW){ | |||
Serial.println("Joystick: RECHTS gedrückt"); | |||
} | |||
else if(digitalRead(JOYSTICK_EINGABE) == LOW){ | |||
Serial.println("Joystick: EINGABE gedrückt"); | |||
} | |||
} | |||
} | |||
} | |||
else { | |||
JoystickFreigabe_bit = true; // Taster wieder freigeben | |||
} | |||
} | } | ||
</pre> | </pre> |
Version vom 8. Mai 2022, 07:48 Uhr
Autor: Prof. Dr.-Ing. Schneider
Inhalt des 8. Termins
- Wir lese den Joystick ein.
- Wir entprellen die Joystick-Eingabe.
- Wir geben den Werte im sereiellen Monitor aus.
Quelltext
/* Deklaration der Joystick Ports in Fahrtrichtung */ #define JOYSTICK_RECHTS A1 #define JOYSTICK_UNTEN A2 #define JOYSTICK_OBEN A3 #define JOYSTICK_EINGABE A4 #define JOYSTICK_LINKS A5 boolean JoystickFreigabe_bit = 1; /* Entprellen des Joysticks */ void setup(void) /* Einmalig ausgeführt */ { /* Der Joystick wird initialisiert */ pinMode(JOYSTICK_OBEN, INPUT); digitalWrite(JOYSTICK_OBEN, HIGH); pinMode(JOYSTICK_UNTEN, INPUT); digitalWrite(JOYSTICK_UNTEN, HIGH); pinMode(JOYSTICK_LINKS, INPUT); digitalWrite(JOYSTICK_LINKS, HIGH); pinMode(JOYSTICK_RECHTS, INPUT); digitalWrite(JOYSTICK_RECHTS, HIGH); pinMode(JOYSTICK_EINGABE, INPUT); digitalWrite(JOYSTICK_EINGABE, HIGH); Serial.begin(9600); // Start des Seriellen Monitors mit 9600 Baude } void loop(void) /* Zyklische Abfrage */ { /* Abfrage des Joysticks */ delay(1); if((digitalRead(JOYSTICK_OBEN) == LOW) || (digitalRead(JOYSTICK_UNTEN) == LOW) || (digitalRead(JOYSTICK_LINKS) == LOW) || (digitalRead(JOYSTICK_RECHTS) == LOW) || (digitalRead(JOYSTICK_EINGABE) == LOW)) { if(JoystickFreigabe_bit == true) { delay(10); //10 ms warten - Taster entprellen if((digitalRead(JOYSTICK_OBEN) == LOW) || (digitalRead(JOYSTICK_UNTEN) == LOW) || (digitalRead(JOYSTICK_LINKS) == LOW) || (digitalRead(JOYSTICK_RECHTS) == LOW) || (digitalRead(JOYSTICK_EINGABE) == LOW)) { JoystickFreigabe_bit = false; if(digitalRead(JOYSTICK_OBEN) == LOW){ Serial.println("Joystick: OBEN gedrückt"); } else if(digitalRead(JOYSTICK_UNTEN) == LOW){ Serial.println("Joystick: UNTEN gedrückt"); } else if(digitalRead(JOYSTICK_LINKS) == LOW){ Serial.println("Joystick: LINKS gedrückt"); } else if(digitalRead(JOYSTICK_RECHTS) == LOW){ Serial.println("Joystick: RECHTS gedrückt"); } else if(digitalRead(JOYSTICK_EINGABE) == LOW){ Serial.println("Joystick: EINGABE gedrückt"); } } } } else { JoystickFreigabe_bit = true; // Taster wieder freigeben } }
Hausaufgaben bis zum 8. Termin
- Suche mit dem Ultraschall den Bereich 0°-180° vor dem AlphaBot ab.
- Fahre auf das nächstgelegene Ziel im Sichtbereich zu.
- Stoppe 10 cm vor dem Ziel.
Musterlösung
→ zurück zum Hauptartikel: Projekt Alf