注釈
こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Communityへようこそ!Facebook上で、仲間と一緒にRaspberry Pi、Arduino、ESP32をさらに深く探求しましょう。
なぜ参加するのか?
専門的なサポート:購入後の問題や技術的な課題をコミュニティやチームの助けを借りて解決。
学びと共有:スキルを向上させるためのヒントやチュートリアルを交換。
限定プレビュー:新製品発表や予告編に早期アクセス。
特別割引:最新製品の特別割引を楽しむ。
フェスティブプロモーションとプレゼント:プレゼントやホリデープロモーションに参加。
👉 私たちと一緒に探索と創造を始める準備はできましたか?[ここ]をクリックして、今すぐ参加しましょう!
レッスン40: タッチトグルライト
このプロジェクトは、タッチセンサーと交通信号LEDモジュールを利用した簡単な交通信号制御システムの実装です。 タッチセンサーを作動させると、次の順序でLEDが点灯します:赤 -> 黄 -> 緑。
Required Components
このプロジェクトでは、以下のコンポーネントが必要です。
一式購入するのが便利です。以下のリンクをご覧ください。
Name |
ITEMS IN THIS KIT |
LINK |
---|---|---|
Universal Maker Sensor Kit |
94 |
以下のリンクから個別に購入することもできます。
Component Introduction |
Purchase Link |
---|---|
ESP32 & Development Board |
|
- |
|
- |
|
Wiring
Code
コード解析このプロジェクトの動作は簡単です。センサーがタッチを検出すると、次のLED(赤 -> 黄 -> 緑)が点灯します。これは currentLED
変数によって制御されます。
ピンの定義と初期値の設定
// Define pins for touch sensor and LEDs const int touchSensorPin = 14; // touch sensor pin const int rledPin = 27; // red LED pin const int yledPin = 26; // yellow LED pin const int gledPin = 25; // green LED pin int lastTouchState; // the previous state of touch sensor int currentTouchState; // the current state of touch sensor int currentLED = 0; // current LED 0->Red, 1->Yellow, 2->Green
これらの行は、Arduinoボードのコンポーネントのピン接続を確立し、タッチセンサーとLEDの状態を初期化します。
setup() 関数
void setup() { Serial.begin(9600); // initialize serial pinMode(touchSensorPin, INPUT); // configure touch sensor pin as input // set LED pins as outputs pinMode(rledPin, OUTPUT); pinMode(yledPin, OUTPUT); pinMode(gledPin, OUTPUT); currentTouchState = digitalRead(touchSensorPin); }
この関数は、Arduinoの初期設定を行い、入力および出力モードを定義し、デバッグ用のシリアル通信を開始します。
loop() 関数
void loop() { lastTouchState = currentTouchState; // save the last state currentTouchState = digitalRead(touchSensorPin); // read new state // check if the touch sensor was just touched if (lastTouchState == LOW && currentTouchState == HIGH) { Serial.println("The sensor is touched"); turnAllLEDsOff(); // Turn off all LEDs // switch on the next LED in sequence switch (currentLED) { case 0: digitalWrite(rledPin, HIGH); currentLED = 1; break; case 1: digitalWrite(yledPin, HIGH); currentLED = 2; break; case 2: digitalWrite(gledPin, HIGH); currentLED = 0; break; } } }
このループはタッチセンサーを継続的に監視し、タッチが検出されるとLEDを順番に切り替え、常に一つのLEDだけが点灯するようにします。
LEDを消灯する関数
// function to turn off all LEDs void turnAllLEDsOff() { digitalWrite(rledPin, LOW); digitalWrite(yledPin, LOW); digitalWrite(gledPin, LOW); }
この補助関数は、すべてのLEDを消灯し、切り替えプロセスをサポートします。