Arduino Arduino Arduino UNO Arduino Nano Arduino Mega

  • Slides: 198
Download presentation

Arduino 簡介 + +

Arduino 簡介 + +

Arduino的種類

Arduino的種類

Arduino UNO

Arduino UNO

Arduino Nano

Arduino Nano

Arduino Mega

Arduino Mega

Arduino Bluetooth

Arduino Bluetooth

Arduino Lily. Pad

Arduino Lily. Pad

Arduino Mini

Arduino Mini

Arduino Mini USB Adapter

Arduino Mini USB Adapter

Arduino Pro

Arduino Pro

Arduino Pro Mini

Arduino Pro Mini

類Arduino或Arduino相容的I/O board • Seeeduino • Sanguino • Pinguino • funnel IO • . .

類Arduino或Arduino相容的I/O board • Seeeduino • Sanguino • Pinguino • funnel IO • . . .

了解Arduino I/O board

了解Arduino I/O board

下載安裝Arduino IDE http: //arduino. cc/en/Main/Software

下載安裝Arduino IDE http: //arduino. cc/en/Main/Software

下載安裝Arduino IDE http: //arduino. cc/en/Main/Software

下載安裝Arduino IDE http: //arduino. cc/en/Main/Software

下載安裝Arduino IDE http: //arduino. cc/en/Main/Software

下載安裝Arduino IDE http: //arduino. cc/en/Main/Software

下載安裝Arduino IDE http: //arduino. cc/en/Main/Software

下載安裝Arduino IDE http: //arduino. cc/en/Main/Software

下載安裝Arduino IDE http: //arduino. cc/en/Main/Software

下載安裝Arduino IDE http: //arduino. cc/en/Main/Software

下載安裝Arduino IDE http: //arduino. cc/en/Main/Software

下載安裝Arduino IDE http: //arduino. cc/en/Main/Software

下載安裝Arduino IDE http: //arduino. cc/en/Main/Software

下載安裝Arduino IDE http: //arduino. cc/en/Main/Software

下載安裝Arduino IDE http: //arduino. cc/en/Main/Software

下載安裝Arduino IDE http: //arduino. cc/en/Main/Software

下載安裝Arduino IDE http: //arduino. cc/en/Main/Software

下載安裝Arduino IDE http: //arduino. cc/en/Main/Software

下載安裝Arduino IDE http: //arduino. cc/en/Main/Software

下載安裝Arduino IDE http: //arduino. cc/en/Main/Software

下載安裝Arduino IDE http: //arduino. cc/en/Main/Software

下載安裝Arduino IDE http: //arduino. cc/en/Main/Software

電阻色碼計算器 • https: //www. digikey. tw/zh/resou rces/conversioncalculators/conversion-calculatorresistor-color-code-4 -band

電阻色碼計算器 • https: //www. digikey. tw/zh/resou rces/conversioncalculators/conversion-calculatorresistor-color-code-4 -band

Built-in Functions

Built-in Functions

Variables, Arrays, and Data

Variables, Arrays, and Data

Operators

Operators

Structure & Flow

Structure & Flow

Libraries

Libraries

Libraries

Libraries

1. LED 閃爍實驗 //int led = 2; #define led 2 //定義數字IO 2的名字為led void setup()

1. LED 閃爍實驗 //int led = 2; #define led 2 //定義數字IO 2的名字為led void setup() //初始化部分 { pin. Mode(led, OUTPUT); //定義led引腳為輸出模式 } void loop() //主迴圈 { digital. Write(led, LOW); //led引腳輸出低電平,點亮led delay(1000); //延時1000 ms digital. Write(led, HIGH); //led引腳輸出高電平,熄滅led delay(1000); //延時1 s }

2. Hello. World實驗 void setup() { Serial. begin(9600); //設定串口串列傳輸速率為 9600 } void loop() {

2. Hello. World實驗 void setup() { Serial. begin(9600); //設定串口串列傳輸速率為 9600 } void loop() { Serial. println(“Hello world!”); //串口輸出Hello world! delay(1000); //延時1 s }

3. 按鍵控制LED實驗 void Scan. Key() { KEY_NUM = 0; if(digital. Read(KEY) == LOW) {

3. 按鍵控制LED實驗 void Scan. Key() { KEY_NUM = 0; if(digital. Read(KEY) == LOW) { delay(20); //延時去抖動 if(digital. Read(KEY) == LOW) { Buzzer. Di(); //滴一聲 KEY_NUM = 1; //設置鍵值 while(digital. Read(KEY) == LOW); //鬆手檢測 } } }

4. 有源蜂鳴器實驗 #define LED 13 #define KEY 2 #define Buzzer 3 int KEY_NUM =

4. 有源蜂鳴器實驗 #define LED 13 #define KEY 2 #define Buzzer 3 int KEY_NUM = 0; //按鍵鍵值變數 void setup() { pin. Mode(LED, OUTPUT); //LED為IO輸出 pin. Mode(KEY, INPUT_PULLUP); //按鍵為IO帶上拉輸入 pin. Mode(Buzzer, OUTPUT); //蜂鳴器為IO輸出 digital. Write(Buzzer, LOW); //蜂鳴器初始為不鳴叫 } void loop() { Scan. Key(); //按鍵掃描 if(KEY_NUM == 1) //當有按鍵按下時 { digital. Write(LED, !digital. Read(LED)); //LED狀態翻轉 } }

4. 有源蜂鳴器實驗 void Scan. Key() { KEY_NUM = 0; if(digital. Read(KEY) == LOW) {

4. 有源蜂鳴器實驗 void Scan. Key() { KEY_NUM = 0; if(digital. Read(KEY) == LOW) { delay(20); //延時去抖動 if(digital. Read(KEY) == LOW) { Buzzer. Di(); //滴一聲 KEY_NUM = 1; //設置鍵值 while(digital. Read(KEY) == LOW); //鬆手檢測 } } }

4. 有源蜂鳴器實驗 void Buzzer. Di() { digital. Write(Buzzer, HIGH); //蜂鳴器響 delay(20); //延時20 ms digital.

4. 有源蜂鳴器實驗 void Buzzer. Di() { digital. Write(Buzzer, HIGH); //蜂鳴器響 delay(20); //延時20 ms digital. Write(Buzzer, LOW); //蜂鳴器關閉 }

5. 可變電阻實驗 #define Pot A 0 //電位器引腳命名 int Pot. Buffer = 0; //AD讀取資料緩存變數 void

5. 可變電阻實驗 #define Pot A 0 //電位器引腳命名 int Pot. Buffer = 0; //AD讀取資料緩存變數 void setup() { Serial. begin(9600); //初始化串口串列傳輸速率為 9600 } void loop() { Pot. Buffer = analog. Read(Pot); //讀取AD值 Serial. print("Pot = "); //串口輸出“Pot = ” Serial. println(Pot. Buffer); //串口輸出Pot. Buffer的值 delay(500); //延時500 ms }

6. PWM 調光 #define Pot A 0 #define LED 3 int Pot. Buffer =

6. PWM 調光 #define Pot A 0 #define LED 3 int Pot. Buffer = 0; void setup() { pin. Mode(LED, OUTPUT); //IO輸出 } void loop() { Pot. Buffer = analog. Read(Pot); //讀取AD值 Pot. Buffer = map(Pot. Buffer, 0, 1023, 0, 255); //把AD值 0 -1023 縮放為 0 -255 analog. Write(LED, Pot. Buffer); //PWM調光,輸出PWM, 占空比為Pot. Buffer/255 }

7. 無源蜂鳴器實驗 #define Pot A 0 #define Buzzer 2 int Pot. Buffer = 0;

7. 無源蜂鳴器實驗 #define Pot A 0 #define Buzzer 2 int Pot. Buffer = 0; void setup() { pin. Mode(Buzzer, OUTPUT); //蜂鸣器引脚设定为输出 } void loop() { Pot. Buffer = analog. Read(Pot); //读取AD值 for(int i = 0 ; i < 100 ; i++) //循环 100次 { digital. Write(Buzzer, HIGH); //设置输出高电平 delay. Microseconds(Pot. Buffer); //延时Pot. Buffer值 us digital. Write(Buzzer, LOW); //设置输出低电平 delay. Microseconds(100); //延时 100 us } delay(1000); //延时 1000 ms }

8. 光敏電阻實驗 (天黑請開燈) #define ADpin A 5 #define LED 13 int ADBuffer = 0;

8. 光敏電阻實驗 (天黑請開燈) #define ADpin A 5 #define LED 13 int ADBuffer = 0; void setup() { pin. Mode(LED, OUTPUT); Serial. begin(9600); //串列傳輸速率9600 }

8. 光控 LED 實驗 (天黑請開燈) void loop() { ADBuffer = analog. Read(ADpin); //讀取AD值 Serial.

8. 光控 LED 實驗 (天黑請開燈) void loop() { ADBuffer = analog. Read(ADpin); //讀取AD值 Serial. print("AD = "); Serial. println(ADBuffer); if(ADBuffer > 900) //ADBuffer值大於設定值,相當於光照強度小於設定值 { digital. Write(LED, HIGH); //點亮LED } else { digital. Write(LED, LOW); //關閉LED } delay(500); //延時500 ms }

9. 一位共陰七段顯示實驗 0 1 2 3 4 5 6 7 8 9 h 0

9. 一位共陰七段顯示實驗 0 1 2 3 4 5 6 7 8 9 h 0 g 0 f 1 e 1 d 1 c 1 b 1 a 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 1 0 1 0 0 0 1 1 1 1 1 0 1 1 1 1

9. 一位共陰七段顯示實驗 #include <Arduino. h> #define SEG_a 2 //IO命名 #define SEG_b 3 #define SEG_c

9. 一位共陰七段顯示實驗 #include <Arduino. h> #define SEG_a 2 //IO命名 #define SEG_b 3 #define SEG_c 4 #define SEG_d 5 #define SEG_e 6 #define SEG_f 7 #define SEG_g 8 #define SEG_h 9

9. 一位共陰七段顯示實驗 void setup() { pin. Mode(SEG_a, OUTPUT); //設置引腳為輸出 pin. Mode(SEG_b, OUTPUT); pin. Mode(SEG_c,

9. 一位共陰七段顯示實驗 void setup() { pin. Mode(SEG_a, OUTPUT); //設置引腳為輸出 pin. Mode(SEG_b, OUTPUT); pin. Mode(SEG_c, OUTPUT); pin. Mode(SEG_d, OUTPUT); pin. Mode(SEG_e, OUTPUT); pin. Mode(SEG_f, OUTPUT); pin. Mode(SEG_g, OUTPUT); pin. Mode(SEG_h, OUTPUT); }

9. 一位共陰七段顯示實驗 void loop() { unsigned char i; for( i = 0 ; i

9. 一位共陰七段顯示實驗 void loop() { unsigned char i; for( i = 0 ; i < 10 ; i++) //迴圈顯示 0 -9 { digital. Write(SEG_a, table[i][7]); //設置a引腳的電平 digital. Write(SEG_b, table[i][6]); digital. Write(SEG_c, table[i][5]); digital. Write(SEG_d, table[i][4]); digital. Write(SEG_e, table[i][3]); digital. Write(SEG_f, table[i][2]); digital. Write(SEG_g, table[i][1]); digital. Write(SEG_h, table[i][0]); delay(1000); //延遲 1 s } }

10. 四位共陰七段顯示實驗 #include <Arduino. h> #define SEG_A 2 #define SEG_B 3 #define SEG_C 4

10. 四位共陰七段顯示實驗 #include <Arduino. h> #define SEG_A 2 #define SEG_B 3 #define SEG_C 4 #define SEG_D 5 #define SEG_E 6 #define SEG_F 7 #define SEG_G 8 #define SEG_H 9 #define COM 1 10 #define COM 2 11 #define COM 3 12 #define COM 4 13

10. 四位共陰七段顯示實驗 void setup() { pin. Mode(SEG_A, OUTPUT); //設置為輸出引腳 pin. Mode(SEG_B, OUTPUT); pin. Mode(SEG_C,

10. 四位共陰七段顯示實驗 void setup() { pin. Mode(SEG_A, OUTPUT); //設置為輸出引腳 pin. Mode(SEG_B, OUTPUT); pin. Mode(SEG_C, OUTPUT); pin. Mode(SEG_D, OUTPUT); pin. Mode(SEG_E, OUTPUT); pin. Mode(SEG_F, OUTPUT); pin. Mode(SEG_G, OUTPUT); pin. Mode(SEG_H, OUTPUT); pin. Mode(COM 1, OUTPUT); pin. Mode(COM 2, OUTPUT); pin. Mode(COM 3, OUTPUT); pin. Mode(COM 4, OUTPUT); }

10. 四位共陰七段顯示實驗 void loop() { Display(1, 1); //第 1位元顯示 1 delay(3); Display(2, 2); //第

10. 四位共陰七段顯示實驗 void loop() { Display(1, 1); //第 1位元顯示 1 delay(3); Display(2, 2); //第 2位元顯示 2 delay(3); Display(3, 3); //第 3位元顯示 3 delay(3); Display(4, 4); //第 4位元顯示 4 delay(3); }

10. 四位共陰七段顯示實驗 void Display(unsigned char com, unsigned char num) //顯示函數,com可選數值範圍1 -4,num可選數值範圍0 -9 { digital.

10. 四位共陰七段顯示實驗 void Display(unsigned char com, unsigned char num) //顯示函數,com可選數值範圍1 -4,num可選數值範圍0 -9 { digital. Write(SEG_A, LOW); //去除餘暉 digital. Write(SEG_B, LOW); digital. Write(SEG_C, LOW); digital. Write(SEG_D, LOW); digital. Write(SEG_E, LOW); digital. Write(SEG_F, LOW); digital. Write(SEG_G, LOW); digital. Write(SEG_H, LOW);

10. 四位共陰七段顯示實驗 switch(com) //選通位選 { case 1: digital. Write(COM 1, LOW); //選擇位1 digital. Write(COM

10. 四位共陰七段顯示實驗 switch(com) //選通位選 { case 1: digital. Write(COM 1, LOW); //選擇位1 digital. Write(COM 2, HIGH); digital. Write(COM 3, HIGH); digital. Write(COM 4, HIGH); break; case 2: digital. Write(COM 1, HIGH); digital. Write(COM 2, LOW); //選擇位2 digital. Write(COM 3, HIGH); digital. Write(COM 4, HIGH); break;

10. 四位共陰七段顯示實驗 case 3: digital. Write(COM 1, HIGH); digital. Write(COM 2, HIGH); digital. Write(COM

10. 四位共陰七段顯示實驗 case 3: digital. Write(COM 1, HIGH); digital. Write(COM 2, HIGH); digital. Write(COM 3, LOW); //選擇位3 digital. Write(COM 4, HIGH); break; case 4: digital. Write(COM 1, HIGH); digital. Write(COM 2, HIGH); digital. Write(COM 3, HIGH); digital. Write(COM 4, LOW); //選擇位4 break; default: break; }

10. 四位共陰七段顯示實驗 digital. Write(SEG_A, table[num][7]); //a查詢碼值表 digital. Write(SEG_B, table[num][6]); digital. Write(SEG_C, table[num][5]); digital. Write(SEG_D,

10. 四位共陰七段顯示實驗 digital. Write(SEG_A, table[num][7]); //a查詢碼值表 digital. Write(SEG_B, table[num][6]); digital. Write(SEG_C, table[num][5]); digital. Write(SEG_D, table[num][4]); digital. Write(SEG_E, table[num][3]); digital. Write(SEG_F, table[num][2]); digital. Write(SEG_G, table[num][1]); digital. Write(SEG_H, table[num][0]); }

11. 累加器實驗 #define KEY 0 int SUM = 0; int Flag_up = 1; pin.

11. 累加器實驗 #define KEY 0 int SUM = 0; int Flag_up = 1; pin. Mode(KEY, INPUT_PULLUP); //按鍵IO設定為帶上拉輸入

11. 累加器實驗 void loop() { if( Scan. Key() == 1) //當有按鍵按下時 { SUM++; //SUM加一

11. 累加器實驗 void loop() { if( Scan. Key() == 1) //當有按鍵按下時 { SUM++; //SUM加一 if(SUM>9999) //最大值 9999,不再累加 { SUM = 9999; } } Display(1, SUM/1000); //顯示SUM千位元值 delay(3); Display(2, SUM%1000/100); //顯示SUM百位元值 delay(3); Display(3, SUM%100/10); //顯示SUM十位元值 delay(3); Display(4, SUM%10); //顯示SUM個位值 delay(3); }

11. 累加器實驗 unsigned char Scan. Key() //按鍵掃描程式,返回鍵值 { if(Flag_up && digital. Read(KEY) == LOW)

11. 累加器實驗 unsigned char Scan. Key() //按鍵掃描程式,返回鍵值 { if(Flag_up && digital. Read(KEY) == LOW) { Flag_up = 0; //清空Flag_up delay(20); //延時去抖動 if(digital. Read(KEY) == LOW) //按鍵按下 { return 1; //返回鍵值 1 } } if(digital. Read(KEY) == HIGH) //按鍵鬆開時候 { Flag_up = 1; //置位Flag_up } return 0; //返回鍵值 0 } //當Flag_up = 1並且按鍵按下時

12. 步進馬達驅動實驗 #include <Arduino. h> #define A 1 2 //引腳命名 #define B 1 3

12. 步進馬達驅動實驗 #include <Arduino. h> #define A 1 2 //引腳命名 #define B 1 3 #define C 1 4 #define D 1 5 void setup() { pin. Mode(A 1, OUTPUT); //設置引腳為輸出引腳 pin. Mode(B 1, OUTPUT); pin. Mode(C 1, OUTPUT); pin. Mode(D 1, OUTPUT); }

12. 步進馬達驅動實驗 void Phase_A() { digital. Write(A 1, HIGH); //A 1引腳高電平 digital. Write(B 1,

12. 步進馬達驅動實驗 void Phase_A() { digital. Write(A 1, HIGH); //A 1引腳高電平 digital. Write(B 1, LOW); digital. Write(C 1, LOW); digital. Write(D 1, LOW); } void Phase_B() { digital. Write(A 1, LOW); digital. Write(B 1, HIGH); //B 1引腳高電平 digital. Write(C 1, LOW); digital. Write(D 1, LOW); }

12. 步進馬達驅動實驗 void Phase_C() { digital. Write(A 1, LOW); digital. Write(B 1, LOW); digital.

12. 步進馬達驅動實驗 void Phase_C() { digital. Write(A 1, LOW); digital. Write(B 1, LOW); digital. Write(C 1, HIGH); //C 1引腳高電平 digital. Write(D 1, LOW); } void Phase_D() { digital. Write(A 1, LOW); digital. Write(B 1, LOW); digital. Write(C 1, LOW); digital. Write(D 1, HIGH); //D 1引腳高電平 }

#define LM 35 A 0 int val = 0; //存放AD變數緩存 float temp = 0;

#define LM 35 A 0 int val = 0; //存放AD變數緩存 float temp = 0; //溫度值 void setup() { Serial. begin(9600); //串口串列傳輸速率9600 } void loop() { val = analog. Read(LM 35); //讀取AD值 temp = val * 0. 48876; //計算溫度值 Serial. print("LM 35 = "); Serial. println(temp); //串口輸出溫度值 delay(1000); }

14. 液晶LCD 1602實驗 Liquid. Crystal I 2 C

14. 液晶LCD 1602實驗 Liquid. Crystal I 2 C

14. 液晶LCD 1602實驗 Liquid. Crystal I 2 C #include <Liquid. Crystal. h> #define LM

14. 液晶LCD 1602實驗 Liquid. Crystal I 2 C #include <Liquid. Crystal. h> #define LM 35 A 0 Liquid. Crystal lcd(12, 11, 5, 4, 3, 2); //構造一個Liquid. Crystal的類成員。使用數位IO ,12, 11, 5, 4, 3, 2 int val = 0; //存放AD變數值 float temp = 0; //存放溫度值的10倍 void setup() { lcd. begin(16, 2); //初始化LCD 1602 lcd. print("Welcome to use!"); //液晶顯示Welcome to use! delay(1000); //延時1000 ms lcd. clear(); //液晶清屏 }

14. 液晶LCD 1602實驗 Liquid. Crystal I 2 C void loop() { val = analog.

14. 液晶LCD 1602實驗 Liquid. Crystal I 2 C void loop() { val = analog. Read(LM 35); //讀取AD值 temp = val * 4. 8876; //轉換為溫度值的10倍,有利於液晶顯示 lcd. set. Cursor(0, 0); //設置液晶開始顯示的指標位置 lcd. print("LM 35 temp ="); //液晶顯示“LM 35 temp =” lcd. set. Cursor(0, 1); //設置液晶開始顯示的指標位置 lcd. print((int)temp/10); //液晶顯示溫度整數值 lcd. print(". "); //液晶顯示小數點 lcd. print((int)temp%10); //液晶顯示溫度小數值 lcd. print((char)223); //液晶顯示"°" lcd. print("C"); //液晶顯示“C” delay(1000); //延時1000 ms }

15. 水銀開關實驗 void setup() { pin. Mode(KEY, INPUT_PULLUP); //按鍵設置為輸入帶上拉 pin. Mode(Buzzer, OUTPUT); //attach. Interrupt(0,

15. 水銀開關實驗 void setup() { pin. Mode(KEY, INPUT_PULLUP); //按鍵設置為輸入帶上拉 pin. Mode(Buzzer, OUTPUT); //attach. Interrupt(0, Buzzer. Di, FALLING); //設置ARDUINO UNO中斷 0(數字IO 2),下降沿觸發中斷函數Buzzer. Di, attach. Interrupt(1, Buzzer. Di, FALLING); //設置ARDUINO Leonardo中斷 1(數字IO 2),這點和UNO有所不同,請知悉! Serial. begin(9600); }

15. 水銀開關實驗 void loop() { if(flag == 1 //如果flag被置一,說明有中斷產生,執行該段程式 { flag = 0; //flag清零

15. 水銀開關實驗 void loop() { if(flag == 1 //如果flag被置一,說明有中斷產生,執行該段程式 { flag = 0; //flag清零 digital. Write(Buzzer, HIGH); //蜂鳴器響 delay(1000); //延時1000 ms } else { digital. Write(Buzzer, LOW); //沒有中斷時候,蜂鳴器不響 } Serial. println(count); //串口顯示中斷次數 }

16. 火焰感測器實驗 #define ADpin A 0 #define Buzzer 2 int ADBuffer = 0; void

16. 火焰感測器實驗 #define ADpin A 0 #define Buzzer 2 int ADBuffer = 0; void setup() { pin. Mode(Buzzer, OUTPUT); Serial. begin(9600); }

16. 火焰感測器實驗 void loop() { ADBuffer = analog. Read(ADpin); //都AD值 Serial. print("AD = ");

16. 火焰感測器實驗 void loop() { ADBuffer = analog. Read(ADpin); //都AD值 Serial. print("AD = "); Serial. println(ADBuffer); if(ADBuffer > 20) //當AD值大於設定值時候 { digital. Write(Buzzer, HIGH); //蜂鳴器報警 } else { digital. Write(Buzzer, LOW); //蜂鳴器取消報警 } delay(500); //延時500 ms }

17. 三原色 LED 七彩變換 #define LED_R 2 #define LED_G 3 #define LED_B 4 enum{Color_R,

17. 三原色 LED 七彩變換 #define LED_R 2 #define LED_G 3 #define LED_B 4 enum{Color_R, Color_G, Color_B, Color_RG, Color_RB, Color_GB, Color_RGB}; //枚舉所有的顏色 //紅,綠,藍,黃,紫,青,白 void setup() { pin. Mode(LED_R, OUTPUT); pin. Mode(LED_G, OUTPUT); pin. Mode(LED_B, OUTPUT); }

17. 三原色 LED 七彩變換 void loop() { unsigned int i; for(i = 0 ;

17. 三原色 LED 七彩變換 void loop() { unsigned int i; for(i = 0 ; i < 7 ; i++) //七種顏色選擇 { Change_Color(i); //選擇第i種顏色顯示 delay(1000); //延時1000 ms } }

17. 三原色 LED 七彩變換 void Change_Color(unsigned char data_color) //選擇顏色函數 { switch(data_color) { case Color_R:

17. 三原色 LED 七彩變換 void Change_Color(unsigned char data_color) //選擇顏色函數 { switch(data_color) { case Color_R: //紅色 digital. Write(LED_R, LOW); digital. Write(LED_G, HIGH); digital. Write(LED_B, HIGH); break; case Color_G: //綠色 digital. Write(LED_R, HIGH); digital. Write(LED_G, LOW); digital. Write(LED_B, HIGH); break;

17. 三原色 LED 七彩變換 case Color_B: //藍色 digital. Write(LED_R, HIGH); digital. Write(LED_G, HIGH); digital.

17. 三原色 LED 七彩變換 case Color_B: //藍色 digital. Write(LED_R, HIGH); digital. Write(LED_G, HIGH); digital. Write(LED_B, LOW); break; case Color_RG: //黃色 digital. Write(LED_R, LOW); digital. Write(LED_G, LOW); digital. Write(LED_B, HIGH); break;

17. 三原色 LED 七彩變換 case Color_RB: //紫色 digital. Write(LED_R, LOW); digital. Write(LED_G, HIGH); digital.

17. 三原色 LED 七彩變換 case Color_RB: //紫色 digital. Write(LED_R, LOW); digital. Write(LED_G, HIGH); digital. Write(LED_B, LOW); break; case Color_GB: //青色 digital. Write(LED_R, HIGH); digital. Write(LED_G, LOW); digital. Write(LED_B, LOW); break;

17. 三原色 LED 七彩變換 case Color_RGB: //白色 digital. Write(LED_R, LOW); digital. Write(LED_G, LOW); digital.

17. 三原色 LED 七彩變換 case Color_RGB: //白色 digital. Write(LED_R, LOW); digital. Write(LED_G, LOW); digital. Write(LED_B, LOW); break; default: break; } }

18. 通過按鍵切換 LED 顏色 #define LED_R 2 #define LED_G 3 #define LED_B 4 #define

18. 通過按鍵切換 LED 顏色 #define LED_R 2 #define LED_G 3 #define LED_B 4 #define KEY 5 unsigned char KEY_NUM = 0; unsigned char Color_Value = 0; enum{Color_R, Color_G, Color_B, Color_RG, Color_RB, Color_GB, Color_RGB}; //枚舉所有顏色 //紅,綠,藍,黃,紫,青,白 void setup() { pin. Mode(LED_R, OUTPUT); pin. Mode(LED_G, OUTPUT); pin. Mode(LED_B, OUTPUT); pin. Mode(KEY, INPUT_PULLUP); Change_Color(Color_RGB); //初始化顏色為白色 }

18. 通過按鍵切換 LED 顏色 void loop() { Scan_KEY(); //按鍵掃描 if(KEY_NUM == 1) //按鍵執行程式 {

18. 通過按鍵切換 LED 顏色 void loop() { Scan_KEY(); //按鍵掃描 if(KEY_NUM == 1) //按鍵執行程式 { KEY_NUM = 0; //清空標誌位元 Change_Color(Color_Value); //切換顏色 Color_Value++; //顏色變數+1 if(Color_Value == Color_RGB+1) //當顏色變數 == 7 { Color_Value = Color_R; //顏色變數清零 } } }

18. 通過按鍵切換 LED 顏色 void Change_Color(unsigned char data_color) //選擇顏色函數 { switch(data_color) { case Color_R:

18. 通過按鍵切換 LED 顏色 void Change_Color(unsigned char data_color) //選擇顏色函數 { switch(data_color) { case Color_R: //紅色 digital. Write(LED_R, LOW); digital. Write(LED_G, HIGH); digital. Write(LED_B, HIGH); break; case Color_G: //綠色 digital. Write(LED_R, HIGH); digital. Write(LED_G, LOW); digital. Write(LED_B, HIGH); break;

18. 通過按鍵切換 LED 顏色 case Color_B: //藍色 digital. Write(LED_R, HIGH); digital. Write(LED_G, HIGH); digital.

18. 通過按鍵切換 LED 顏色 case Color_B: //藍色 digital. Write(LED_R, HIGH); digital. Write(LED_G, HIGH); digital. Write(LED_B, LOW); break; case Color_RG: //黃色 digital. Write(LED_R, LOW); digital. Write(LED_G, LOW); digital. Write(LED_B, HIGH); break;

18. 通過按鍵切換 LED 顏色 case Color_RB: //紫色 digital. Write(LED_R, LOW); digital. Write(LED_G, HIGH); digital.

18. 通過按鍵切換 LED 顏色 case Color_RB: //紫色 digital. Write(LED_R, LOW); digital. Write(LED_G, HIGH); digital. Write(LED_B, LOW); break; case Color_GB: //青色 digital. Write(LED_R, HIGH); digital. Write(LED_G, LOW); digital. Write(LED_B, LOW); break;

18. 通過按鍵切換 LED 顏色 case Color_RGB: //白色 digital. Write(LED_R, LOW); digital. Write(LED_G, LOW); digital.

18. 通過按鍵切換 LED 顏色 case Color_RGB: //白色 digital. Write(LED_R, LOW); digital. Write(LED_G, LOW); digital. Write(LED_B, LOW); break; default: break; } }

19. 三彩漸變效果實驗 #define LED_R 3 #define LED_G 5 #define LED_B 6 int PWMValue =

19. 三彩漸變效果實驗 #define LED_R 3 #define LED_G 5 #define LED_B 6 int PWMValue = 0; void setup() { analog. Write(LED_R, 255); //高電平 255 = 占空比是 100%,IO相當於輸出高電平,紅色LED熄滅 analog. Write(LED_G, 255); //高電平 255 = 占空比是 100%,IO相當於輸出高電平,綠色LED熄滅 analog. Write(LED_B, 255); //高電平 255 = 占空比是 100%,IO相當於輸出高電平,藍色LED熄滅 }

19. 三彩漸變效果實驗 void loop() { int i = 0; PWMValue = 255; for(i =

19. 三彩漸變效果實驗 void loop() { int i = 0; PWMValue = 255; for(i = 0 ; i < 255 ; i++) //紅色逐漸變亮 { analog. Write(LED_R, PWMValue--); analog. Write(LED_G, 255); analog. Write(LED_B, 255); delay(10); } PWMValue = 0; for(i = 0 ; i < 255 ; i++) //逐漸變暗 { analog. Write(LED_R, PWMValue++); analog. Write(LED_G, 255); analog. Write(LED_B, 255); delay(10); }

19. 三彩漸變效果實驗 PWMValue = 255; for(i = 0 ; i < 255 ; i++)

19. 三彩漸變效果實驗 PWMValue = 255; for(i = 0 ; i < 255 ; i++) //綠色逐漸變亮 { analog. Write(LED_R, 255); analog. Write(LED_G, PWMValue--); analog. Write(LED_B, 255); delay(10); } PWMValue = 0; for(i = 0 ; i < 255 ; i++) //逐漸變暗 { analog. Write(LED_R, 255); analog. Write(LED_G, PWMValue++); analog. Write(LED_B, 255); delay(10); }

19. 三彩漸變效果實驗 PWMValue = 255; for(i = 0 ; i < 255 ; i++)

19. 三彩漸變效果實驗 PWMValue = 255; for(i = 0 ; i < 255 ; i++) //藍色逐漸變亮 { analog. Write(LED_R, 255); analog. Write(LED_G, 255); analog. Write(LED_B, PWMValue--); delay(10); } PWMValue = 0; for(i = 0 ; i < 255 ; i++) //逐漸變暗 { analog. Write(LED_R, 255); analog. Write(LED_G, 255); analog. Write(LED_B, PWMValue++); delay(10); } }

20. 74 HC 595 移位暫存器(Shift Register)實驗

20. 74 HC 595 移位暫存器(Shift Register)實驗

20. 74 HC 595 移位暫存器(Shift Register)實驗 int latch. Pin = 8; int clock. Pin

20. 74 HC 595 移位暫存器(Shift Register)實驗 int latch. Pin = 8; int clock. Pin = 12; int data. Pin = 11; //這裡定義了那三個腳 unsigned char table[] = {0 x 01, 0 x 02, 0 x 04, 0 x 08, 0 x 10, 0 x 20, 0 x 40, 0 x 80}; //LED狀態顯示的變數 void setup () { pin. Mode(latch. Pin, OUTPUT); pin. Mode(clock. Pin, OUTPUT); pin. Mode(data. Pin, OUTPUT); //讓三個腳都是輸出狀態 }

20. 74 HC 595 移位暫存器(Shift Register)實驗 void loop() { for(int i=0; i<8; i++) {

20. 74 HC 595 移位暫存器(Shift Register)實驗 void loop() { for(int i=0; i<8; i++) { digital. Write(latch. Pin, LOW); //將ST_CP口上面加低電平讓晶片準備好接收資料 shift. Out(data. Pin, clock. Pin, MSBFIRST, table[i]); //串列資料登錄引腳為data. Pin,時鐘引腳為clock. Pin,執行MSB有限發送,發送資料table[i] digital. Write(latch. Pin, HIGH); //將ST_CP這個針腳恢復到高電平 delay(500); //延時500 ms } }

21. LED點陣實驗 #define H 1 2 #define H 2 7 #define H 3 A

21. LED點陣實驗 #define H 1 2 #define H 2 7 #define H 3 A 5 #define H 4 5 #define H 5 13 #define H 6 A 4 #define H 7 12 #define H 8 A 2 #define L 1 6 #define L 2 11 #define L 3 10 #define L 4 3 #define L 5 A 3 #define L 6 4 #define L 7 8 #define L 8 9

21. LED點陣實驗 unsigned char table 1[8][8] = //大“心型”的數據 { 0, 0, 0, 1, 1,

21. LED點陣實驗 unsigned char table 1[8][8] = //大“心型”的數據 { 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, };

21. LED點陣實驗 unsigned char table 2[8][8] = //小“心型”的數據 { 0, 0, 0, 0, 0,

21. LED點陣實驗 unsigned char table 2[8][8] = //小“心型”的數據 { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, };

21. LED點陣實驗 void setup() { pin. Mode(H 1, OUTPUT); pin. Mode(H 2, OUTPUT); pin.

21. LED點陣實驗 void setup() { pin. Mode(H 1, OUTPUT); pin. Mode(H 2, OUTPUT); pin. Mode(H 3, OUTPUT); pin. Mode(H 4, OUTPUT); pin. Mode(H 5, OUTPUT); pin. Mode(H 6, OUTPUT); pin. Mode(H 7, OUTPUT); pin. Mode(H 8, OUTPUT); pin. Mode(L 1, OUTPUT); pin. Mode(L 2, OUTPUT); pin. Mode(L 3, OUTPUT); pin. Mode(L 4, OUTPUT); pin. Mode(L 5, OUTPUT); pin. Mode(L 6, OUTPUT); pin. Mode(L 7, OUTPUT); pin. Mode(L 8, OUTPUT); }

21. LED點陣實驗 void Display(unsigned char dat[8][8]) //顯示函數 { digital. Write(L 1, LOW); //選通第一列 digital.

21. LED點陣實驗 void Display(unsigned char dat[8][8]) //顯示函數 { digital. Write(L 1, LOW); //選通第一列 digital. Write(H 1, dat[0][0]); digital. Write(H 2, dat[1][0]); digital. Write(H 3, dat[2][0]); digital. Write(H 4, dat[3][0]); digital. Write(H 5, dat[4][0]); digital. Write(H 6, dat[5][0]); digital. Write(H 7, dat[6][0]); digital. Write(H 8, dat[7][0]); delay(1); //延時一小段時間,等待LED被點亮 Clear(); //清空顯示去除餘暉

21. LED點陣實驗 digital. Write(L 2, LOW); //選通第二列 digital. Write(H 1, dat[0][1]); digital. Write(H 2,

21. LED點陣實驗 digital. Write(L 2, LOW); //選通第二列 digital. Write(H 1, dat[0][1]); digital. Write(H 2, dat[1][1]); digital. Write(H 3, dat[2][1]); digital. Write(H 4, dat[3][1]); digital. Write(H 5, dat[4][1]); digital. Write(H 6, dat[5][1]); digital. Write(H 7, dat[6][1]); digital. Write(H 8, dat[7][1]); delay(1); Clear();

21. LED點陣實驗 digital. Write(L 3, LOW); //選通第三列 digital. Write(H 1, dat[0][2]); digital. Write(H 2,

21. LED點陣實驗 digital. Write(L 3, LOW); //選通第三列 digital. Write(H 1, dat[0][2]); digital. Write(H 2, dat[1][2]); digital. Write(H 3, dat[2][2]); digital. Write(H 4, dat[3][2]); digital. Write(H 5, dat[4][2]); digital. Write(H 6, dat[5][2]); digital. Write(H 7, dat[6][2]); digital. Write(H 8, dat[7][2]); delay(1); Clear();

21. LED點陣實驗 digital. Write(L 4, LOW); //選通第四列 digital. Write(H 1, dat[0][3]); digital. Write(H 2,

21. LED點陣實驗 digital. Write(L 4, LOW); //選通第四列 digital. Write(H 1, dat[0][3]); digital. Write(H 2, dat[1][3]); digital. Write(H 3, dat[2][3]); digital. Write(H 4, dat[3][3]); digital. Write(H 5, dat[4][3]); digital. Write(H 6, dat[5][3]); digital. Write(H 7, dat[6][3]); digital. Write(H 8, dat[7][3]); delay(1); Clear();

21. LED點陣實驗 digital. Write(L 5, LOW); //選通第五列 digital. Write(H 1, dat[0][4]); digital. Write(H 2,

21. LED點陣實驗 digital. Write(L 5, LOW); //選通第五列 digital. Write(H 1, dat[0][4]); digital. Write(H 2, dat[1][4]); digital. Write(H 3, dat[2][4]); digital. Write(H 4, dat[3][4]); digital. Write(H 5, dat[4][4]); digital. Write(H 6, dat[5][4]); digital. Write(H 7, dat[6][4]); digital. Write(H 8, dat[7][4]); delay(1); Clear();

21. LED點陣實驗 digital. Write(L 6, LOW); //選通第六列 digital. Write(H 1, dat[0][5]); digital. Write(H 2,

21. LED點陣實驗 digital. Write(L 6, LOW); //選通第六列 digital. Write(H 1, dat[0][5]); digital. Write(H 2, dat[1][5]); digital. Write(H 3, dat[2][5]); digital. Write(H 4, dat[3][5]); digital. Write(H 5, dat[4][5]); digital. Write(H 6, dat[5][5]); digital. Write(H 7, dat[6][5]); digital. Write(H 8, dat[7][5]); delay(1); Clear();

21. LED點陣實驗 digital. Write(L 7, LOW); //選通第七列 digital. Write(H 1, dat[0][6]); digital. Write(H 2,

21. LED點陣實驗 digital. Write(L 7, LOW); //選通第七列 digital. Write(H 1, dat[0][6]); digital. Write(H 2, dat[1][6]); digital. Write(H 3, dat[2][6]); digital. Write(H 4, dat[3][6]); digital. Write(H 5, dat[4][6]); digital. Write(H 6, dat[5][6]); digital. Write(H 7, dat[6][6]); digital. Write(H 8, dat[7][6]); delay(1); Clear();

21. LED點陣實驗 digital. Write(L 8, LOW); //選通第八列 digital. Write(H 1, dat[0][7]); digital. Write(H 2,

21. LED點陣實驗 digital. Write(L 8, LOW); //選通第八列 digital. Write(H 1, dat[0][7]); digital. Write(H 2, dat[1][7]); digital. Write(H 3, dat[2][7]); digital. Write(H 4, dat[3][7]); digital. Write(H 5, dat[4][7]); digital. Write(H 6, dat[5][7]); digital. Write(H 7, dat[6][7]); digital. Write(H 8, dat[7][7]); delay(1); Clear(); }

21. LED點陣實驗 void Clear() //清空顯示 { digital. Write(H 1, LOW); digital. Write(H 2, LOW);

21. LED點陣實驗 void Clear() //清空顯示 { digital. Write(H 1, LOW); digital. Write(H 2, LOW); digital. Write(H 3, LOW); digital. Write(H 4, LOW); digital. Write(H 5, LOW); digital. Write(H 6, LOW); digital. Write(H 7, LOW); digital. Write(H 8, LOW);

21. LED點陣實驗 digital. Write(L 1, HIGH); digital. Write(L 2, HIGH); digital. Write(L 3, HIGH);

21. LED點陣實驗 digital. Write(L 1, HIGH); digital. Write(L 2, HIGH); digital. Write(L 3, HIGH); digital. Write(L 4, HIGH); digital. Write(L 5, HIGH); digital. Write(L 6, HIGH); digital. Write(L 7, HIGH); digital. Write(L 8, HIGH); }

22. 溫濕度感測器 DHT 11 實驗 #include <Arduino. h> #include "DHT 11. h" DHT 11

22. 溫濕度感測器 DHT 11 實驗 #include <Arduino. h> #include "DHT 11. h" DHT 11 my. DHT 11(2); void setup() //Arduino程式初始化程式放在這裡,只在開機時候運行一次 { Serial. begin(9600); //設置通訊的串列傳輸速率為 9600 Serial. println("Welcome to use!"); //發送的內容 Serial. println("Ilovemcu. taobao. com"); //發送的內容 }

22. 溫濕度感測器 DHT 11 實驗 void loop() //Arduino程式的主程序部分,迴圈運行內部程式 { my. DHT 11_Read(); //讀取溫濕度值 Serial.

22. 溫濕度感測器 DHT 11 實驗 void loop() //Arduino程式的主程序部分,迴圈運行內部程式 { my. DHT 11_Read(); //讀取溫濕度值 Serial. print("HUMI = "); Serial. print(my. DHT 11. HUMI_Buffer_Int); Serial. println(" %RH"); Serial. print("TMEP = "); Serial. print(my. DHT 11. TEM_Buffer_Int); Serial. println(" C"); delay(1000); //延時1 s }

23. 超音波測距實驗 #define Trig. Pin 2 #define Echo. Pin 3 float Value_cm; void setup()

23. 超音波測距實驗 #define Trig. Pin 2 #define Echo. Pin 3 float Value_cm; void setup() { Serial. begin(9600); pin. Mode(Trig. Pin, OUTPUT); pin. Mode(Echo. Pin, INPUT); }

1. RFID感應

1. RFID感應

1. RFID感應

1. RFID感應

1. RFID感應

1. RFID感應

1. RFID感應 /* * * All the resources for this project: https: //www. hackster.

1. RFID感應 /* * * All the resources for this project: https: //www. hackster. io/Aritro * Modified by Aritro Mukherjee * * */ #include <SPI. h> #include <MFRC 525. h> #define SS_PIN 10 #define RST_PIN 9 MFRC 522 mfrc 522(SS_PIN, RST_PIN); // Create MFRC 522 instance. void setup() { Serial. begin(9600); // Initiate a serial communication SPI. begin(); // Initiate SPI bus mfrc 525. PCD_Init(); // Initiate MFRC 522 Serial. println("Approximate your card to the reader. . . "); Serial. println(); } void loop()

2. 使用 4 X 4鍵盤 #include <Keypad. h> const byte num. Rows= 4; //number

2. 使用 4 X 4鍵盤 #include <Keypad. h> const byte num. Rows= 4; //number of rows on the keypad const byte num. Cols= 4; //number of columns on the keypad /*keymap defines the key pressed according to the row and columns just as appears on the keypad*/ char keymap[num. Rows][num. Cols]= { {1, 2, 3, A}, {4, 5, 6, B}, {7, 8, 9, C}, {*, 0, #, D} }; //Code that shows the keypad connections to the arduino terminals byte row. Pins[num. Rows] = {9, 8, 7, 6}; //Rows 0 to 3 byte col. Pins[num. Cols]= {5, 4, 3, 2}; //Columns 0 to 3 //initializes an instance of the Keypad class Keypad my. Keypad= Keypad(make. Keymap(keymap), row. Pins, col. Pins, num. Rows, num. Cols);

2. 使用 4 X 4鍵盤 void setup() { Serial. begin(9600); } //If key is

2. 使用 4 X 4鍵盤 void setup() { Serial. begin(9600); } //If key is pressed, this key is stored in keypressed variable //If key is not equal to NO_KEY, then this key is printed out //if count=17, then count is reset back to 0 (this means no key is pressed during the whole keypad scan process void loop() { char keypressed = my. Keypad. get. Key(); if (keypressed != NO_KEY) { Serial. println(keypressed); } }

3. 模擬擲骰子 // set to 1 if we're debugging #define DEBUG 0 // 6

3. 模擬擲骰子 // set to 1 if we're debugging #define DEBUG 0 // 6 consecutive digital pins for the LEDs int first = 2; int second = 3; int third = 4; int fourth = 5; int fifth = 6; int sixth = 7; // pin for the button switch int button = 12; // value to check state of button switch int pressed = 0;

3. 模擬擲骰子 void setup() { // set all LED pins to OUTPUT for (int

3. 模擬擲骰子 void setup() { // set all LED pins to OUTPUT for (int i=first; i<=sixth; i++) { pin. Mode(i, OUTPUT); } // set buttin pin to INPUT pin. Mode(button, INPUT); // initialize random seed by noise from analog pin 0 (should be unconnected) random. Seed(analog. Read(0)); // if we're debugging, connect to serial #ifdef DEBUG Serial. begin(9600); #endif }

3. 模擬擲骰子 void build. Up. Tension() { // light LEDs from left to right

3. 模擬擲骰子 void build. Up. Tension() { // light LEDs from left to right and back to build up tension // while waiting for the dice to be thrown // left to right for (int i=first; i<=sixth; i++) { if (i!=first) { digital. Write(i-1, LOW); } digital. Write(i, HIGH); delay(100); } // right to left for (int i=sixth; i>=first; i--) { if (i!=sixth) { digital. Write(i+1, LOW); } digital. Write(i, HIGH); delay(100); } }

3. 模擬擲骰子 void show. Number(int number) { digital. Write(first, HIGH); if (number >= 2)

3. 模擬擲骰子 void show. Number(int number) { digital. Write(first, HIGH); if (number >= 2) { digital. Write(second, HIGH); } if (number >= 3) { digital. Write(third, HIGH); } if (number >= 4) { digital. Write(fourth, HIGH); } if (number >= 5) { digital. Write(fifth, HIGH); } if (number == 6) { digital. Write(sixth, HIGH); } }

3. 模擬擲骰子 int throw. Dice() { // get a random number in the range

3. 模擬擲骰子 int throw. Dice() { // get a random number in the range [1, 6] int rand. Number = random(1, 7); #ifdef DEBUG Serial. println(rand. Number); #endif return rand. Number; } void set. All. LEDs(int value) { for (int i=first; i<=sixth; i++) { digital. Write(i, value); } }

3. 模擬擲骰子 void loop() { // if button is pressed - throw the dice

3. 模擬擲骰子 void loop() { // if button is pressed - throw the dice pressed = digital. Read(button); if (pressed == HIGH) { // remove previous number set. All. LEDs(LOW); build. Up. Tension(); int thrown. Number = throw. Dice(); show. Number(thrown. Number); } }

4. 超音波測距離並顯示在LCD上 /*LCD circuit: * LCD RS pin to digital pin 12 * LCD

4. 超音波測距離並顯示在LCD上 /*LCD circuit: * LCD RS pin to digital pin 12 * LCD Enable pin to digital pin 11 * LCD D 4 pin to digital pin 5 * LCD D 5 pin to digital pin 4 * LCD D 6 pin to digital pin 3 * LCD D 7 pin to digital pin 2 * LCD R/W pin to ground * LCD VSS pin to ground * LCD VCC pin to 5 V * 10 K resistor: * ends to +5 V and ground * wiper to LCD VO pin (pin 3)*/

4. 超音波測距離並顯示在LCD上 #include<Liquid. Crystal. h> Liquid. Crystal lcd(12, 11, 5, 4, 3, 2); //Interface

4. 超音波測距離並顯示在LCD上 #include<Liquid. Crystal. h> Liquid. Crystal lcd(12, 11, 5, 4, 3, 2); //Interface pins of the LCD const int trig_pin=8; const int echo_pin=9; long distance, duration; void setup() { lcd. begin(16, 2); lcd. set. Cursor(0, 0); //set the cursor to column 0 and line 0 pin. Mode(8, OUTPUT); pin. Mode(9, INPUT); }

4. 超音波測距離並顯示在LCD上 void loop() { digital. Write(8, HIGH); delay. Microseconds(20); digital. Write(8, LOW); delay.

4. 超音波測距離並顯示在LCD上 void loop() { digital. Write(8, HIGH); delay. Microseconds(20); digital. Write(8, LOW); delay. Microseconds(20); duration = pulse. In(echo_pin, HIGH); //To receive the reflected signal. distance= duration*3. 034/2; lcd. set. Cursor(0, 1); //set the cursor to column 0 and line 1 lcd. print(distance); lcd. print("cm"); delay(100); }

5. 溫控風扇 #include "DHT. h" #include "Liquid. Crystal. h" Liquid. Crystal lcd(7, 8, 9,

5. 溫控風扇 #include "DHT. h" #include "Liquid. Crystal. h" Liquid. Crystal lcd(7, 8, 9, 10, 11 , 12); #define DHTPIN 6 #define DHTTYPE DHT 22 DHT sensor(DHTPIN, DHTTYPE); int relay_pin = 9; void setup() { lcd. begin(16, 2); sensor. begin(); pin. Mode(relay_pin, OUTPUT); digital. Write(relay_pin, HIGH); }

5. 溫控風扇 void loop() { lcd. clear(); float t = sensor. read. Temperature(); //reading

5. 溫控風扇 void loop() { lcd. clear(); float t = sensor. read. Temperature(); //reading the temperature from the sensor // Checking if the sensor is sending values or not if (isnan(t)) { lcd. print("Failed"); delay(1000); return; } lcd. set. Cursor(0, 0); lcd. print("Temp: "); lcd. print(t); lcd. print(" C");

5. 溫控風扇 if (t > 35) { digital. Write(relay_pin, LOW); lcd. set. Cursor(0, 1);

5. 溫控風扇 if (t > 35) { digital. Write(relay_pin, LOW); lcd. set. Cursor(0, 1); lcd. print("Fan is ON "); delay(10); } else { digital. Write(relay_pin, HIGH); lcd. set. Cursor(0, 1); lcd. print("Fan is OFF "); } delay(2000); }

6. 紅外線感應器自動開燈 int relay = 4; //// choose the pin for the RELAY int

6. 紅外線感應器自動開燈 int relay = 4; //// choose the pin for the RELAY int led. Pin = 13; // choose the pin for the LED int input. Pin = 2; // choose the input pin (for PIR sensor) int pir. State = LOW; // we start, assuming no motion detected int val = 0; // variable for reading the pin status void setup() { pin. Mode(led. Pin, OUTPUT); // declare LED as output pin. Mode(relay, OUTPUT); //declare RELAY as output pin. Mode(input. Pin, INPUT); // declare sensor as input Serial. begin(9600); }

6. 紅外線感應器自動開燈 void loop() { val = digital. Read(input. Pin); // read input value

6. 紅外線感應器自動開燈 void loop() { val = digital. Read(input. Pin); // read input value if (val == HIGH) { // check if the input is HIGH digital. Write(led. Pin, LOW); // turn LED ON digital. Write(relay, LOW); // turn RELAY ON if (pir. State == LOW) { // we have just turned on Serial. println("Motion detected!"); // We only want to print on the output change, not state pir. State = HIGH; } }

6. 紅外線感應器自動開燈 else { digital. Write(led. Pin, HIGH); // turn LED OFF digital. Write(relay,

6. 紅外線感應器自動開燈 else { digital. Write(led. Pin, HIGH); // turn LED OFF digital. Write(relay, HIGH); // turn RELAY OFF if (pir. State == HIGH) { // we have just turned of Serial. println("Motion ended!"); // We only want to print on the output change, not state pir. State = LOW; } } }

7. LCD鬧鐘 #include <DS 3234. h> #include <Wire. h> #include <Liquid. Crystal. h> Liquid.

7. LCD鬧鐘 #include <DS 3234. h> #include <Wire. h> #include <Liquid. Crystal. h> Liquid. Crystal lcd(2, 3, 4, 5, 6, 7); DS 3231 rtc(SDA, SCL); Time t; #define buz 11 int Hor; int Min; int Sec;

7. LCD鬧鐘 void setup() { Wire. begin(); rtc. begin(); Serial. begin(9600); pin. Mode(buz, OUTPUT);

7. LCD鬧鐘 void setup() { Wire. begin(); rtc. begin(); Serial. begin(9600); pin. Mode(buz, OUTPUT); lcd. begin(16, 2); lcd. set. Cursor(0, 0); lcd. print("DIYHacking. com"); lcd. set. Cursor(0, 1); lcd. print("Arduino Alarm "); // The following lines can be uncommented to set the date and time //rtc. set. DOW(WEDNESDAY); // Set Day-of-Week to SUNDAY //rtc. set. Time(12, 0, 0); // Set the time to 12: 00 (24 hr format) //rtc. set. Date(1, 1, 2014); // Set the date to January 1 st, 2014 delay(2000); }

7. LCD鬧鐘 void loop() { t = rtc. get. Time(); Hor = t. hour;

7. LCD鬧鐘 void loop() { t = rtc. get. Time(); Hor = t. hour; Min = t. min; Sec = t. sec; lcd. set. Cursor(0, 0); lcd. print("Time: "); lcd. print(rtc. get. Time. Str()); lcd. set. Cursor(0, 1); lcd. print("Date: "); lcd. print(rtc. get. Date. Str());

7. LCD鬧鐘 if( Hor == 11 && (Min == 32 || Min == 33))

7. LCD鬧鐘 if( Hor == 11 && (Min == 32 || Min == 33)) //Comparing the current time with the Alarm time { Buzzer(); lcd. clear(); lcd. print("Alarm ON"); lcd. set. Cursor(0, 1); lcd. print("Alarming"); Buzzer(); } delay(1000); }

7. LCD鬧鐘 void Buzzer() { digital. Write(buz, HIGH); delay(500); digital. Write(buz, LOW); delay(500); }

7. LCD鬧鐘 void Buzzer() { digital. Write(buz, HIGH); delay(500); digital. Write(buz, LOW); delay(500); }

The initial password is 1237.

The initial password is 1237.

8. 無鑰匙門鎖系統 #include <Keypad. h> #include<Liquid. Crystal. h> #include<EEPROM. h> Liquid. Crystal liquid_crystal_display(9, 8,

8. 無鑰匙門鎖系統 #include <Keypad. h> #include<Liquid. Crystal. h> #include<EEPROM. h> Liquid. Crystal liquid_crystal_display(9, 8, 7, 6, 5, 4, ); char password[4]; char initial_password[4], new_password[4]; int i=0; int relay_pin = 10; char key_pressed=0; const byte rows = 4; const byte columns = 4; char hexa. Keys[rows][columns] = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; byte row_pins[rows] = {A 0, A 1, A 2, A 3}; byte column_pins[columns] = {A 4, A 5, 3, 2}; Keypad keypad_key = Keypad( make. Keymap(hexa. Keys), row_pins, column_pins, rows, columns);

8. 無鑰匙門鎖系統 void setup() { pin. Mode(relay_pin, OUTPUT); liquid_crystal_display. begin(16, 2); liquid_crystal_display. print(" DIYhacking.

8. 無鑰匙門鎖系統 void setup() { pin. Mode(relay_pin, OUTPUT); liquid_crystal_display. begin(16, 2); liquid_crystal_display. print(" DIYhacking. com"); liquid_crystal_display. set. Cursor(0, 1); liquid_crystal_display. print("Electronic Lock "); delay(2000); liquid_crystal_display. clear(); liquid_crystal_display. print("Enter Password"); liquid_crystal_display. set. Cursor(0, 1); initialpassword(); }

8. 無鑰匙門鎖系統 void loop() { digital. Write(relay_pin, HIGH); key_pressed = keypad_key. get. Key(); if(key_pressed=='#')

8. 無鑰匙門鎖系統 void loop() { digital. Write(relay_pin, HIGH); key_pressed = keypad_key. get. Key(); if(key_pressed=='#') change(); if (key_pressed) { password[i++]=key_pressed; liquid_crystal_display. print(key_pressed); } if(i==4) { delay(200); for(int j=0; j<4; j++) initial_password[j]=EEPROM. read(j);

8. 無鑰匙門鎖系統 if(!(strncmp(password, initial_password, 4))) { liquid_crystal_display. clear(); liquid_crystal_display. print("Pass Accepted"); digital. Write(relay_pin, LOW);

8. 無鑰匙門鎖系統 if(!(strncmp(password, initial_password, 4))) { liquid_crystal_display. clear(); liquid_crystal_display. print("Pass Accepted"); digital. Write(relay_pin, LOW); delay(2000); liquid_crystal_display. set. Cursor(0, 1); liquid_crystal_display. print("Pres # to change"); delay(2000); liquid_crystal_display. clear(); liquid_crystal_display. print("Enter Password: "); liquid_crystal_display. set. Cursor(0, 1); i=0; }

8. 無鑰匙門鎖系統 else { digital. Write(relay_pin, HIGH); liquid_crystal_display. clear(); liquid_crystal_display. print("Wrong Password"); liquid_crystal_display. set.

8. 無鑰匙門鎖系統 else { digital. Write(relay_pin, HIGH); liquid_crystal_display. clear(); liquid_crystal_display. print("Wrong Password"); liquid_crystal_display. set. Cursor(0, 1); liquid_crystal_display. print("Pres # to Change"); delay(2000); liquid_crystal_display. clear(); liquid_crystal_display. print("Enter Password"); liquid_crystal_display. set. Cursor(0, 1); i=0; } } }

8. 無鑰匙門鎖系統 void change() { int j=0; liquid_crystal_display. clear(); liquid_crystal_display. print("Current Password"); liquid_crystal_display. set.

8. 無鑰匙門鎖系統 void change() { int j=0; liquid_crystal_display. clear(); liquid_crystal_display. print("Current Password"); liquid_crystal_display. set. Cursor(0, 1); while(j<4) { char key=keypad_key. get. Key(); if(key) { new_password[j++]=key; liquid_crystal_display. print(key); } key=0; } delay(500);

8. 無鑰匙門鎖系統 if((strncmp(new_password, initial_password, 4))) { liquid_crystal_display. clear(); liquid_crystal_display. print("Wrong Password"); liquid_crystal_display. set. Cursor(0,

8. 無鑰匙門鎖系統 if((strncmp(new_password, initial_password, 4))) { liquid_crystal_display. clear(); liquid_crystal_display. print("Wrong Password"); liquid_crystal_display. set. Cursor(0, 1); liquid_crystal_display. print("Try Again"); delay(1000); } else { j=0; liquid_crystal_display. clear(); liquid_crystal_display. print("New Password: "); liquid_crystal_display. set. Cursor(0, 1);

8. 無鑰匙門鎖系統 while(j<4) { char key=keypad_key. get. Key(); if(key) { initial_password[j]=key; liquid_crystal_display. print(key); EEPROM.

8. 無鑰匙門鎖系統 while(j<4) { char key=keypad_key. get. Key(); if(key) { initial_password[j]=key; liquid_crystal_display. print(key); EEPROM. write(j, key); j++; } } liquid_crystal_display. print("Pass Changed"); delay(1000); }

8. 無鑰匙門鎖系統 liquid_crystal_display. clear(); liquid_crystal_display. print("Enter Password"); liquid_crystal_display. set. Cursor(0, 1); key_pressed=0; } void

8. 無鑰匙門鎖系統 liquid_crystal_display. clear(); liquid_crystal_display. print("Enter Password"); liquid_crystal_display. set. Cursor(0, 1); key_pressed=0; } void initialpassword(){ for(int j=0; j<4; j++) EEPROM. write(j, j+49); for(int j=0; j<4; j++) initial_password[j]=EEPROM. read(j); }

9. 遙控撥放音樂 #include <Liquid. Crystal. h> #include <IRremote. h> #include <New. Tone. h> #include

9. 遙控撥放音樂 #include <Liquid. Crystal. h> #include <IRremote. h> #include <New. Tone. h> #include <avr/io. h> #include <avr/wdt. h> #define Reset_AVR() wdt_enable(WDTO_30 MS); while(1) {} #define buzzer 11 Liquid. Crystal lcd(9, 8, 7, 6, 5, 4); int result; int RECV_PIN=2; IRrecv irrecv(RECV_PIN); decode_results; void setup() { Serial. begin(9600); lcd. begin(16, 2); lcd. set. Cursor(0, 0); lcd. print("-----Choose-----");