Was this page helpful?

LCD

    內容表格
    沒有標頭





    原作:coopermaa and thx

    直接使用市面上玩家現有 Atmega 168  LCD 模組 改成Arduino bootloader 可以在開發方面簡化

    原作品資料:
    http://www.syyyd.com/forum.php?mod=v...extra=page%3D1

    原作品應用方向:
    1.自動與電腦對時顯示時鐘.有獨立供電
    2.內建熱敏電組 ,溫度計顯示.
    3.內建紅外線接收.可被搖控器搖控


    電路圖: 點擊可放大

    123245cewgjjv0ok3ygk0m.png

    腳位定義:

    2012-08-18_16h10_06.png


    OSSLab 預定修改應用
    1.IRDA 解碼器.解碼後再輸入於Sling box 或是等智慧型家電應用 
    2.增加紅外線發射電路.
    3.可用於一些embedded 設備 (WR703 或ARM 設備) 開發一些需要用到LCD 顯示的應用
       包含Router 監控
             網路電台等應用..

    目前完工
    要短路Auto reset J4 enable  後 在板上P1 點 啟動(圖待補)
    才能以另外一張Arduino uno 燒錄Arduino nano 16Mhz bootloader 進此硬體電路板 (圖待補)


    上傳紅外線解碼程式成功 可在串口終端看到正確解碼訊號

     

    LCD 測試

    60718614612.jpg 

     
    /*  在 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

    60734089559.jpg

    參考資料: 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)&#65292;line 0 是第一行(row)
      lcd.setCursor(0, 1);

      if (irrecv.decode(&results)) {         // 解碼成功&#65292;收到一組紅外線訊號
        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 或是基本無線網路設定
     
    http://milesburton.com/USD_LCD_Displ...ux_via_Arduino

    Was this page helpful?
    標籤 (Edit tags)
    • No tags
    您必須 登入 才能發佈評論。
    Powered by MindTouch Core