陳信嘉
實習:LED 排燈的程式
第 1 章:Arduino 快速入門
第 2 章:看懂電子電路
第 3 章:Arduino 的數位輸出 / 輸入
第 4 章:Arduino 的類比輸出 / 輸入
第 5 章:用序列埠 (Serial Port) 與 PC 通訊
第 6 章:三色 LED 的控制
第 7 章:LED 排燈
第 8 章:光線感知 - 做一個自動照明系統
第 9 章:溫度感知 - 使用熱敏電阻監測水溫
第 10 章:潮濕感知 - 使一個花草澆水警示系統
第 11 章:使用七段顯示器 - 做一個按鈕計數器
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);
}
}