このQ&Aは役に立ちましたか?
Attiny202
2025/02/07 22:49
Attiny202とタクトスイッチを使った回路になります。
タクトスイッチを一度押すとled on、もう一度押すとled offという形で書き込みをしました。実際に光らせてみると上手くいくのですが、タクトスイッチでoffの状態にしてしばらく経過すると、点灯しなくなってしまいます。offの状態でも通電してしまっているのでしょうか?何か対象方があれば、ご提案お願いします
質問者が選んだベストアンサー
一次電池、24V駆動など各種IoTエッジデバイスが抱える電源の課題とその解決策
https://edn.itmedia.co.jp/edn/articles/2107/19/news003.html
よーするにsleep modeで消費電流を抑える
何もしなければ電源ONしてるダケで無駄に電力を消耗する
https://akizukidenshi.com/goodsaffix/attiny202-402.pdf
471/544page
31.2 Absolute Maximum Ratings
IVDD Current into a VDD pin 200 mA
474/544page
Table 31-5. Power Consumption in Power-Down, Standby, and Reset Mode
Standby 8.0 µA
90/544page
Sleep Controller (SLPCTRL)
このQ&Aは役に立ちましたか?
補足
2025/02/08 18:47
// ピン設定
const int buttonPin =4; // タクトスイッチ接続ピン
const int led1Pin = 3; // LED1
const int led2Pin = 2; // LED2
const int led3Pin = 1; // LED3(PWM対応)
const int led4Pin = 0; // LED4(PWM対応)
// 状態管理用変数
int mode = 0; // 状態管理変数
bool buttonPressed = false;
void setup() {
// ピンモード設定
pinMode(4, INPUT_PULLUP);
pinMode(3, OUTPUT);
pinMode(2, OUTPUT);
pinMode(1, OUTPUT);
pinMode(0, OUTPUT);
}
void loop() {
// ボタンが押されたときモードを切り替える
if (digitalRead(4) == LOW) {
if (!buttonPressed) {
mode = (mode + 1) % 8; // 0〜7のモード切り替え
buttonPressed = true;
delay(50); // デバウンス対策
}
} else {
buttonPressed = false;
}
// 状態管理
switch (mode) {
case 0:
allOff();
break;
case 1:
led3Blink();
break;
case 2:
led4Blink();
break;
case 3:
led3and4Blink();
break;
case 4:
led1and2On();
break;
case 5:
led1and2On();
led3Blink();
break;
case 6:
led1and2On();
led4Blink();
break;
case 7:
led1and2On();
led3and4Blink();
break;
}
}
void allOff() {
digitalWrite(3, LOW);
digitalWrite(2, LOW);
analogWrite(1, 0);
analogWrite(0, 0);
}
void led1and2On() {
digitalWrite(3, HIGH);
digitalWrite(2, HIGH);
}
void led3Blink() {
analogWrite(1, 255); // 最大輝度
delay(500);
analogWrite(1, 0); // 消灯
delay(500);
}
void led4Blink() {
analogWrite(0, 255); // 最大輝度
delay(500);
analogWrite(0, 0); // 消灯
delay(500);
}
void led3and4Blink() {
analogWrite(1, 255); // LED3最大輝度
analogWrite(0, 255); // LED4最大輝度
delay(500);
analogWrite(1, 0); // 消灯
analogWrite(0, 0); // 消灯
delay(500);
}
上記のものがattiny202に書き込んだものになります。タクトスイッチで点灯箇所が変わるようにしてます。このコードにスリープモードを書き込んでみたのですが、光りません。