注釈
こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Communityへようこそ!Facebook上で、仲間と一緒にRaspberry Pi、Arduino、ESP32をさらに深く探求しましょう。
なぜ参加するのか?
専門的なサポート:購入後の問題や技術的な課題をコミュニティやチームの助けを借りて解決。
学びと共有:スキルを向上させるためのヒントやチュートリアルを交換。
限定プレビュー:新製品発表や予告編に早期アクセス。
特別割引:最新製品の特別割引を楽しむ。
フェスティブプロモーションとプレゼント:プレゼントやホリデープロモーションに参加。
👉 私たちと一緒に探索と創造を始める準備はできましたか?[ここ]をクリックして、今すぐ参加しましょう!
レッスン42: タッチ切り替えライト
このプロジェクトは、タッチセンサーと交通信号LEDモジュールを利用したシンプルな交通信号制御システムの実装です。タッチセンサーを作動させると、LEDが次の順序で点灯します:赤 -> 黄 -> 緑。
必要なコンポーネント
このプロジェクトでは、以下のコンポーネントが必要です。
一式キットを購入するのが便利です。こちらのリンクをご覧ください:
Name |
ITEMS IN THIS KIT |
LINK |
---|---|---|
Universal Maker Sensor Kit |
94 |
以下のリンクから別々に購入することもできます。
Component Introduction |
Purchase Link |
---|---|
Arduino UNO R3 or R4 |
|
- |
|
- |
|
配線
コード
コード解析
このプロジェクトの操作は簡単です。センサーのタッチ検出が次のLEDの点灯をトリガーします(赤 -> 黄 -> 緑)。これは currentLED
変数によって制御されます。
ピンの定義と初期値の設定
const int touchSensorPin = 2; // Touch sensor pin const int rledPin = 7; // Red LED pin const int yledPin = 8; // Yellow LED pin const int gledPin = 9; // Green LED pin int lastTouchState; // Previous touch sensor state int currentTouchState; // Current touch sensor state int currentLED = 0; // Current LED: 0->Red, 1->Yellow, 2->Green
これらの行は、Arduinoボードのコンポーネントに対するピン接続を確立し、タッチセンサーとLEDの状態を初期化します。
setup() 関数
void setup() { Serial.begin(9600); // Initialize serial communication pinMode(touchSensorPin, INPUT); // Set touch sensor pin as input // Configure LED pins as outputs pinMode(rledPin, OUTPUT); pinMode(yledPin, OUTPUT); pinMode(gledPin, OUTPUT); currentTouchState = digitalRead(touchSensorPin); // Read initial touch state }
この関数は、Arduinoの初期設定を行い、入力モードと出力モードを定義し、デバッグ用にシリアル通信を開始します。
loop() 関数
void loop() { lastTouchState = currentTouchState; // Store the last state currentTouchState = digitalRead(touchSensorPin); // Read new touch state if (lastTouchState == LOW && currentTouchState == HIGH) { // Detect touch Serial.println("Sensor touched"); turnAllLEDsOff(); // Turn off all LEDs // Activate 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を順に切り替え、常に1つのLEDのみが点灯するようにします。
LED消灯関数
void turnAllLEDsOff() { // Set all LED pins to LOW, turning them off digitalWrite(rledPin, LOW); digitalWrite(yledPin, LOW); digitalWrite(gledPin, LOW); }
この補助関数は、すべてのLEDを消灯し、サイクルプロセスを支援します。