Arduino スイッチとLED
November 4, 2023
Anonymous
Arduinoで以下のような動作をするコードを書いてください。
回路:ピン1からピン4に1つずつタクトスイッチの入力が接続されており、それに対応するかたちでピン5から8に出力としてLEDが接続されている。
動作:スイッチを押すと、対応するLEDが点灯する。次にどれかのスイッチが押されるまで点灯し続ける。同時に点灯するLEDは1つまでとする。
ChatGPT
以下は、Arduinoで提供されたスケッチです。このスケッチは、ピン1から4に接続されたタクトスイッチからの入力を読み取り、ピン5から8に接続されたLEDに対応するLEDを点灯します。同時に点灯するLEDは1つまでです。
cppconst int switchPins[] = {1, 2, 3, 4}; // タクトスイッチのピン
const int ledPins[] = {5, 6, 7, 8}; // LEDのピン
int activeLed = -1; // 点灯中のLEDのインデックス
void setup() {
for (int i = 0; i < 4; i++) {
pinMode(switchPins[i], INPUT_PULLUP); // タクトスイッチのピンをプルアップ入力モードに設定
pinMode(ledPins[i], OUTPUT); // LEDのピンを出力モードに設定
}
}
void loop() {
for (int i = 0; i < 4; i++) {
if (digitalRead(switchPins[i]) == LOW) { // タクトスイッチが押されたら
if (activeLed != -1) {
digitalWrite(ledPins[activeLed], LOW); // 以前のLEDを消す
}
activeLed = i; // 現在のLEDを設定
digitalWrite(ledPins[i], HIGH); // 新しいLEDを点灯
while (digitalRead(switchPins[i]) == LOW) {
// スイッチが押されたままの場合、待機
}
}
}
}
このスケッチは、各スイッチの状態を確認し、スイッチが押されたら対応するLEDを点灯させ、同時に点灯中の他のLEDを消灯します。どれかのスイッチが再度押されるまで、点灯し続けます。
Anonymous
同じように1つのスイッチと1つのLEDで、一度押すとLEDが点灯して、もう一度押すとLEDが消える、という動作にできますか。
ChatGPT
はい、1つのスイッチと1つのLEDで、一度押すとLEDが点灯し、もう一度押すとLEDが消えるような動作をArduinoで実現できます。以下はそのためのArduinoスケッチです。
cppconst int switchPin = 1; // タクトスイッチのピン
const int ledPin = 5; // LEDのピン
bool isLedOn = false; // LEDの点灯状態
void setup() {
pinMode(switchPin, INPUT_PULLUP); // タクトスイッチのピンをプルアップ入力モードに設定
pinMode(ledPin, OUTPUT); // LEDのピンを出力モードに設定
}
void loop() {
if (digitalRead(switchPin) == LOW) { // タクトスイッチが押されたら
delay(50); // デバウンス用の遅延
if (digitalRead(switchPin) == LOW) {
isLedOn = !isLedOn; // LEDの状態を反転
digitalWrite(ledPin, isLedOn ? HIGH : LOW); // LEDを点灯または消灯
while (digitalRead(switchPin) == LOW) {
// スイッチが押されたままの場合、待機
}
}
}
}
このスケッチでは、タクトスイッチの状態を監視し、スイッチが押されたときにLEDの点灯状態を切り替えます。スイッチが再度押されると、LEDの点灯状態がもう一度切り替わります。デバウンスのために50msの遅延を挿入しています。