Raspberry Pi Picoによるボリューム制御サーボモータを作成しました。ボリューム電圧を[analogRead]で読込みデータを[PWM]に変換出力しサーボモータを制御するプログラムを組んでみました。
●Pico PWMについて
同ブログ:【Pico PWMテスト(Arduino IDE)】
●同ブログ関連記事:
回路図
●GP26(ADC0)ボリューム電圧をアナログ→デジタル→PWM変換 GP0(PWM)に出力してサーボモーターを制御する。
●ボリュームを回すとサーボモーターもそれに同期して回転します(SG90:180度範囲)
プログラム Arduino IDE【ボード:Raspberry Pi Pico】
#include <hardware/pwm.h>
uint16_t VR;
float v;
void servo(){ // f=50Hz
uint slice_num = pwm_gpio_to_slice_num(0); // PWMスライスを取得
pwm_set_clkdiv(slice_num, 152.58789 ); // 分周比
pwm_set_wrap(slice_num, 16383); //PWMの分解能
pwm_set_chan_level(slice_num, PWM_CHAN_A, v); // High期間を設定
pwm_set_enabled(slice_num, true); // PWM出力イネーブル
}
void setup() {
Serial.begin(9600);
analogReadResolution(12);
gpio_set_function(0, GPIO_FUNC_PWM); // ピン機能をPWMに設定
}
void loop() {
VR = analogRead(26);
v = VR;
Serial.println(v);
servo();
}
0 件のコメント:
コメントを投稿