ロボットアーム組み立てキットを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);
}
ボタンで上下左右にボールが向く。

