Try   HackMD

程式語言的變化 - LED 排燈練習

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
幾種簡單的變化

此處的範例,Arduino接上10個LED燈,分別從 4,5,6 到 13 號接腳

(P1)單一LED顯示

void setup() { pinMode(7, OUTPUT); // 輸出腳位 } void loop() { digitalWrite(7, HIGH); // 輸出亮 delay(500); digitalWrite(7, LOW); // 輸出滅 delay(500); }

(P2)多個LED顯示

一直重覆寫就對了?!

三個燈輪流亮滅

void setup() { pinMode(7, OUTPUT); // 輸出腳位 pinMode(8, OUTPUT); // 輸出腳位 pinMode(9, OUTPUT); // 輸出腳位 } void loop() { // led digitalWrite(7, HIGH); delay(500); digitalWrite(7, LOW); delay(500); // led digitalWrite(8, HIGH); delay(500); digitalWrite(8, LOW); delay(500); // led digitalWrite(9, HIGH); delay(500); digitalWrite(9, LOW); delay(500); }

(P3)三個燈一起亮滅

void setup() { pinMode(7, OUTPUT); // 輸出腳位 pinMode(8, OUTPUT); // 輸出腳位 pinMode(9, OUTPUT); // 輸出腳位 } void loop() { // led digitalWrite(7, HIGH); // 輸出亮 digitalWrite(8, HIGH); // 輸出亮 digitalWrite(9, HIGH); // 輸出亮 delay(500); digitalWrite(7, LOW); // 輸出滅 digitalWrite(8, LOW); // 輸出滅 digitalWrite(9, LOW); // 輸出滅 delay(500); }

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
利用程式強化靈活與彈性

  • 參數的設定
  • 迴圈運用
  • 內建函式
  • 運算技巧

(P4)迴圈運用

void setup() { for(int i=4; i<=13; i++) { pinMode(i, OUTPUT); // 輸出腳位 } /* pinMode(4, OUTPUT); // 輸出腳位 pinMode(5, OUTPUT); // 輸出腳位 pinMode(6, OUTPUT); // 輸出腳位 pinMode(7, OUTPUT); // 輸出腳位 pinMode(8, OUTPUT); // 輸出腳位 pinMode(9, OUTPUT); // 輸出腳位 pinMode(10, OUTPUT); // 輸出腳位 pinMode(11, OUTPUT); // 輸出腳位 pinMode(12, OUTPUT); // 輸出腳位 pinMode(13, OUTPUT); // 輸出腳位 */ } void loop() { int pin; for(int i=0; i<10; i++) { // led pin = i + 4; digitalWrite(pin,1); digitalWrite(pin+1,1); digitalWrite(pin+2,1); delay(100); digitalWrite(pin,0); digitalWrite(pin+1,0); digitalWrite(pin+2,0); delay(100); } }

(P5)Ring環狀

void setup() { for(int i=4; i<=13; i++) { pinMode(i, OUTPUT); // 輸出腳位 } } /* i : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 i%5 : 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 i%10: 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 */ void loop() { int pin1, pin2, pin3; for(int i=0; i<10; i++) { pin1 = 4 + ((i+0)%10); pin2 = 4 + ((i+1)%10); pin3 = 4 + ((i+2)%10); // led digitalWrite(pin1,1); digitalWrite(pin2,1); digitalWrite(pin3,1); delay(500); digitalWrite(pin1,0); digitalWrite(pin2,0); digitalWrite(pin3,0); delay(0); } }

(P6)內建隨機亂數,隨便選一個燈亮

void setup() { for(int i=4; i<=13; i++) { pinMode(i, OUTPUT); // 輸出腳位 } } void loop() { int pin; // pin = rand() % 10; // 0 1 2 3 4 5 6 7 8 9 // pin = (rand() % 10) + 4; // 4 5 6 7 8 9 10 11 12 13 pin = random(4, 14); digitalWrite(pin,1); delay(500); digitalWrite(pin,0); delay(0); }

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
做出更多樣的變化

  • 定義函式呼叫

(P7)指定參數、自建函式led()

// 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); }

(P8)用函式定義多種風格的顯示

// 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() { type_1(200); type_1(100); for(int i=0; i<20; i++) { type_1(10); } for(int i=0; i<=50; i++) { type_2(); } } void type_1(int u) { // int u=50; led(1,0,0,0,0,0,0,0,0,1); delay(u); led(0,1,0,0,0,0,0,0,1,0); delay(u); led(0,0,1,0,0,0,0,1,0,0); delay(u); led(0,0,0,1,0,0,1,0,0,0); delay(u); led(0,0,0,0,1,1,0,0,0,0); delay(u); led(0,0,0,0,1,1,0,0,0,0); delay(u); led(0,0,0,1,0,0,1,0,0,0); delay(u); led(0,0,1,0,0,0,0,1,0,0); delay(u); led(0,1,0,0,0,0,0,0,1,0); delay(u); led(1,0,0,0,0,0,0,0,0,1); delay(u); } void type_2() { u=100; 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 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); }