原作:coopermaa and thx
http://www.100y.com.tw/pdf_file/LMC-SSC2A16DLGY.pdf
直接使用市面上現有 Atmega 168 LCD 模組 改成Arduino code 可以在開發方面簡化
原作品資料:
http://www.syyyd.com/forum.php?mod=v...extra=page%3D1
原作品應用方向:
1.自動與電腦對時顯示時鐘.有獨立供電
2.內建熱敏電組 ,溫度計顯示.
3.內建紅外線接收.可被搖控器搖控
電路圖:
腳位定義:
OSSLab 預定修改應用
1.IRDA 解碼器.再輸入於Sling box 或是等智慧型家電應用
2.增加紅外線發射電路.
3.可用於一些embedded 設備 (WR703 或ARM 設備) 開發一些如網路電台等應用..
目前完工
需要短路Auto reset J4 enable 在板上P1 點 啟動(圖待補)
以另外一張Arduino uno 燒錄Arduino nano 16Mhz bootloader 進此硬體電路板 (圖待補)
上傳紅外線解碼程式成功 可在串口終端看到正確解碼訊號
LCD 測試
/* 在 2x16 LCD 上顯示 "Hello World" 訊息 The circuit 電路: * LCD RS pin to digital pin 8 * LCD Enable pin to digital pin 7 * LCD D4 pin to digital pin 6 * LCD D5 pin to digital pin 5 * LCD D6 pin to digital pin 4 * LCD D7 pin to digital pin 3 * 10K Potentiometer: * ends to +5V and ground * wiper to LCD VO pin (pin 3) This example code is in the public domain. http://www.arduino.cc/en/Tutorial/LiquidCrystal */ // 引用 LiquidCrystal Library #include <LiquidCrystal.h> // 建立 LiquidCrystal 的變數 lcd // LCD 接腳: rs, enable, d4, d5, d6, d7 // LCD pin 4, 6, 11, 12, 13, 14 // 對應到 Arduino 接腳: 8, 7, 6, 5, 4, 3 LiquidCrystal lcd(8, 7, 6, 5, 4, 3); void setup() { // 設定 LCD 的行列數目 (2 x 16) lcd.begin(16, 2); // 列印 "Hello World" 訊息到 LCD 上 lcd.print("hello, world!"); } void loop() { // 將游標設到 column 0, line 1 // (注意: line 1 是第二行(row), 因為是從 0 開始數起): lcd.setCursor(0, 1); // 列印 Arduino 重開之後經過的秒數 lcd.print(millis()/1000); }
----------------------------------------
讓 LCD 可以顯示紅外線解碼
參考資料:
http://coopermaa2nd.blogspot.tw/2011...r-decoder.html
http://coopermaa2nd.blogspot.tw/2011/03/irremote.html
參考資料: http://coopermaa2nd.blogspot.tw/2011/03/14-lcd-ir-decoder.html
符合本PCB程式碼:
/* * IRDecoder_LCD.pde: 自製 LCD 介面的紅外線解碼器(IR Decoder) */ #include <LiquidCrystal.h> // 引用 LiquidCrystal 函式庫 #include <IRremote.h> // 引用 IRRemote 函式庫 // 建立 LiquidCrystal 的變數 lcd // LCD 接腳: rs, enable, d4, d5, d6, d7 // LCD pin 4, 6, 11, 12, 13, 14 // 對應到 Arduino 接腳: 8, 7, 6, 5, 4, 3 LiquidCrystal lcd(8, 7, 6, 5, 4, 3); const int irReceiverPin = 2; // 紅外線接收器 OUTPUT 訊號接在 pin 2 IRrecv irrecv(irReceiverPin); // 定義 IRrecv 物件來接收紅外線訊號 decode_results results; // 解碼結果將放在 decode_results 結構的 result 變數裏 void setup() { lcd.begin(16, 2); // 設定 LCD 的行列數目 (2 x 16) lcd.print("IR Decoder"); // 列印 "IR Decoder" 訊息到 LCD 上 irrecv.blink13(true); // 收到紅外線時, 讓板子上 pin 13 的指示燈閃爍幾下 irrecv.enableIRIn(); // 啟動紅外線解碼 } // 顯示紅外線協定種類 void showIRProtocol(decode_results *results) { // 判斷紅外線協定種類 switch(results->decode_type) { case NEC: lcd.print("NEC"); break; case SONY: lcd.print("SONY"); break; case RC5: lcd.print("RC5"); break; case RC6: lcd.print("RC6"); break; default: lcd.print("Unknown"); } // 把紅外線編碼印到 LCD 上 lcd.print(" "); lcd.print(results->value, HEX); // 紅外線編碼 lcd.print(" ("); lcd.print(results->bits); // 紅外線編碼位元數 lcd.print(")"); } void loop() { // 將游標設到 column 0, line 1 // 注意: line 1 是第二行(row),line 0 是第一行(row) lcd.setCursor(0, 1); if (irrecv.decode(&results)) { // 解碼成功,收到一組紅外線訊號 if (results.value != -1) { showIRProtocol(&results); // 顯示紅外線協定種類 } irrecv.resume(); // 繼續收下一組紅外線訊號 } }
預定進度
1.增加紅外線發射Led 模組 硬體簡單
目前IRremote Lib 用Pin 3做 IRDA PWM out
LCD Lib 也會用到... 要修改Lib
2.增加 Linux LCD to Kenrel 顯示
http://www.harbaum.org/till/lcd2usb/index.shtml
http://ssl.bulix.org/projects/lcd4linux/
...porting 到mips or arm上 分享出Arduino code 以方便大家處理
希望 可在openwrt 架構下硬體 用LCD 顯示 IP ,router 狀況,用紅外線遙控器 設定IP 或是基本無線網路設定