AlphaBot: Joystick einlesen: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Zeile 82: | Zeile 82: | ||
== Musterlösung == | == Musterlösung == | ||
* [[ | * [[Hausaufgaben8_Tipp_1|Tipp 1]] | ||
* [[ | * [[Hausaufgaben8_Tipp_2|Tipp 2]] | ||
* [[ | * [[Hausaufgaben8_Lösung|Lösung]] | ||
---- | ---- | ||
→ zurück zum Hauptartikel: [[Projekt_Alf_–_Mobile_Robotik|Projekt Alf]] | → zurück zum Hauptartikel: [[Projekt_Alf_–_Mobile_Robotik|Projekt Alf]] |
Aktuelle Version vom 8. Mai 2022, 08:24 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 9. Termin
- Steuert den US-Servo mit dem Joystick im Bereich 0°-180° an.
- LINKS: Drehung nach Links (180°).
- RECHTS: Drehung nach Rechts (0°).
- EINGABE: Grehung auf die Mitte (90°).
Hinweis: Ursprünglich war die Aufgabe die Antriebsmotoren zu steuern. Leider habe ich festgestellt, dass diese dieselben analogen IO-Pins nutzen (A1-A5). Das kann leider nicht zusammen funktionieren.
Musterlösung
→ zurück zum Hauptartikel: Projekt Alf