SSブログ

1ピンだけで2個のLEDを別々に操作する [Arduino]



以前にATtiny202で踏切の音と光を出すのをやりました。
ただATtiny202はふつうに使えるGPIOが5つしかないのでなるべく使用するピン数を少なくしたいところ。
LEDを1ピンだけで2個別々に操作することを思いついたのでやってみました。
(多分すでに誰かやってると思うけど)(NeoPixelを使うというのもありだけど)
5VとGNDの間に抵抗を入れて真ん中で分圧し、そことGPIOのHigh、Low、Hi-Zの3ステートで、2個の極性の反対のLEDを個別に点灯。
両方点灯させたいときはダイナミック点灯で。
欠点としては、やや暗いのと、消灯時でも電流を消費することかな。

Circuit Simulator Applet
https://www.falstad.com/circuit/circuitjs.html

というのでシミュレーションしてみた。
2leds_h.png
2leds_z.png
2leds_l.png

// LED test : Blink two LEDs using only one pin
//    +5V ---[470 Ohm]--+---+--|<|--+--- GPIO (H/L/Hi-Z)
//    GND ---[470 Ohm]--+   +--|>|--+

#define LED_PIN   2

void setup() {
}

void loop() {
  unsigned int i;
  
  pinMode(LED_PIN, OUTPUT);
  for(i=0; i<4; i++) {
    digitalWrite(LED_PIN, i&1);         // Blink LEDs alternately
    delay(500);
  }
  
  pinMode(LED_PIN, INPUT);              // Off LEDs
  delay(1000);
  
  pinMode(LED_PIN, OUTPUT);
  for(i=0; i<1000; i++) {
    digitalWrite(LED_PIN, i&1);         // dynamic both LEDs on
    delay(1);
  }
  
  pinMode(LED_PIN, INPUT);              // Off LEDs
  delay(1000);
}


もっといいやり方があるらしい。

マイコンの1本のI/O端子で2個のLEDを駆動:Design Ideas - EDN Japan
https://edn.itmedia.co.jp/edn/articles/0806/01/news020.html

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

nice! 0

コメント 0

コメントを書く

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