/* ===================================
* Joystick (Sub)
*
* by computerarchiv-muenchen.de
*
* http://demo13.makercafe-muenchen.de
* ===================================
*/
#define SERVO_X 11 // PWM-Pin für Servo X
#define SERVO_Y 10 // PWM-Pin für Servo Y
#define JOYSTICK_X A0 // Pin für Joystick-X-Achse
#define JOYSTICK_Y A1 // Pin für Joystick-Y-Achse
#include <LiquidCrystal_I2C.h> // Funktionsbibliothek für I2C-LCD-Anzeige einbinden
LiquidCrystal_I2C LCD( 0x27, 16, 2 ); // LCD-Objekt aus Funktionsbibliothek für I2C-LCD-Anzeige erstellen
#include <Servo.h> // Funktionsbibliothek für Servo einbinden
Servo meinServoX; // erstes Servo-Objekt aus Funktionsbibliothek für Servo erstellen
Servo meinServoY; // zweites Servo-Objekt aus Funktionsbibliothek für Servo erstellen
void setup() {
LCD.init(); // LCD initialisieren
LCD.backlight(); // Hintergrundbeleuchtung an
LCD.print( "Hallo Welt !" ); // Text auf LCD ausgeben
meinServoX.attach( SERVO_X ); // ersten Servo initialisieren
meinServoY.attach( SERVO_Y ); // zweiten Servo initialisieren
}
void loop() {
int servoX = zahlenWert( JOYSTICK_X ); // Servo-Position für ersten Servo aus X-Wert berechnen
meinServoX.write( servoX ); // ersten Servo in Servo-Position bringen
anzeigen( 'X', servoX ); // Zahlenwert anzeigen
int servoY = zahlenWert( JOYSTICK_Y ); // Servo-Position für ersten Servo aus X-Wert berechnen
meinServoY.write( servoY ); // ersten Servo in Servo-Position bringen
anzeigen( 'Y', servoY ); // Zahlenwert anzeigen
}
int zahlenWert( int anschluss ) {
int joystick = analogRead( anschluss ); // Potentiometer-Wert für X-Wert auslesen
int zahl = map( joystick, 0, 1023, 0, 180 ); // Servo-Position für ersten Servo aus X-Wert berechnen
return zahl;
}
void anzeigen( char buchstabe, int wert ) {
int spalte; // Spalten-Variable deklarieren
switch ( buchstabe ) { // wenn Buchstabe
case 'X': // gleich X
spalte = 0; // dann Spalten-Inhalt mit 0 belegen
break; // nicht weiter prüfen
default: // ansonsten
spalte = 9; // Spalten-Inhalt mit 9 belegen
break; // nicht weiter prüfen
}
LCD.setCursor( spalte, 1 ); // Text-Position bestimmen
LCD.print( buchstabe ); // Buchstaben ausgeben
LCD.print( ": " ); // Text ausgeben
LCD.print( wert ); // Wert ausgeben
LCD.print( " " ); // alte, vorhandene Ziffern mit Leerzeichen überschreiben
}