サイモン:ボタンと音符
CoddyのArduinoジャーニー「プロジェクト」セクションの一部。レッスン 13/24。
Simonは記憶ゲームです。ボードが色とりどりのライトと音符のパターンを再生し、あなたはボタンでそれを繰り返します。各ラウンドでパターンが1つずつ増え、間違えるまで続きます。色は4種類あり、それぞれにボタン、LED、音符があります。
どれも4つずつあるので、配列を使うとスケッチを短くできます。各配列の要素0は赤、1は緑、2は青、3は黄色です。そのため、どこでも1つの数値 i で色を指定できます。
const int ledPins[4] = {9, 10, 11, 12};
const int buttonPins[4] = {2, 3, 4, 5};
const int notes[4] = {262, 330, 392, 523};forループですべてのボタンを確認します。2つのタイミングで反応します。ボタンが押されたとき(現在はLOW、前回はHIGH)と、離されたとき(現在はHIGH、前回はLOW)です。配列lastStateには、各ボタンの前回の読み取り値が保持されます。後の手順では、ボタンが離されたときに押されたものとして数えます。これらのボタンはチャタリングしないため、エッジの確認だけで十分です。
チャレンジ
中級4色を鳴らしましょう:
setup()では、forループを使ってLEDピンを出力に、ボタンのピンをINPUT_PULLUPに設定します- ボタン
iが押されたら、ledPins[i]を点灯し、ピン8でnotes[i]を鳴らします - ボタンが離されたら、LEDを消灯し、
noTone()を呼び出します
Runを押して、ボタンを鳴らしてから、Checkを押してください。
自分で試してみよう
// 色ごとに1つずつ:赤、緑、青、黄
const int ledPins[4] = {9, 10, 11, 12};
const int buttonPins[4] = {2, 3, 4, 5};
const int notes[4] = {262, 330, 392, 523}; // C、E、G、高いC
const int buzzerPin = 8;
int lastState[4] = {HIGH, HIGH, HIGH, HIGH}; // 各ボタンの直前の読み取り値
void setup() {
// LEDは出力、ボタンはINPUT_PULLUP
}
void loop() {
// 各ボタンについて:押されたら対応するLEDを点灯し、音を鳴らす。
// 離されたら、LEDと音をオフにする
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
プロジェクトのすべてのレッスン
自分で練習してみよう: Arduinoプレイグラウンド