// 程式名稱:超音波偵測物體越靠近,矩陣LED的右箭頭移動速度就越快 // 超音波HC-SR04的接腳 Trig=12,Echo=13 // 矩陣LED MAX7219 8X8的接腳 DIN=7,CLK=6,CS=5 #include <LedControl.h> //使用函式庫LedControl by Eberhard Fahle #include <Ultrasonic.h> //使用函式庫Ultrasonic by Erick Simoes Ultrasonic ultrasonic(12, 13); //超音波接腳 Trig=12,Echo=13 int distance; //定義變數存放超音波偵測到的距離 LedControl display = LedControl(7,6,5,1); //矩陣接腳 DIN=7,CLK=6,CS=5,要控制幾個矩陣LED=1 const uint64_t IMAGES[] = { //設定陣列,每列放一個矩陣畫面圖形16進位值,右箭頭共9個畫面 0x0000000100000000, 0x0001030703010000, 0x02060f1f0f060200, 0x08183f7f3f180800, 0x10307fff7f301000, 0x40c0fcfcfcc04000, 0x0000f0f0f0000000, 0x0000c0c0c0000000, 0x0000000000000000 }; const int IMAGES_LEN = sizeof(IMAGES)/8; void setup() { display.clearDisplay(0); // 清除螢幕 display.shutdown(0, false); // 關閉省電模式 display.setIntensity(0, 1); // 設定為低亮度 1 (介於0~15之間) } void displayImage(uint64_t image) { // 自定函式:顯示每個畫面圖形 for (int i = 0; i < 8; i++) { byte row = (image >> i * 8) & 0xFF; for (int j = 0; j < 8; j++) { display.setLed(0, i, j, bitRead(row, j)); } } } int i = 0; void loop() { displayImage(IMAGES[i]); // 執行顯示矩陣LED的自定函式 if (++i >= IMAGES_LEN ) { i = 0; } distance = ultrasonic.read(); //超音波偵測距離,不加參數表示單位為公分CM delay(distance); //依偵測到的距離進行延遲 }
|