無料ブログはココログ

« Arduinoでもっと電子工作を3 | トップページ | Arduinoでもっと電子工作を5 »

2021年5月 3日 (月)

Arduinoでもっと電子工作を4

Lesson3

基板上のモータードライバーでPWM出力します。Lesson2と同じく電源は12VのACアダプタを使用します。LEDはDCCトラックのモニター用で点灯は方極性のみですが、極性切替のプログラムコードを追加すればアナログ動力車用のコントローラとして機能します。但しnano EveryのD9、D10はタイマー0がPWMに割り付けられているので、PWM周波数を高速化するとmillis()などのシステムタイマー関連のパラメータをすべて変更しなければなりません。PWM出力専用に用意したTB67H450モータードライバー用のD3、D6で出力する事をお勧めします。

Pwm_low_20210503133501Pwm_high_20210503133501

グローバル定義

#define PIN_VR A7
#define PIN_A 9
#define PIN_B 10

//Task Schedule
unsigned long gPreviousL1;

I/Oポート初期化

void setup() {
 // put your setup code here, to run once:
 analogWrite(PIN_B, 0);
}

PWM制御を実行

PWMを出力するには、digitalWriteに代えてanalogWriteを使います。DAコンバータでもないのにanalogWriteは妙ですが、Arduinoの約束事です。DesktopStationさんのピュアアナログアダプタを使えば真のアナログになるので良しとしましょう。
PWMのデューティ比を決めるボリュームの値はanalogReadで取得します。こちらは本当にアナログ入力ですね。

void loop() {
 // put your main code here, to run repeatedly:
 byte aVol;
 if( (millis() - gPreviousL1) > 100) {
  //Reset task
  gPreviousL1 = millis();
  
  aVol = (analogRead(PIN_VR) >> 2); // 1020 -> 255
  analogWrite(PIN_A, aVol);
 }
}

 

« Arduinoでもっと電子工作を3 | トップページ | Arduinoでもっと電子工作を5 »

電子工作」カテゴリの記事

コメント

この記事へのコメントは終了しました。