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を使ってスケッチを作成しました。
お行儀がわるいですが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は光るものの、信号としては受け取ってもらえませんでした。
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 );
}
お行儀がわるいですが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は光るものの、信号としては受け取ってもらえませんでした。
2023-08-30 00:48
nice!(0)
コメント(0)
コメント 0