酒と薔薇の日々(その2)

好きなことだけ求めて生きるアスペ気味のINTJ人

久しぶりのサーボ(SG90)をポテンショメータで動かした

2022年07月11日 23時52分41秒 | マイコン(ESP32・Arduino等)

久しぶりに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);
}

この記事についてブログを書く
« 味覚バカって・・・ | トップ | 風呂難民は県北へ »