SSブログ

Arduino UNO R4でリモコン [Arduino]

低機能マイコンでできたことを高機能のUNO R4でやっても面白味はないのですが、実験ということで。

202duino でPWMを使ってリモコン送信
https://hello-world.blog.ss-blog.jp/2023-06-01

ATtiny202では、レジスタをいじって40kHz PWMを作りましたが、UNO R4ではレジスタの設定不要で、pwm.hを使ってスケッチを作成しました。

// Infrared remote control with 40kHz PWM (SIRC version)
#include <pwm.h>
static PwmOut ir( 12 );                                 // IR LED pin

void setup() {
}

void loop() {
  sendIrSIRCpwm( 46 | 1UL << 7 );                       // SONY TV ON  (cmd:46(7bit), adrs:1(5bit))
  sendIrSIRCpwm( 46 | 1UL << 7 );                       //   repeat 3 times
  sendIrSIRCpwm( 46 | 1UL << 7 );
  delay( 5000 );
  sendIrSIRCpwm( 47 | 1UL << 7 );                       // SONY TV OFF (cmd:47(7bit), adrs:1(5bit))
  sendIrSIRCpwm( 47 | 1UL << 7 );                       //   repeat 3 times
  sendIrSIRCpwm( 47 | 1UL << 7 );
  delay( 5000 );
}

void sendIrSIRCpwm( uint32_t d ) {                      //   T = 0.60msec
  uint8_t  b = (d & 0xF8000) ? 20 : 
               (d & 0x07000) ? 15 : 12;                 // number of bits
  uint16_t usON, usTrailer = 420;                       // 70T = interval(75T) - leader(5T)
  ir.begin( 25, 8);   delayMicroseconds( 2400 );        // leader ON  (4T)   40kHz = every 25usec
  ir.suspend();       delayMicroseconds(  600 );        // leader OFF (1T)
  for(uint8_t i = 0; i < b; i++) {                      // data(command + address)
    usON = ((d>>i)&1) ? 1200 : 600;                     // data(0:1T / 1:2T)
    ir.resume();      delayMicroseconds( usON );        // data ON
    ir.suspend();     delayMicroseconds(  600 );        // data OFF (1T)
    usTrailer -= (usON + 600);                          // trailer
  }
  ir.end();
  delayMicroseconds( usTrailer );
}


r4_sirc.jpg
お行儀がわるいですがLEDは直刺し。

UNO R4 Minima Arduino Documentation
https://docs.arduino.cc/hardware/uno-r4-minima

ここに、「Maximum current draw per pin: the UNO R4 series' maximum current draw per GPIO is 8 mA, which is significantly lower than previous versions. Exceeding this limit may damage your pin / board.」とありました。(UNO R3 は 20mA)。パルスだしいいかな?と(何が?)

ちなみに tone() でも試してみましたが、動作しませんでした。
LEDは光るものの、信号としては受け取ってもらえませんでした。

nice!(0)  コメント(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。