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…“ |
|||
| (4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| 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 setup(void) /* Einmalig ausgeführt */ | |||
void | |||
{ | { | ||
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); | |||
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> | ||
</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