#include <LedControl.h>
#define trigPin 9 // Trig 引腳 (接 HC-SR04)
#define echoPin 8 // Echo 引腳 (接 HC-SR04)
#define DATA_IN 5 // DIN
#define CLK_PIN 7 // CLK
#define LOAD_PIN 6 // CS
LedControl lc = LedControl(DATA_IN, CLK_PIN, LOAD_PIN, 1);
// "X" 圖形
byte X_pattern[8] = {
B10000001,
B01000010,
B00100100,
B00011000,
B00011000,
B00100100,
B01000010,
B10000001
};
// "O" 圖形
byte O_pattern[8] = {
B00111100,
B01000010,
B10000001,
B10000001,
B10000001,
B10000001,
B01000010,
B00111100
};
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
lc.shutdown(0, false);
lc.setIntensity(0, 8);
lc.clearDisplay(0);
}
void loop() {
long duration, distance;
// 觸發超音波感測器
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 計算距離 (cm)
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// 根據距離顯示 "O" 或 "X"
if (distance > 0 && distance <= 100) {
displayPattern(O_pattern);
} else {
displayPattern(X_pattern);
}
delay(500);
}
// 顯示指定圖形
void displayPattern(byte pattern[8]) {
for (int row = 0; row < 8; row++) {
lc.setRow(0, row, pattern[row]);
}
}
留言
張貼留言