轉角防撞感測器

Supplies




瓦楞板 兩顆超音波感測器 WS2812燈條 Arduino板 一般電線 杜邦線
程式碼
#include <Adafruit_NeoPixel.h>
#define LED_PIN 6 // WS2812 資料腳位接到 D6
#define LED_COUNT 10 // LED 總數 10 顆
// **交換超音波感測器腳位**
#define TRIG_PIN1 7 // 第一個超音波感測器 TRIG
#define ECHO_PIN1 8 // 第一個超音波感測器 ECHO
#define TRIG_PIN2 9 // 第二個超音波感測器 TRIG
#define ECHO_PIN2 10 // 第二個超音波感測器 ECHO
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
// 記錄觸發時間
unsigned long lastTriggerTime1 = 0;
unsigned long lastTriggerTime2 = 0;
const unsigned long delayTime = 7000; // 7 秒延遲
bool ledState = false; // LED 狀態
unsigned long lastBlinkTime = 0; // 記錄上次閃爍時間
const unsigned long blinkInterval = 20; // 0.2 秒閃爍間隔
void setup() {
Serial.begin(9600);
pinMode(TRIG_PIN1, OUTPUT);
pinMode(ECHO_PIN1, INPUT);
pinMode(TRIG_PIN2, OUTPUT);
pinMode(ECHO_PIN2, INPUT);
strip.begin();
strip.show(); // 初始化所有 LED 關閉
}
void loop() {
long distance1 = getDistance(TRIG_PIN1, ECHO_PIN1);
long distance2 = getDistance(TRIG_PIN2, ECHO_PIN2);
unsigned long currentTime = millis();
Serial.print("Distance1: ");
Serial.print(distance1);
Serial.print(" cm | Distance2: ");
Serial.print(distance2);
Serial.println(" cm");
if (distance1 > 0 && distance1 < 50) {
lastTriggerTime1 = currentTime;
}
if (distance2 > 0 && distance2 < 50) {
lastTriggerTime2 = currentTime;
}
if (currentTime - lastBlinkTime >= blinkInterval) {
ledState = !ledState; // 切換 LED 狀態
lastBlinkTime = currentTime;
}
strip.clear();
if ((currentTime - lastTriggerTime1 < delayTime) && ledState) {
for (int i = 0; i < 5; i++) {
strip.setPixelColor(i, strip.Color(255, 0, 0)); // 紅色
}
}
if ((currentTime - lastTriggerTime2 < delayTime) && ledState) {
for (int i = 5; i < 10; i++) {
strip.setPixelColor(i, strip.Color(255, 0, 0)); // 紅色
}
}
strip.show();
delay(50);
}
long getDistance(int trigPin, int echoPin) {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(15);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH, 30000);
if (duration == 0) {
Serial.println("No echo received");
return -1;
}
long distance = duration * 0.034 / 2;
return distance;
}
裁切
剪兩塊長81cm寬5cm的瓦楞板
組合

把兩塊瓦楞板黏在一起
定位裝置
