ロボットアーム組み立てキットをArduinoで動かしてみた。
ArduinoのServoライブラリを使うと簡単にサーボモータを動かせる。
ロボットアームの土台部分(左右に回転)と腕部分(上下に回転)の制御にボタンを3つずつ(各リセットを含む)とボールのLEDをOn/Offするスイッチの計7つのスイッチを次の回路図のようにつないだ。
スケッチは次の通り。
#include <Servo.h> int pinServo1Left = 6; int pinServo1Reset = 7; int pinServo1Right = 2; int pinServo2Up = 3; int pinServo2Reset = 4; int pinServo2Down = 5; int pinLEDOnOff = 8; int pinLEDSwitch = 11; int sw1Left; int sw1Reset; int sw1Right; int prv1Left; int prv1Reset; int prv1Right; int sw2Up; int sw2Reset; int sw2Down; int prv2Up; int prv2Reset; int prv2Down; Servo servo1; Servo servo2; int val1 = 90; int val2 = 90; int prev1; int prev2; int swLED = LOW; void setup() { pinMode(pinServo1Left, INPUT); pinMode(pinServo1Reset, INPUT); pinMode(pinServo1Right, INPUT); pinMode(pinServo2Up, INPUT); pinMode(pinServo2Reset, INPUT); pinMode(pinServo2Down, INPUT); pinMode(pinLEDOnOff, INPUT); pinMode(pinLEDSwitch, OUTPUT); servo1.attach(9); servo2.attach(10); servo1.write(val1); servo2.write(val2); prev1 = val1; prev2 = val2; digitalWrite(pinLEDSwitch, swLED); } void loop() { sw1Reset = digitalRead(pinServo1Reset); if (sw1Reset == HIGH) { val1 = 90; } else { sw1Left = digitalRead(pinServo1Left); if (sw1Left == HIGH) { val1 += 1; if (val1 > 180) { val1 = 180; } } else { sw1Right = digitalRead(pinServo1Right); if (sw1Right == HIGH) { val1 -= 1; if (val1 < 0) { val1 = 0; } } } } sw2Reset = digitalRead(pinServo2Reset); if (sw2Reset == HIGH) { val2 = 90; } else { sw2Up = digitalRead(pinServo2Up); if (sw2Up == HIGH) { val2 -= 1; if (val2 < 0) { val2 = 0; } } else { sw2Down = digitalRead(pinServo2Down); if (sw2Down == HIGH) { val2 += 1; if (val2 > 180) { val2 = 180; } } } } int swTemp; swTemp = digitalRead(pinLEDOnOff); if (swTemp == HIGH) { if (swLED == HIGH) { swLED = LOW; } else { swLED = HIGH; } digitalWrite(pinLEDSwitch, swLED); delay(300); } if (val1 != prev1) { servo1.write(val1); prev1 = val1; } if (val2 != prev2) { servo2.write(val2); prev2 = val2; } delay(100); }
ボタンで上下左右にボールが向く。