貓哥的Arduino日誌
Arduino實作筆記分享
2017年6月18日 星期日
2017年4月29日 星期六
筆記 Arduino 傾斜開關 Tilt Ball Switch
Arduino 傾斜開關 Tilt Ball Switch
使用傾斜開關控制LED燈亮暗
材料
- Arduino主板 *1 (Uno)
- 麵包板 *1
- 麵包板跳線 數根
- 220歐姆電阻 *1
- 傾斜開關 *1
電路圖
接線圖
CODE
/* 使用傾斜開關控制LED亮暗 */ #define TBS_PIN 2 //傾斜開關腳位 #define LED_PIN 13 //LED燈開關腳位 bool state; //宣告一個布林變數用於儲存傾斜開關狀態 void setup() { pinMode(TBS_PIN,INPUT); //將傾斜開關腳位設為輸入 pinMode(LED_PIN,OUTPUT); //將LED燈腳位設為輸出 } void loop() { state = digitalRead(TBS_PIN); //讀取傾斜開關狀態 //如果開關狀態為開點亮LED燈 否則熄掉LED燈 if(state == true){ digitalWrite(LED_PIN,HIGH); }else{ digitalWrite(LED_PIN,LOW); } }
影片
筆記 Arduino DHT11溫濕度計
Arduino DHT11溫濕度計
簡易溫濕度計製作
材料
- Arduino *1 (Uno)
- 麵包板 *1
- 麵包板跳線 數根
- DHT11 *1
- OLED面板 *1 (SSD1306)
電路圖
接線圖
CODE
// DHT sensor library - Version: Latest #include <DHT.h> #include <DHT_U.h> // U8g2_Arduino - Version: Latest #include <U8g2lib.h> #include <U8x8lib.h> #define DHTPIN 8 //定義DHT腳位 #define DHTTYPE DHT11 //定義DHT型號 //OLED面板 U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, SCL, SDA, U8X8_PIN_NONE);//(rotation, clock, data [, reset]) //DHT11溫濕度計 DHT dht(DHTPIN, DHTTYPE); float h = 0; //宣告一個浮點數 用於儲存濕度 float t = 0; //宣告一個浮點數 用於儲存溫度 void setup() { u8g2.begin(); } void loop() { h = dht.readHumidity(); //取得濕度 t = dht.readTemperature(); //取得溫度 u8g2.firstPage(); do { draw(); } while( u8g2.nextPage() ); delay(1000); } void draw(){ u8g2.setFont(u8g2_font_unifont_t_greek);//設定字型 u8g2.setCursor(0,16);//設定位置(0,16) u8g2.print("DHT11 Sensor");//印出文字 u8g2.setCursor(0,32);//設定位置 u8g2.print("Humidity: ");//印出文字 u8g2.print(h,0);//印出濕度 u8g2.print("%");//印出單位 u8g2.setCursor(0,48);//設定位置 u8g2.print("Temperature: ");//印出文字 u8g2.print(t,0);//印出溫度 u8g2.print("C");//印出單位 }
影片
筆記 Arduino HC-SR04超音波測距
Arduino HC-SR04超音波測距
使用HC-SR04偵測距離並印在OLED面板上
材料
- Arduino *1 (Uno)
- 麵包板 *1
- 麵包板跳線 數根
- HC-SR04超音波模組 *1
- OLED面板 *1 (SSD1306 128*64)
如果沒有OLDE面板也可以選擇使用Serial Monitor將數值印出
另外在這個例子中使用了 JRodrigoTech所製作的函式庫"Ultrasonic-HC-SR04"
Github連結:https://github.com/JRodrigoTech/Ultrasonic-HC-SR04
函式庫點這裡下載
電路圖
接線圖
CODE
這個例子使用U8G2lib函式庫控制OLED面板
若要使用Serial Monitor印出數值,請參考"Ultrasonic-HC-SR04"函式庫Example中的"Serial"
// U8g2_Arduino - Version: Latest #include <U8g2lib.h> #include <U8x8lib.h> // Ultrasonic - Version: Latest #include <Ultrasonic.h> #define TRIG_PIN 12 //定義TrigPin #define ECHO_PIN 11 //定義EchoPin //OLED面板 U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, SCL, SDA, U8X8_PIN_NONE);//(rotation, clock, data [, reset]) //HC-SR04超音波測距 Ultrasonic ultrasonic(TRIG_PIN,ECHO_PIN); // (Trig PIN,Echo PIN) void setup() { u8g2.begin(); } void loop() { u8g2.firstPage(); do { draw(); } while( u8g2.nextPage() ); } void draw(){ u8g2.setFont(u8g2_font_unifont_t_greek);//設定字型 u8g2.setCursor(0,16);//設定位置(0,16) u8g2.print("HC-SR04 Sensor");//印出文字 u8g2.setCursor(20,32);//設定位置(20,32) u8g2.print("CM: ");//印出文字 u8g2.setCursor(64,32);//設定位置(64,32) u8g2.print(ultrasonic.Ranging(CM));//印出HC-SR04測出的距離(單位:公分) u8g2.setCursor(20,48);//設定位置(20,48) u8g2.print("INC: ");//印出文字 u8g2.setCursor(64,48);//設定位置(64,48) u8g2.print(ultrasonic.Ranging(INC));//印出HC-SR04測出的距離(單位:英吋) }
影片
筆記 Arduino 被動式紅外線偵測器(人體感應模組) PIR Motion Sensor
Arduino 被動式紅外線偵測器(人體感應模組)
使用人體模組感測器控制LED燈亮暗
材料
- Arduino *1 (UNO)
- 人體偵測模組 *1 (RCW-0506)
- 杜邦線 公母 *3
- LED燈 *1
電路圖
接線圖
CODE
/* 人體感測器控制LED燈亮暗 */ #define PIR_PIN 2 //感測器腳位 #define LED_PIN 13 //LED燈腳位 bool pirState = false; //宣告一個布林 用於儲存感人體感測器的狀態 void setup() { pinMode(PIR_PIN,INPUT);//設定人體感測器腳位為輸入 pinMode(LED_PIN,OUTPUT);//設定LED燈腳位為輸出 } void loop() { pirState = digitalRead(PIR_PIN); //取得感測器狀態 if(pirState == true){ //如果感測器偵測到人體點亮LED燈 digitalWrite(LED_PIN,HIGH); }else{ digitalWrite(LED_PIN,LOW); } }
影片
筆記 Arduino 光敏電阻 Photoresistor
Arduino 光敏電阻 Photoresistor
使用OLED面板顯示光敏電阻偵測到的數值
材料
- Arduino *1 (UNO)
- 麵包板 *1
- 麵包線 數根
- OLED面板 *1 (SSD1306 128*64 I2C)
- 光敏電阻 *1
- 1k歐姆電阻 *1
電路圖
接線圖
CODE
/* 使用U8g2在OLED上顯示光敏電阻偵測到的數值 */ // U8g2_Arduino - Version: Latest #include <U8g2lib.h> #include <U8x8lib.h> //OLED面板 U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, SCL, SDA, U8X8_PIN_NONE);//(rotation, clock, data [, reset]) #define LDR_PIN A0 //光敏電阻腳位 void setup() { u8g2.begin(); } int ldrVal = 0; void loop() { ldrVal = analogRead(LDR_PIN);//讀取數值 u8g2.firstPage(); do { draw(); } while( u8g2.nextPage() ); } void draw(){ u8g2.setFont(u8g2_font_9x18B_mr);//設定字型 u8g2.setCursor(0,16);//設定位置 u8g2.println("LDR Value:"); u8g2.println(ldrVal);//印出數值 //圖形數值計 u8g2.drawFrame(10,24,108,20); u8g2.drawBox(11,24,map(ldrVal,0,1023,1,107),20); }
影片
此影片中的OLED面版使用了ArduinoSensorShleldv5.0擴充板所提供的I2C接腳
2017年4月28日 星期五
筆記 Arduino 使用U8g2 印出點陣圖
U8g2 Github: https://github.com/olikraus/U8g2_Arduino
U8g2 Wike: https://github.com/olikraus/u8g2/wiki
U8g2支援的LCD面板 https://github.com/olikraus/u8g2/wiki/u8g2setupcpp
U8g2 Reference: https://github.com/olikraus/u8g2/wiki/u8g2reference
U8g2 Font: https://github.com/olikraus/u8g2/wiki/fntlistall
OLED面板腳位
OLED 128*64 I2C
GND -> Ground
VCC -> 5V
SCL -> A5 (UNO)
SDA -> A4 (UNO)
製作Bitmap:
使用GIMP將圖檔轉為索引值(使用黑白1bit)->輸出成.XBM->使用文字編輯器開啟->複製Bit Array到自己的Code裡
或是輸出後將.xbm副檔名改為.h後跟Arduino的ino檔放在一起使用#include "xxx.h"的方式讀入
*不知道為甚麼我使用LCDAssistant轉出來的bitArray在U8glib中都不能正確顯示
顯示BitArray的函式:
u8g2.drawXBM(x, y, bitmap_width, bitmap_height, bitmap);
u8g2.drawXBMP(x, y, bitmap_width, bitmap_height, bitmap);
當BitArray使用PROGMEM儲存在ROM裡的時候要使用drawXBMP()這個函式
code:
U8g2 Wike: https://github.com/olikraus/u8g2/wiki
U8g2支援的LCD面板 https://github.com/olikraus/u8g2/wiki/u8g2setupcpp
U8g2 Reference: https://github.com/olikraus/u8g2/wiki/u8g2reference
U8g2 Font: https://github.com/olikraus/u8g2/wiki/fntlistall
OLED面板腳位
OLED 128*64 I2C
GND -> Ground
VCC -> 5V
SCL -> A5 (UNO)
SDA -> A4 (UNO)
製作Bitmap:
使用GIMP將圖檔轉為索引值(使用黑白1bit)->輸出成.XBM->使用文字編輯器開啟->複製Bit Array到自己的Code裡
或是輸出後將.xbm副檔名改為.h後跟Arduino的ino檔放在一起使用#include "xxx.h"的方式讀入
*不知道為甚麼我使用LCDAssistant轉出來的bitArray在U8glib中都不能正確顯示
顯示BitArray的函式:
u8g2.drawXBM(x, y, bitmap_width, bitmap_height, bitmap);
u8g2.drawXBMP(x, y, bitmap_width, bitmap_height, bitmap);
當BitArray使用PROGMEM儲存在ROM裡的時候要使用drawXBMP()這個函式
code:
訂閱:
文章 (Atom)
-
Arduino 被動式紅外線偵測器(人體感應模組) 使用人體模組感測器控制LED燈亮暗 材料 Arduino *1 (UNO) 人體偵測模組 *1 (RCW-0506) 杜邦線 公母 *3 LED燈 *1 電路圖 接線圖 ...
-
Arduino DHT11溫濕度計 簡易溫濕度計製作 材料 Arduino *1 (Uno) 麵包板 *1 麵包板跳線 數根 DHT11 *1 OLED面板 *1 (SSD1306) 電路圖 接線圖 CODE...
-
U8g2 Github: https://github.com/olikraus/U8g2_Arduino U8g2 Wike: https://github.com/olikraus/u8g2/wiki U8g2支援的LCD面板 https://github.com/ol...