AlphaBot: Joystick einlesen: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Keine Bearbeitungszusammenfassung |
|||
| (3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 73: | Zeile 73: | ||
</div> | </div> | ||
== Hausaufgaben bis zum | == 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 == | == 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