モータ制御
モータの種類
・普通のモータ(ミニ四駆など)
・サーボモータ
・ステッピングモータ(3Dプリンタ制御など)
使うもの
Arduino Uno
緑の基板(オリジナル)
サーボ(SG90)
USBケーブル
竹ひご&ビーズ
輪ゴム
基板の取り付け
向きと位置を写真参考に差し込む。
Arduinoに端子の切れ目があるので、よく見てください。
サーボモータの取り付け
上から
オレンジ(Signal)
赤(+5V)
茶(GND,-)
輪ゴムで固定
サーボ ライブラリのインストール
Arduinoのメニュー>スケッチ>ライブラリをインクルード>「ライブラリを管理」からservoで検索。
ボードとportの設定
Arduinoのメニュー>ツール>ボード>Arduino Uno
Arduinoのメニュー>ツール>シリアルポート>/cu.usbmodem14xxxx
コード
arduino
#include <Servo.h>
Servo myservo;
void setup() {
myservo.attach(9);//9番使う
}
void loop() {
myservo.write(60);//60度に設定
delay(100);
myservo.write(80);//80度に設定
delay(100);
}
myservo.write(角度0~180);
delay(待ち時間ミリ秒)
※モータは指定の角度に達するまでに時間がかかる。到達までに、次の角度指定があると、たどり着かないうちに次の角度へ回ろうとする点に注意。100msでは早すぎることもあるし、おそすぎることもあるので、調整しましょう。
追加
自分のビートを刻みましょう。
可変抵抗値を読み取って、サーボを動かす(Arduino内で完結)
アナログ0に接続された可変抵抗の値を読み取り、レンジを0~180に変換します。
#include <Servo.h>
Servo myservo;
void setup() {
myservo.attach(9);
}
void loop() {
int R = analogRead(A0);//可変抵抗値を得る
int conv_R = map(R, 0,1023, 0,180);//可変抵抗値を角度に変換する
myservo.write(conv_R);
delay(10);
}
Processingからサーボモータを制御する
import processing.serial.*;
Serial port;
void setup() {
size(180, 180);
port = new Serial(this, "/dev/cu.usbmodem14201", 9600);//port設定は各自で変更
}
void draw() {
}
void mouseMoved(){
byte data = (byte)mouseX;
port.write(data); //送信
}
#include <Servo.h>
Servo myservo;
void setup() {
myservo.attach(9);
Serial.begin(9600);
}
void loop() {
if (Serial.available() >= 1 ) {
int R = Serial.read();
myservo.write(R);
}
delay(10);
}