Banner Ausblenden
Kleines Logo

Willkommen auf PSI-Online

Sie befinden sich in: Unterrichtsangebote Fächer Fachbereich III Informatik Arduino Roboter Servosteuerung mit Joystick

Servosteuerung mit Joystick

Beschreibung und Ziel :

 


Ziel des Projekts ist es, einen Servo mit einem Joystick zu kontrollieren.

Die Ausrichtung (x und y) des Joysticks soll dabei auf dem LCD Display dargestellt werden.

Eine solche Schaltung kann man zum Beispiel zu einem Robotergreifarm, Bagger Schaufeln oder sonstigem

weiterverwenden.

 

Dieses Material wird benötigt :


Neben dem Arduino,

   - 1 LCD Display

   - 1 Joystick

   - 1 Servo

   - mehrere Kabel

   - (1 Potentiometer)

   - 200 Ohm Widerstand

 

Aufbau :

 

Der Aufbau sieht wie folgt aus:

 

Steckplatine.png

 

 

Code :


Der Code enthält mehrere Tabs für die verschiedenen Funktionen der Bauteile und um

den Code übersichtlicher zu gestalten.

 

 

Joystick_und_Servo.ino

 

 

#include "LCD_Display.h"
#include "Joystick1.h"
#include "Servo.h"
void setup() {
  LCD_setup();
  Servo_Setup();
  joystick_setup();
}
void loop() {
  LCD_loop();
  Servo_loop();
  joystick_loop();
  joystick_befehle();
}
 
 

LCD_Display.h

 

 

#include
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void LCD_setup()
{
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("hi");
  lcd.setCursor(0, 1);
  lcd.print("Robotik");
}
void LCD_loop() {
}

 

Servo.h

 

#include
Servo servoblau;

void Servo_Setup() {
  servoblau.attach(9);
}
void Servo_loop() {
servoblau.write(yMap);
}
 
 
Joystick1.h
 
 
 
const int xPin = A0;
int x = 0;
const int yPin = A1;
int y = 0;
const int btPin = 7;
int z = 0;
int yMap = 0;
void joystick_setup()
{
  pinMode(btPin, INPUT);
  digitalWrite(btPin, HIGH);
  Serial.begin(9600);
}
 
 
int MapY(double cc)
{
  double servoW;
  if (cc >= 500 & cc <= 520 ){
    servoW = 90;
  } else if (cc < 500) {
    servoW = (500-cc)/500 * 90 + 90;
  } else if (cc > 509) {
    servoW = - (cc-509)/(1120-515) * 107 + 90;
  }
  return (int) servoW;
}

void joystick_loop()
{
  Serial.print("X: ");
  x = analogRead(xPin);
  Serial.print(x);
  Serial.print("\tY: ");
  y = analogRead(yPin);
  yMap = MapY(y);
  Serial.print(y);
  Serial.print("\tZ: ");
  z = digitalRead(btPin);
  Serial.print(z);
 
 
 
  delay(50);
}
void joystick_befehle() {

  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("y:");
  lcd.setCursor(4, 0);
  lcd.print(y);
  lcd.setCursor(0, 1);
  lcd.print("x:");
  lcd.setCursor(4, 1);
  lcd.print(x);
 
  lcd.setCursor(10, 0);
  lcd.print("Grad:");
  lcd.setCursor(10, 1);
  lcd.print(yMap);
}
 

 

Probleme hat uns der Servo gemacht, mit den restlichen Bauteilen kann ein einziger Arduino nicht den Servo mitversorgen.

Wir haben also einen 2. Arduino gebraucht, den wir dann als Stromquelle für den Servo benutzt haben.

 

 

Erstellt: Jan-Niklas Schrimpf (14.02.2017) Letzte Änderung: Jannis Engemann (29.06.2017)