提示詞 (prompt)
我有一個 quno 的板子,綠色腳位9 紅色腳位10 藍色腳位11,產生程式碼,使 紅顏色,每隔1秒更換
幫我改成 紅燈 綠燈 藍燈,三個顏色各亮1秒
幫我改成像彩虹7個顏色,每個顏色各亮1秒,熄滅1秒,一直下去
寫一個呼吸燈的程式碼,是「三種顏色輪流呼吸」的版本,但最大的亮度小於 150
寫一個呼吸燈的程式碼,是「彩虹7種顏色輪流呼吸」的版本,但最大的亮度小於 150
寫一個像7彩霓虹燈的程式碼,有夜店閃爍報燃的效果,但最大的亮度小於 150
寫一個像7彩霓虹燈的程式碼,要有幫助睡眠的效果,但最大的亮度小於 150
我有一個 quno 的板子,設定 8*8 LED 矩陣燈的腳位:DIN:D13,CS:D12,CLK:D8,產生程式碼,讓數字從 0 到 9 可以每隔一秒顯示一次,不停循環下去
我有一個 quno 的板子,設定 8*8 LED 矩陣燈的腳位:DIN:D13,CS:D12,CLK:D8, 產生程式碼,讓8*8 LED 矩陣燈的變化,如煙火一樣美麗
我有一個 quno 的板子,設定 8*8 LED 矩陣燈的腳位:DIN:D13,CS:D12,CLK:D8, 產生程式碼,讓8*8 LED 矩陣燈的變化,像是紅綠燈的小綠人在走路 ,要像台灣馬路上的紅綠燈小綠人
我有一個 quno 的板子,設定 8*8 LED 矩陣燈的腳位:DIN:D13,CS:D12,CLK:D8, 產生程式碼,讓8*8 LED 矩陣燈的變化,像是同心圓由小擴大
我有一個 quno 的板子,設定 8*8 LED 矩陣燈的腳位:DIN:D13,CS:D12,CLK:D8, 產生程式碼,讓8*8 LED 矩陣燈的變化,如花朵綻放
我有一個 quno 的板子,設定 8*8 LED 矩陣燈的腳位:DIN:D13,CS:D12,CLK:D8, 產生程式碼,讓8*8 LED 矩陣燈的變化,是五芒星在旋轉
我有一個 quno 的板子,設定 8*8 LED 矩陣燈的腳位:DIN:D13,CS:D12,CLK:D8, 產生程式碼,讓8*8 LED 矩陣燈的變化,是一條直線不停在順時鐘旋轉
我有一個 quno 的板子,設定 8*8 LED 矩陣燈的腳位:DIN:D13,CS:D12,CLK:D8, 同時也連接一個 紅外線感應器在腳位 D7,有東西擋住紅外線感應器回傳數值是 0,沒有東西擋住紅外線感應器回傳數值是 1。產生程式碼,當紅外線感應器偵測到有東西時,讓8*8 LED 矩陣燈的變化,是一條直線在順時鐘旋轉5秒鐘,然後關燈停止,等待直到下一次紅外線感應器在偵測到有東西
繼續上面的功能, 8*8 LED 矩陣燈能夠顯示3種變化,分別是
一條直線在順時鐘旋轉,五芒星在旋轉,和同心圓由小擴大, 然後 8*8 LED 矩陣燈,在紅外線感應器偵測到東西時,能隨機顯示3個變化其中之一,持續5秒鐘,然後關燈停止,等待直到下一次紅外線感應器在偵測到有東西
繼續上面的功能, 8*8 LED 矩陣燈能夠顯示3種畫面,分別是剪刀,石頭,布,在紅外線感應器偵測到東西時,8*8 LED 先要倒數 3 秒,並且8*8 LED能顯示倒數的動畫,然後8*8 LED 在隨機顯示 剪刀,石頭,布,其中一項,持續5秒鐘,然後關燈停止,等待直到下一次紅外線感應器在偵測到有東西
我有一個 quno 的板子,設定 8*8 LED 矩陣燈的腳位:DIN:D13,CS:D12,CLK:D8, 同時也連接一個 紅外線感應器在腳位 D7,有東西擋住紅外線感應器回傳數值是 0,沒有東西擋住紅外線感應器回傳數值是 1。
產生程式碼,8*8 LED 矩陣燈能夠顯示3種畫面,分別是剪刀,石頭,布,在紅外線感應器偵測到東西時,8*8 LED 先要倒數 3 秒,並且8*8 LED能顯示倒數的動畫,然後8*8 LED 在隨機顯示 剪刀,石頭,布,其中一項,持續5秒鐘,然後關燈停止,等待直到下一次紅外線感應器在偵測到有東西
以下是剪刀石頭布的程式
#include <LedControl.h>
// 定義 LED 矩陣腳位:DIN: D13, CLK: D8, CS: D12, 1 個模組
LedControl lc = LedControl(13, 8, 12, 1);
// 定義紅外線感應器腳位
const int IR_SENSOR_PIN = 7;
// ==========================================
// 1. 倒數數字 3, 2, 1 點陣圖 (8x8)
// ==========================================
const byte num3[8] = {
B00111100,
B01000010,
B00000010,
B00011100,
B00000010,
B01000010,
B00111100,
B00000000
};
const byte num2[8] = {
B00111100,
B01000010,
B00000010,
B00011100,
B00100000,
B01000000,
B01111110,
B00000000
};
const byte num1[8] = {
B00010000,
B00110000,
B00010000,
B00010000,
B00010000,
B00010000,
B00111100,
B00000000
};
// ==========================================
// 2. 猜拳圖案:剪刀、石頭、布 (8x8)
// ==========================================
// 剪刀 (Scissors)
const byte scissors[8] = {
B01000010, // 兩條刀鋒/手指
B01000010,
B00100100,
B00011000, // 交叉點
B00100100,
B01000010, // 握把圈圈
B01000010,
B00000000
};
// 石頭 (Rock)
const byte rock[8] = {
B00000000,
B00111100, // 圓潤的拳頭形狀
B01111110,
B01111110,
B01111110,
B00111100,
B00000000,
B00000000
};
// 布 (Paper)
const byte paper[8] = {
B00000000,
B01010101, // 伸出的五根手指
B01010101,
B01111111, // 手掌
B01111111,
B00111110,
B00011100,
B00000000
};
void setup() {
pinMode(IR_SENSOR_PIN, INPUT_PULLUP);
lc.shutdown(0, false); // 喚醒 MAX7219
lc.setIntensity(0, 8); // 設定適中亮度 (0 ~ 15)
lc.clearDisplay(0);
// 利用浮空類比腳位 A0 的雜訊產生亂數種子,確保每次隨機公平
randomSeed(analogRead(A0));
}
// 顯示指定影格的輔助函式
void drawFrame(const byte frame[8]) {
for (int row = 0; row < 8; row++) {
lc.setRow(0, row, frame[row]);
}
}
// ==========================================
// 倒數 3 秒動畫 (3 -> 2 -> 1)
// ==========================================
void countdown3Sec() {
// 顯示 3
drawFrame(num3);
delay(1000);
// 顯示 2
drawFrame(num2);
delay(1000);
// 顯示 1
drawFrame(num1);
delay(1000);
// 閃爍一下代表準備出拳!
lc.clearDisplay(0);
delay(200);
}
// ==========================================
// 主程式邏輯
// ==========================================
void loop() {
// 讀取感應器狀態 (0 代表有東西擋住)
if (digitalRead(IR_SENSOR_PIN) == LOW) {
// 1. 執行 3 秒倒數動畫
countdown3Sec();
// 2. 隨機決定猜拳結果 (1: 剪刀, 2: 石頭, 3: 布)
int result = random(1, 4);
// 3. 顯示對應的猜拳圖案
switch (result) {
case 1:
drawFrame(scissors); // 剪刀
break;
case 2:
drawFrame(rock); // 石頭
break;
case 3:
drawFrame(paper); // 布
break;
}
// 4. 出拳結果持續顯示 5 秒鐘 (5000 毫秒)
delay(5000);
// 5. 5 秒後關燈停止
lc.clearDisplay(0);
// 6. 防重複連觸發:若物體(手)未離開感應器,靜靜等待離開
while (digitalRead(IR_SENSOR_PIN) == LOW) {
delay(50);
}
}
delay(50); // 空閒輪詢間隔
}