2015年5月27日 星期三

課程38-藍芽模組

目的:

使用Arduino 設定藍芽模組。

電子元件:

麵包板 x 1
Arduino 主板 x 1
藍芽模組 x 1

電路圖:


程式碼:


  1. #include <SoftwareSerial.h>
  2. SoftwareSerial BTSerial(10, 11);
  3. void setup(){
  4.  Serial.begin(9600);
  5.  Serial.println("Enter AT commands:");
  6.  BTSerial.begin(9600);
  7. }
  8. void loop(){
  9.  if (BTSerial.available()){
  10.    Serial.write(BTSerial.read());
  11.  }
  12.  if (Serial.available()){
  13.    BTSerial.write(Serial.read());
  14.  }
  15. }

程式說明:

第一行 匯入SoftwareSerial.h。
第二行 宣告一個SoftwareSerial 物件為BTSerial,輸入參數Pin10、Pin11。
第三行~第七行 初始設定。
第四行 打開Serial 通訊,並設定頻率為9600。
第五行 在Serial上列印"Enter AT commands:"。
第六行 打開BTSerial通訊,並設定頻率為9600。。
第八行~第十五行 為主程式。
第九行~第十一行 使用IF判斷式,判斷BTSerial是否有資料,如果有執行下面程式。
第十行 在Serial上面列印BTSerial.read()。
第十二行~第十四行 使用IF判斷式,判斷Serial是否有資料,如果有執行下面程式。
第十三行 在Serial上面列印Serial.read()。


圖表:

連接腳位
藍芽
Arduino Uno
VCC
VCC
GND
GND
RX
Pin11
TX
Pin10

HC-06 藍芽指令

實驗影片:







參考資料:

HC-05與HC-06藍牙模組補充說明(三):使用Arduino設定AT命令

課程37-人體紅外線感測模組

目的:

使用Arduino 偵測人體紅外線感應模組,有感應到就打開LED。

電子元件:

麵包板 x 1
Arduino 主板 x 1
人體紅外線 x 1
LED x 1

電路圖:



程式碼:


  1. const int PIRSensor = 2;   
  2. const int ledPin =  13;   
  3. int sensorValue = 0;
  4. void setup() {
  5.  pinMode(PIRSensor, INPUT);     
  6.  pinMode(ledPin, OUTPUT);        
  7. }
  8. void loop(){
  9.  sensorValue = digitalRead(PIRSensor);
  10.  if (sensorValue == HIGH) {     
  11.    digitalWrite(ledPin, HIGH);
  12.  }else{
  13.    digitalWrite(ledPin, LOW);
  14.  }
  15. }

程式說明:

第一行~第二行 宣PIRSensor、ledPin 腳位為Pin2、Pin13。
第三行 宣告一個整數變數sensorValue 質為0。
第四行~第七行 初始設定。
第五行 設定PIRSensor的腳位為輸入腳位。
第六行 設定ledPin的腳位為輸出腳位。
第八行~第十伍行 為主程式。
第九行 讀取PIRSensor的數值並儲存在變數sensorValue 。
第十行~第十二行 使用IF判斷式sensorValue是否為HIGH,如果是執行下面程式。
第十一行 把ledPin腳位設為HIGH。
第十二行~第十四行 延續上面的IF,如果sensorValue不是HIGH,執行下面程式。
第十三行 把ledPin腳位設為LOW。

圖表:


實驗影片:


參考資料


課程36-超音波模組實驗

目的:

使用Arduino 偵測超音波模組的數值。

電子元件:

麵包板 x 1
Arduino 主板 x 1
超音波模組 x 1

電路圖:


程式碼:


  1. #define TRIGPIN 10
  2. #define ECHOPIN 13
  3. void setup() {
  4.  Serial.begin(9600);
  5. pinMode(TRIGPIN, OUTPUT);
  6. pinMode(ECHOPIN, INPUT);
  7. }
  8. void loop() {
  9. long cm = ping();
  10. Serial.print(cm);
  11. Serial.println(" cm");
  12. delay(100);
  13. }
  14. long ping() {
  15. digitalWrite(TRIGPIN, LOW);
  16. delay(2);
  17. digitalWrite(TRIGPIN, HIGH);
  18. delay(10);
  19. digitalWrite(TRIGPIN, LOW);
  20. return pulseIn(ECHOPIN, HIGH)/58;
  21. }

程式說明:

第一行~第二行 宣告TRIGPIN、ECHOPIN 腳位為Pin10、Pin13。
第三行~第七行 初始設定。
第四行 打開Serial 通訊,並設定頻率為9600。
第五行 設定TRIGPIN的腳位為輸出腳位。
第六行 設定ECHOPIN的腳位為輸出腳位。
第八行~第十三行 為主程式。
第九行 呼叫ping,並把傳回來的數值儲存在長整數變數cm。
第十行 在Serial上印出cm變數。
第十一行 在Serial上印出"cm" 字串。
第十二行 延遲0.1五秒。
第十四行~第二十一行 為ping()
第十五行 把TRIGPIN設為低電位。
第十六行 延遲2毫秒。
第十七行  把TRIGPIN設為高電位。
第十八行 延遲10毫秒。
第十九行 把TRIGPIN設為低電位。
第二十行 回傳 pulseIn(ECHOPIN, HIGH)/58 。


圖表:


HC-SR04
Arduino
Vcc
+5V
Trig
GPIO
Echo
GPIO
GND
GND

實驗影片:






參考資料:



課程35-直流馬達驅動實驗

目的:

使用Arduino 使用L298 IC來控制直流馬達正轉和反轉。

電子元件:

麵包板 x 1
Arduino 主板 x 1
L298 IC x 1
直流馬達 x1

電路圖:



程式碼:


  1. int motor[] = {2, 3};
  2. void setup() {
  3.  Serial.begin(9600);
  4.  for(int i = 0; i < 2; i++){
  5.    pinMode(motor[i], OUTPUT);
  6.  }
  7. }
  8. void loop() {
  9.  left();
  10.  delay(5000);
  11.  motor_stop();
  12.  right();
  13.  delay(5000);
  14.  motor_stop();
  15. }
  16. void motor_stop(){
  17.  digitalWrite(motor[0], LOW);
  18.  digitalWrite(motor[1], LOW);
  19.  delay(25);
  20. }
  21. void left(){
  22.  digitalWrite(motor[0], LOW);
  23.  digitalWrite(motor[1], HIGH);
  24. }
  25. void right(){
  26.  digitalWrite(motor[0], HIGH);
  27.  digitalWrite(motor[1], LOW);
  28. }

程式說明:
第一行 宣告整數變數陣列motor 的腳位為Pin2、Pin3。
第二行~第七行 初始設定。
第三行 打開Serial 通訊,並設定頻率為9600。
第四行~第六行 使用For 迴圈0~1。
第五行 設定motor的腳位為輸出腳位。
第八行~第十五行 為主程式。
第九行 呼叫left左轉。
第十行 延遲五秒。
第十一行 呼叫motor_stop停止。
第十二行 呼叫right右轉。
第十三行 延遲五秒。
第十四行 呼叫motor_stop停止。
第十六行~第二十行 為motor_stop()
第十七行 把motor[0]腳位設成低電位(LOW)。
第十八行 把motor[1]腳位設成低電位(LOW)。
第十九行 延遲25豪秒。
第二十一~第二十四行 為left()
第二十二行 把motor[0]腳位設成低電位(LOW)。
第二十三行 把motor[1]腳位設成高電位(HIGH)。
第二十五行~第二十八行 為right()
第二十六行 把motor[0]腳位設成低電位(HIGH)。
第二十七行 把motor[1]腳位設成低電位(LOW)。

圖表:

L293D接腳說明
• 1 Enable 1-2:作為左半邊IC控制用。當這個Pin為高電壓時,左半邊IC可作用,反之,低電壓時,左半邊IC無作用。
• 2 INPUT 1:當這個Pin為高電壓時,電流會流出至Output 1。
• 3 OUTPUT 1:這個Pin要接到終端馬達的一個接腳。
• 4,5 GND:接地。
• 6 OUTPUT 2:這個Pin要接到終端馬達的一個接腳。
• 7 INPUT 2, 當這個Pin為高電壓時,電流會流出至Output 2。
• 8 VC:供給給馬達使用的電壓,如果要驅動的馬達是12V,那就要供給這個Pin 12V直流電。
• 9 Enable 3-4:作為右半邊IC控制用。當這個Pin為高電壓時,右半邊IC可作用,反之,低電壓時,右半邊IC無作用。
• 10 INPUT 3,:這個Pin為高電壓時,電流會流出至Output 3。
• 11 OUTPUT 3:這個Pin要接到終端馬達的一個接腳。
• 12,13 GND:接地。
• 14 OUTPUT 4:這個Pin要接到終端馬達的一個接腳。
• 15 INPUT 4:當這個Pin為高電壓時,電流會流出至Output 4。
• 16 VSS:提供給IC的電源,這個Pin要供給5V電壓。

實驗影片:


參考資料: