本文へ移動
サポートシェアリングソリューション
OKWAVE Plus

このQ&Aは役に立ちましたか?

ベストアンサー

Attiny202

2025/02/07 22:49

Attiny202とタクトスイッチを使った回路になります。
タクトスイッチを一度押すとled on、もう一度押すとled offという形で書き込みをしました。実際に光らせてみると上手くいくのですが、タクトスイッチでoffの状態にしてしばらく経過すると、点灯しなくなってしまいます。offの状態でも通電してしまっているのでしょうか?何か対象方があれば、ご提案お願いします

質問者が選んだベストアンサー

ベストアンサー
2025/02/08 00:25
回答No.1

一次電池、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は役に立ちましたか?

その他の回答 (2件中 1~2件目)

2025/02/08 09:16
回答No.2

回路図を上げて頂ければ的確な回答が得られますよ。

補足

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に書き込んだものになります。タクトスイッチで点灯箇所が変わるようにしてます。このコードにスリープモードを書き込んでみたのですが、光りません。

質問者

お礼をおくりました

さらに、この回答をベストアンサーに選びますか?

ベストアンサーを選ぶと質問が締切られます。
なおベストアンサーを選びなおすことはできません。