久しぶりにSG90サーボを動かした。
一からお勉強し直しです。
まずはPWMでパルス発生をやってみた。
ちょっと変なことするとすぐにCOMが乗ってるUSBポートがおかしくなるんで困った。
PCリブートしか解消できなくて。
昔と違って今回は「Servo.h」が標準でライブラリに在るのでそれを使う。
サーボは1個なので5Vから給電
ボリュームは3Vに結んだので、A0からの取得値は0..680となった。(もう一箇所5Vあった)
MAP関数で角度0..180に変換させる。
attach()関数は、最小値、最大値も指定することもできる。
無指定だと544 2400だそうです。
writeMicroseconds( )関数は、PWMのマイクロセコンド単位でパルス幅を指定できる。
参考 https://spiceman.jp/arduino-servo-library/
スライド ポテンショメータ(10kΩ)にも繋げてみた。
ボリュームの軸を回すに比べて楽だなぁ
PWMでは変な動作が多かったが今回は無問題で動く。
ライブラリ内部で解決されてるのかな??
まあ、どうでもいいや
お城で信号を覗いてみようか・・・
このク○互換ボード
純正ボードではIOREFとなっているピンを5Vと印刷してやがった。
上の写真がなぜか動いていたのは奇跡だ。
以降7月30日までこれに気づかずこのピンを使っていたことがある。
氏にやがれC国
-------------
本日はバスユニット交換初日
台座も含めて完全撤去です。
部屋から出にくいし一日中お篭り
ちょっと気疲れ
-------ボリュームに従ってサーボホーンを回転させる--------
結線
5VとGNDにサーボ電源 Pin9にサーボ信号線
3.3VとGNDに可変抵抗5kオーム 中間電圧はA0ピン 値は 0..680程度 (5Vに繋げば0..1023)
#include "Servo.h"
Servo myservo;
long int val;
long int rad;
void setup() {
pinMode(A0,INPUT); // 可変抵抗の入力取得はアナログ0番ピン
Serial.begin(9600);
myservo.attach(9,500,2400); // サーボ駆動ピンは9、 PWM最小値、最大値 500-2400は我が家のサーボ値}
void loop() {
val = analogRead(A0); // アナログ電圧読み込み
rad = map(val, 0,680, 0,180); // マップ関数で角度に変換 0..680は3Vで得られる値
Serial.print(val);
Serial.print(" ");
Serial.println(rad);
myservo.write(rad); // サーボを指定角度に駆動
delay(1000);
}