Mein erster Roboterarm

Mit den auf LEGO Technic Verbinder umgebauten Servos und dem Arduino Uno kann es nun losgehen mit der Bastelei. Zwischenzeitlich habe ich meinem Sohn seine LEGO Bauteile zurückgegeben und mir eine erste Auswahl gebrauchter Steine, Arme und Verbinder aus der Grabbelkiste gekauft. Für EUR 1,10. Da kann kein Aluprofil und auch kein 3D Drucker mithalten.

 

Mit den Servos und den Steinen habe ich einen Arm mit zwei Gelenken zusammen gesteckt. Die Servos laufen jeweils von 0° bis 180° und werden im ersten Schritt über zwei Potis angesteuert. Beide Potis zwischen 5V und Masse, Schleifer auf Analog0 bzw. 1. Die eingelesenen Werte von 0…1023 werden ganz simpel auf den Drehwinkel 0…180° umgerechnet und dann direkt auf die Servos geschrieben. Fertig :) Ach so: Das LCD von neulich ist zur Anzeige der Servo-Winkel auch wieder an Bord.

Foto

#include <LiquidCrystal.h>
#include <Servo.h>

Servo servo0;
Servo servo1;             

int analogPin0 = 0;
int analogPin1 = 1;

float val0 = 0;
float val1 = 0;
int val0i = 0;
int val1i = 0;

LiquidCrystal lcd(12, 13, 8, 7, 4, 2);

void setup() {
  //LCD einrichten
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("Pin0");
  lcd.setCursor(0, 1);
  lcd.print("Pin1");
  //Servos initialisieren
  servo0.attach(9);
  servo1.attach(10);
}

void loop() {
  lcd.setCursor(5, 0);
  val0 = analogRead(analogPin0);
  //könnte man auch mit map() machen
  val0i = int((val0/1023)*180);
  lcd.print(val0i);
  lcd.print("   ");
  servo0.write(val0i);

  lcd.setCursor(5, 1);
  val1 = analogRead(analogPin1);
  //könnte man auch mit map() machen
  val1i = int((val1/1023)*180);
  lcd.print(val1i);
  lcd.print("   ");
  servo1.write(val1i);
}

Version 1.1 kommt dann mit nur noch einem Poti aus, der obere Arm wird in Abhängigkeit des unteren Arms so verstellt, dass er immer etwa waagerecht ist.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.