陳信嘉
Shinjia Chen
陳信嘉
第 1 章:Arduino 快速入門
第 2 章:看懂電子電路
第 3 章:Arduino 的數位輸出 / 輸入
第 4 章:Arduino 的類比輸出 / 輸入
第 5 章:用序列埠 (Serial Port) 與 PC 通訊
第 6 章:三色 LED 的控制
第 7 章:LED 排燈
第 8 章:光線感知 - 做一個自動照明系統
第 9 章:溫度感知 - 使用熱敏電阻監測水溫
第 10 章:潮濕感知 - 使一個花草澆水警示系統
第 11 章:使用七段顯示器 - 做一個按鈕計數器
Lab 6. RGB 三色 LED
單色 LED 與三色 LED
共陰、共陽
Arduino 的類比腳位
三種顏色各別的範圍
程式:隨機亂數
接法不同、程式也相反
(本範例使用共陰)
random(小值, 大值)
const int bluePin = 9; // 設定 bluePin 的 PWM 驅動腳位
const int greenPin = 10; // 設定 greenPin 的 PWM 驅動腳位
const int redPin = 11; // 設定 redPin 的 PWM 驅動腳位
void setup() {
}
void loop() {
int blueValue =0; // blueValue 為藍燈 PWM 驅動值,初值為 0
int redValue = 0; // redValue 為紅燈 PWM 驅動值,初值為 0
int greenValue = 0; // greenValue 為綠燈 PWM 驅動值,初值為 0
for(redValue=1; redValue<=255; redValue+=1){ //紅色呼吸燈迴圈
analogWrite(redPin, redValue);
delay(10);
}
for(redValue=255; redValue>=0; redValue-=1){
analogWrite(redPin, redValue);
delay(10);
}
for(greenValue=1; greenValue<=150; greenValue+=1){ //綠色呼吸燈迴圈
analogWrite(greenPin, greenValue);
delay(10);
}
for(greenValue=150; greenValue>=0; greenValue-=1){
analogWrite(greenPin, greenValue);
delay(10);
}
for(blueValue=1; blueValue<=255; blueValue+=1) { //藍色呼吸燈迴圈
analogWrite(bluePin, blueValue);
delay(10);
}
for(blueValue=255; blueValue>=0; blueValue-=1) {
analogWrite(bluePin, blueValue);
delay(10);
}
for (int i=1; i<=100;i+=1) { // 用亂數亮燈100次的迴圈
redValue=random(1,30);
greenValue=random(1,20);
blueValue=random(1,50);
analogWrite(redPin,redValue);
analogWrite(greenPin,greenValue);
analogWrite(bluePin,blueValue);
delay(500);
}
analogWrite(redPin,0);
analogWrite(greenPin,0);
analogWrite(bluePin,0);
}const int pinR = 9; // 設定 bluePin 的 PWM 驅動腳位
const int pinG = 10; // 設定 greenPin 的 PWM 驅動腳位
const int pinB = 11; // 設定 redPin 的 PWM 驅動腳位
int maxR = 50;
int maxG = 20;
int maxB = 30;
int stepR = 10;
int stepG = 10;
int stepB = 10;
int count = 100; // 迴圈次數
int valueR, valueG, valueB;
int valueR1 = 0;
int valueG1 = 0;
int valueB1 = 0;
int valueR2 = 0;
int valueG2 = 0;
int valueB2 = 0;
void setup()
{
valueR1 = random(1,maxR);
valueG1 = random(1,maxG);
valueB1 = random(1,maxB);
}
void loop()
{
int ms = random(20, 200); // delay value
valueR2 = random(1,maxR);
valueG2 = random(1,maxG);
valueB2 = random(1,maxB);
stepR = (valueR2-valueR1) / count;
stepG = (valueG2-valueG1) / count;
stepB = (valueB2-valueB1) / count;
valueR = valueR1;
valueG = valueG1;
valueB = valueB1;
for(int i=0; i<count; i++)
{
valueR += stepR;
valueG += stepG;
valueB += stepB;
analogWrite(pinR,valueR);
analogWrite(pinG,valueG);
analogWrite(pinB,valueB);
delay(30);
}
valueR1 = valueR2;
valueG1 = valueG2;
valueB1 = valueB2;
}Lab 7-1. 使 LED 排燈左右來回點亮
Lab 7-2. 改變速度
整齊排列各元件
程式:陣列、函式
補充
自訂函式開發
const int firstLedPin = 4; //設定開頭 LED 腳位編號, 並設為整數常數
const int lastLedPin = 13; //設定最後 LED 腳位編號, 並設為整數常數
void setup() {
for(int led = firstLedPin; led <= lastLedPin; led= led +1){
pinMode(led, OUTPUT); //將每個數位輸出入腳位 (4~13) 設為 OUTPUT 模式
}
}
void loop() {
for(int led = firstLedPin; led <= lastLedPin; led= led +1) {
digitalWrite(led, HIGH); //將高電位輸出到 led 腳位
delay(100);
digitalWrite(led, LOW); //將低電位輸出到 led 腳位
}
for(int led = lastLedPin; led >= firstLedPin; led= led -1) {
digitalWrite(led, HIGH); //把高電位輸出到 led 腳位
delay(100);
digitalWrite(led, LOW); //將低電位輸出到 led 腳位
}
}const int firstLedPin = 4;
const int lastLedPin = 13;
void setup() {
for(int led = firstLedPin; led <= lastLedPin; led= led +1){
pinMode(led, OUTPUT);
}
}
void loop() {
for(int speed=0;speed<=5;speed=speed+1) { //這裡不一樣
for(int led = firstLedPin; led <= lastLedPin; led= led +1) {
digitalWrite(led, HIGH);
delay(speed*20); //這裡不一樣
digitalWrite(led, LOW);
}
for(int led = lastLedPin; led >= firstLedPin; led= led -1) {
digitalWrite(led, HIGH);
delay(speed*20); //這裡不一樣
digitalWrite(led, LOW);
}
} //這裡不一樣
}
// output led
int p0 = 4;
int p1 = 5;
int p2 = 6;
int p3 = 7;
int p4 = 8;
int p5 = 9;
int p6 = 10;
int p7 = 11;
int p8 = 12;
int p9 = 13;
int u = 500;
void setup()
{
pinMode(p0, OUTPUT);
pinMode(p1, OUTPUT);
pinMode(p2, OUTPUT);
pinMode(p3, OUTPUT);
pinMode(p4, OUTPUT);
pinMode(p5, OUTPUT);
pinMode(p6, OUTPUT);
pinMode(p7, OUTPUT);
pinMode(p8, OUTPUT);
pinMode(p9, OUTPUT);
}
void loop()
{
u=100;
led(1,0,0,0,0,0,0,0,0,0); delay(u);
led(0,1,0,0,0,0,0,0,0,0); delay(u);
led(0,0,1,0,0,0,0,0,0,0); delay(u);
led(0,0,0,1,0,0,0,0,0,0); delay(u);
led(0,0,0,0,1,0,0,0,0,0); delay(u);
led(0,0,0,0,0,1,0,0,0,0); delay(u);
led(0,0,0,0,0,0,1,0,0,0); delay(u);
led(0,0,0,0,0,0,0,1,0,0); delay(u);
led(0,0,0,0,0,0,0,0,1,0); delay(u);
led(0,0,0,0,0,0,0,0,0,1); delay(u);
led(0,0,0,0,0,0,0,0,1,0); delay(u);
led(0,0,0,0,0,0,0,1,0,0); delay(u);
led(0,0,0,0,0,0,1,0,0,0); delay(u);
led(0,0,0,0,0,1,0,0,0,0); delay(u);
led(0,0,0,0,1,0,0,0,0,0); delay(u);
led(0,0,0,1,0,0,0,0,0,0); delay(u);
led(0,0,1,0,0,0,0,0,0,0); delay(u);
led(0,1,0,0,0,0,0,0,0,0); delay(u);
}
void led(int a0, int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9)
{
digitalWrite(p0, a0);
digitalWrite(p1, a1);
digitalWrite(p2, a2);
digitalWrite(p3, a3);
digitalWrite(p4, a4);
digitalWrite(p5, a5);
digitalWrite(p6, a6);
digitalWrite(p7, a7);
digitalWrite(p8, a8);
digitalWrite(p9, a9);
}
// output led
int p0 = 4;
int p1 = 5;
int p2 = 6;
int p3 = 7;
int p4 = 8;
int p5 = 9;
int p6 = 10;
int p7 = 11;
int p8 = 12;
int p9 = 13;
int u = 500;
void setup()
{
pinMode(p0, OUTPUT);
pinMode(p1, OUTPUT);
pinMode(p2, OUTPUT);
pinMode(p3, OUTPUT);
pinMode(p4, OUTPUT);
pinMode(p5, OUTPUT);
pinMode(p6, OUTPUT);
pinMode(p7, OUTPUT);
pinMode(p8, OUTPUT);
pinMode(p9, OUTPUT);
}
void loop()
{
for(int i=0; i<20; i++) { type_a1(); }
for(int i=0; i<5 ; i++) { type_a2(); }
for(int i=0; i<5 ; i++) { type_a3(); }
}
void led(int a0, int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9)
{
digitalWrite(p0, a0);
digitalWrite(p1, a1);
digitalWrite(p2, a2);
digitalWrite(p3, a3);
digitalWrite(p4, a4);
digitalWrite(p5, a5);
digitalWrite(p6, a6);
digitalWrite(p7, a7);
digitalWrite(p8, a8);
digitalWrite(p9, a9);
}
void type_a1()
{
led(rand()%2, rand()%2, rand()%2, rand()%2, rand()%2, rand()%2, rand()%2, rand()%2, rand()%2, rand()%2);
delay(random(20,500));
}
void type_a2()
{
u=1000;
led(1,1,1,1,1,1,1,1,1,1); delay(u);
led(0,0,0,0,0,0,0,0,0,0); delay(u);
}
void type_a3()
{
u = 500;
led(1,0,1,0,1,0,1,0,1,0); delay(u);
led(0,1,0,1,0,1,0,1,0,1); delay(u);
}
// output led
int p0 = 4;
int p1 = 5;
int p2 = 6;
int p3 = 7;
int p4 = 8;
int p5 = 9;
int p6 = 10;
int p7 = 11;
int p8 = 12;
int p9 = 13;
int u = 500;
void setup()
{
pinMode(p0, OUTPUT);
pinMode(p1, OUTPUT);
pinMode(p2, OUTPUT);
pinMode(p3, OUTPUT);
pinMode(p4, OUTPUT);
pinMode(p5, OUTPUT);
pinMode(p6, OUTPUT);
pinMode(p7, OUTPUT);
pinMode(p8, OUTPUT);
pinMode(p9, OUTPUT);
}
void loop()
{
for(int i=0; i<10; i++) { type_a1(); }
for(int i=0; i<5 ; i++) { type_a2(); }
for(int i=0; i<5 ; i++) { type_a3(); }
for(int i=0; i<5 ; i++) { type_a4(); }
for(int i=0; i<5 ; i++) { type_a5(); }
for(int i=0; i<5 ; i++) { type_b1(); }
for(int i=0; i<5 ; i++) { type_b2(); }
for(int i=0; i<10; i++) { type_c1(); }
for(int i=0; i<2 ; i++) { type_c2(); }
}
void led(int a0, int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9)
{
digitalWrite(p0, a0);
digitalWrite(p1, a1);
digitalWrite(p2, a2);
digitalWrite(p3, a3);
digitalWrite(p4, a4);
digitalWrite(p5, a5);
digitalWrite(p6, a6);
digitalWrite(p7, a7);
digitalWrite(p8, a8);
digitalWrite(p9, a9);
}
void type_a1()
{
u = 200;
led(rand()%2, rand()%2, rand()%2, rand()%2, rand()%2, rand()%2, rand()%2, rand()%2, rand()%2, rand()%2);
delay(u);
}
void type_a2()
{
u=1000;
led(1,1,1,1,1,1,1,1,1,1); delay(u);
led(0,0,0,0,0,0,0,0,0,0); delay(u);
}
void type_a3()
{
u = 500;
led(1,0,1,0,1,0,1,0,1,0); delay(u);
led(0,1,0,1,0,1,0,1,0,1); delay(u);
}
void type_a4()
{
u = 200;
led(0,1,1,1,1,1,1,1,1,1); delay(u);
led(1,0,1,1,1,1,1,1,1,1); delay(u);
led(1,1,0,1,1,1,1,1,1,1); delay(u);
led(1,1,1,0,1,1,1,1,1,1); delay(u);
led(1,1,1,1,0,1,1,1,1,1); delay(u);
led(1,1,1,1,1,0,1,1,1,1); delay(u);
led(1,1,1,1,1,1,0,1,1,1); delay(u);
led(1,1,1,1,1,1,1,0,1,1); delay(u);
led(1,1,1,1,1,1,1,1,0,1); delay(u);
led(1,1,1,1,1,1,1,1,1,0); delay(u);
}
void type_a5()
{
u=100;
led(1,0,0,0,0,0,0,0,0,0); delay(u);
led(0,1,0,0,0,0,0,0,0,0); delay(u);
led(0,0,1,0,0,0,0,0,0,0); delay(u);
led(0,0,0,1,0,0,0,0,0,0); delay(u);
led(0,0,0,0,1,0,0,0,0,0); delay(u);
led(0,0,0,0,0,1,0,0,0,0); delay(u);
led(0,0,0,0,0,0,1,0,0,0); delay(u);
led(0,0,0,0,0,0,0,1,0,0); delay(u);
led(0,0,0,0,0,0,0,0,1,0); delay(u);
led(0,0,0,0,0,0,0,0,0,1); delay(u);
}
void type_b1()
{
u=100;
led(1,1,1,1,1,1,1,1,1,1); delay(u);
led(1,1,1,1,0,0,1,1,1,1); delay(u);
led(1,1,1,0,0,0,0,1,1,1); delay(u);
led(1,1,0,0,0,0,0,0,1,1); delay(u);
led(1,0,0,0,1,1,0,0,0,1); delay(u);
led(0,0,0,1,1,1,1,0,0,0); delay(u);
led(0,0,1,1,1,1,1,1,0,0); delay(u);
led(0,1,1,1,1,1,1,1,1,0); delay(u);
}
void type_b2()
{
u=100;
led(0,0,0,1,0,0,0,0,0,0); delay(u);
led(0,0,1,1,1,0,0,0,0,0); delay(u);
led(0,1,1,1,1,1,0,0,0,0); delay(u);
led(1,1,1,1,1,1,1,0,0,0); delay(u);
led(1,1,1,1,1,1,1,1,0,0); delay(u);
led(1,1,1,1,1,1,1,1,1,0); delay(u);
led(1,1,1,1,1,1,1,1,1,1); delay(u);
}
void type_c1()
{
led(0,0,0,0,0,0,0,0,0,0); delay(800);
led(1,1,1,1,1,1,1,1,1,1); delay(400);
led(0,0,0,0,0,0,0,0,0,0); delay(100);
led(1,1,1,1,1,1,1,1,1,1); delay(200);
led(0,0,0,0,0,0,0,0,0,0); delay(100);
led(1,1,1,1,1,1,1,1,1,1); delay(200);
led(0,0,0,0,0,0,0,0,0,0); delay(100);
led(1,1,1,1,1,1,1,1,1,1); delay(200);
led(0,0,0,0,0,0,0,0,0,0); delay(100);
}
void type_c2()
{
for(u=500; u>10; u-=50)
{
led(1,0,0,0,0,0,0,0,0,0); delay(u);
led(0,1,0,0,0,0,0,0,0,0); delay(u);
led(0,0,1,0,0,0,0,0,0,0); delay(u);
led(0,0,0,1,0,0,0,0,0,0); delay(u);
led(0,0,0,0,1,0,0,0,0,0); delay(u);
led(0,0,0,0,0,1,0,0,0,0); delay(u);
led(0,0,0,0,0,0,1,0,0,0); delay(u);
led(0,0,0,0,0,0,0,1,0,0); delay(u);
led(0,0,0,0,0,0,0,0,1,0); delay(u);
led(0,0,0,0,0,0,0,0,0,1); delay(u);
}
for(u=50; u>10; u-=3)
{
led(1,0,0,0,0,0,0,0,0,0); delay(u);
led(0,1,0,0,0,0,0,0,0,0); delay(u);
led(0,0,1,0,0,0,0,0,0,0); delay(u);
led(0,0,0,1,0,0,0,0,0,0); delay(u);
led(0,0,0,0,1,0,0,0,0,0); delay(u);
led(0,0,0,0,0,1,0,0,0,0); delay(u);
led(0,0,0,0,0,0,1,0,0,0); delay(u);
led(0,0,0,0,0,0,0,1,0,0); delay(u);
led(0,0,0,0,0,0,0,0,1,0); delay(u);
led(0,0,0,0,0,0,0,0,0,1); delay(u);
}
}Lab 11. 七段顯示器做一個按鈕計數器
七段 LED
共陰、共陽
各腳位對照圖
程式:二維陣列
接法不同、程式也相反
(本範例使用共陰)
int segmentPattern[10][7] = //宣告變數 segmentPattern 為二維陣列
{ {1,1,1,1,1,1,0},//使七段顯示器顯示數字 0
{0,1,1,0,0,0,0},//顯示數字 1
{1,1,0,1,1,0,1},//顯示數字 2
{1,1,1,1,0,0,1},//顯示數字 3
{0,1,1,0,0,1,1},//顯示數字 4
{1,0,1,1,0,1,1},//顯示數字 5
{1,0,1,1,1,1,1},//顯示數字 6
{1,1,1,0,0,0,0},//顯示數字 7
{1,1,1,1,1,1,1},//顯示數字 8
{1,1,1,1,0,1,1},//顯示數字 9
};
const int button = 2; //把 button 腳位設為 2
int count=0;
void setup() {
for(int pin = 5; pin <= 11; pin = pin +1) {
pinMode(pin, OUTPUT); //將 5-11 數位腳位模式設為 OUTPUT
}
pinMode(button, INPUT); //將 button 的腳位模式設為 INPUT
}
void sevenSegmentWrite(int digit) { //digit 顯示為 LED 字型的函式
for(int ledSeg = 0; ledSeg < 7; ledSeg = ledSeg +1) {
digitalWrite(ledSeg+5, segmentPattern[digit][ledSeg]);
}
}
void loop() {
int buttonStatus = 0; //buttonStatus 為按鈕狀態變數, 並將其值設為 0
buttonStatus = digitalRead(button);
delay(100); //程式維持在上一行的狀態 0.1 秒
sevenSegmentWrite(count); //將 count 值顯示到七段顯示器
if (buttonStatus == HIGH) //若 buttonStatus 為 HIGH,
count = count +1; //count 值加 1
if(count > 9) //如果 count 的值大於 9
count = 0; //count 值將會回到 -1
delay(100); //程式維持在上一行的狀態 0.1 秒鐘
}/*
練習:七段顯示器逐一顯示 HELLO
*/
int helloPattern[5][7] =
{ {0,1,1,0,1,1,1}, // H
{1,0,0,1,1,1,1}, // E
{0,0,0,1,1,1,0}, // L
{0,0,0,1,1,1,0}, // L
{1,1,1,1,1,1,0}, // O
};
int count=0;
void setup()
{
for(int pin = 5; pin <= 11; pin++)
{
pinMode(pin, OUTPUT);
}
}
void sevenSegmentWrite(int digit)
{
for(int ledSeg = 0; ledSeg < 7; ledSeg++)
{
digitalWrite(ledSeg+5, helloPattern[digit][ledSeg]);
}
}
void allDark()
{
// 七段顯示全滅
for(int ledSeg = 0; ledSeg < 7; ledSeg++)
{
digitalWrite(ledSeg+5, 0);
}
}
void loop()
{
/*
count = count + 1;
if(count>4)
{
count = 0;
}
*/
count = (count + 1) % 5;
allDark();
delay(100);
sevenSegmentWrite(count);
delay(900);
}/*
練習:七段顯示器顯示各種樣式
共陰
七段顯示器的接腳:5, 6, 7, 8, 9, 10, 11 (必須連續)
(小數點的p腳沒有使用到)
*/
const int button = 2; //把 button 腳位設為 2
int pinA=5; // 七段顯示器的起始腳位
int style_total = 8; // 此程式內共有幾種類型 (輪替)
int style=0;
int count=0;
void setup()
{
for(int pin=0; pin<7; pin++)
{
pinMode(pinA+pin, OUTPUT);
}
pinMode(button, INPUT);
}
void sevenSegmentWritePattern(int a, int b, int c, int d, int e, int f, int g, int ms)
{
// 傳入位置a~g的值 (0/1),最後一個參數是 delay的值
digitalWrite(pinA, a);
digitalWrite(pinA+1, b);
digitalWrite(pinA+2, c);
digitalWrite(pinA+3, d);
digitalWrite(pinA+4, e);
digitalWrite(pinA+5, f);
digitalWrite(pinA+6, g);
delay(ms);
}
void loop()
{
int buttonStatus = 0; //buttonStatus 為按鈕狀態變數, 並將其值設為 0
buttonStatus = digitalRead(button);
// delay(100); //程式維持在上一行的狀態 0.1 秒
if (buttonStatus == HIGH)
{
style = (style + 1) % 5; // 共有五種樣式
}
// count 定時要更換
count = count + 1;
if(count>10)
{
count = 0;
style = (style+1) % style_total;
}
switch(style)
{
case 0:
// 樣式:繞圈圈
sevenSegmentWritePattern(1, 0, 0, 0, 0, 0, 0, 100);
sevenSegmentWritePattern(0, 1, 0, 0, 0, 0, 0, 100);
sevenSegmentWritePattern(0, 0, 1, 0, 0, 0, 0, 100);
sevenSegmentWritePattern(0, 0, 0, 1, 0, 0, 0, 100);
sevenSegmentWritePattern(0, 0, 0, 0, 1, 0, 0, 100);
sevenSegmentWritePattern(0, 0, 0, 0, 0, 1, 0, 100);
break;
case 1:
// 樣式:繞圈圈 (長度2格)
sevenSegmentWritePattern(1, 1, 0, 0, 0, 0, 0, 100);
sevenSegmentWritePattern(0, 1, 1, 0, 0, 0, 0, 100);
sevenSegmentWritePattern(0, 0, 1, 1, 0, 0, 0, 100);
sevenSegmentWritePattern(0, 0, 0, 1, 1, 0, 0, 100);
sevenSegmentWritePattern(0, 0, 0, 0, 1, 1, 0, 100);
sevenSegmentWritePattern(1, 0, 0, 0, 0, 1, 0, 100);
break;
case 2:
// 樣式:繞圈圈 (長度3格)
sevenSegmentWritePattern(1, 1, 1, 0, 0, 0, 0, 100);
sevenSegmentWritePattern(0, 1, 1, 1, 0, 0, 0, 100);
sevenSegmentWritePattern(0, 0, 1, 1, 1, 0, 0, 100);
sevenSegmentWritePattern(0, 0, 0, 1, 1, 1, 0, 100);
sevenSegmentWritePattern(1, 0, 0, 0, 1, 1, 0, 100);
sevenSegmentWritePattern(1, 1, 0, 0, 0, 1, 0, 100);
break;
case 3:
// 樣式:8字型 (長度2格)
/*
sevenSegmentWritePattern(1, 0, 0, 0, 0, 0, 0, 100);
sevenSegmentWritePattern(0, 1, 0, 0, 0, 0, 0, 100);
sevenSegmentWritePattern(0, 0, 0, 0, 0, 0, 1, 100);
sevenSegmentWritePattern(0, 0, 0, 0, 1, 0, 0, 100);
sevenSegmentWritePattern(0, 0, 0, 1, 0, 0, 0, 100);
sevenSegmentWritePattern(0, 0, 1, 0, 0, 0, 0, 100);
sevenSegmentWritePattern(0, 0, 0, 0, 0, 0, 1, 100);
sevenSegmentWritePattern(0, 0, 0, 0, 0, 1, 0, 100);
*/
sevenSegmentWritePattern(1, 1, 0, 0, 0, 0, 0, 100);
sevenSegmentWritePattern(0, 1, 0, 0, 0, 0, 1, 100);
sevenSegmentWritePattern(0, 0, 0, 0, 1, 0, 1, 100);
sevenSegmentWritePattern(0, 0, 0, 1, 1, 0, 0, 100);
sevenSegmentWritePattern(0, 0, 1, 1, 0, 0, 0, 100);
sevenSegmentWritePattern(0, 0, 1, 0, 0, 0, 1, 100);
sevenSegmentWritePattern(0, 0, 0, 0, 0, 1, 1, 100);
sevenSegmentWritePattern(1, 0, 0, 0, 0, 1, 0, 100);
break;
case 4:
// 樣式:上下兩小圓閃礫
sevenSegmentWritePattern(1, 1, 0, 0, 0, 1, 1, 500);
sevenSegmentWritePattern(0, 0, 1, 1, 1, 0, 1, 500);
break;
case 5:
// 樣式:縱橫輪替
sevenSegmentWritePattern(1, 0, 0, 1, 0, 0, 1, 500);
sevenSegmentWritePattern(0, 1, 1, 0, 1, 1, 0, 500);
break;
case 6:
// 樣式:逐一填滿又逐一消失
sevenSegmentWritePattern(1, 0, 0, 0, 0, 0, 0, 100);
sevenSegmentWritePattern(1, 1, 0, 0, 0, 0, 0, 100);
sevenSegmentWritePattern(1, 1, 1, 0, 0, 0, 0, 100);
sevenSegmentWritePattern(1, 1, 1, 1, 0, 0, 0, 100);
sevenSegmentWritePattern(1, 1, 1, 1, 1, 0, 0, 100);
sevenSegmentWritePattern(1, 1, 1, 1, 1, 1, 0, 100);
sevenSegmentWritePattern(0, 1, 1, 1, 1, 1, 0, 100);
sevenSegmentWritePattern(0, 0, 1, 1, 1, 1, 0, 100);
sevenSegmentWritePattern(0, 0, 0, 1, 1, 1, 0, 100);
sevenSegmentWritePattern(0, 0, 0, 0, 1, 1, 0, 100);
sevenSegmentWritePattern(0, 0, 0, 0, 0, 1, 0, 100);
sevenSegmentWritePattern(0, 0, 0, 0, 0, 0, 0, 200); // 暫停
break;
case 7:
// 樣式:全亮、全滅閃礫
sevenSegmentWritePattern(0, 0, 0, 0, 0, 0, 0, 200);
sevenSegmentWritePattern(1, 1, 1, 1, 1, 1, 1, 200);
break;
}
}74HC595
WS2812B
By 陳信嘉