LCD Keypad Shield (LCD1602) [D038]



https://www.youtube.com/watch?v=gnCqb5Q-FQo


*GitHub https://github.com/rdiot/rdiot-d038.git


* Contents

- Pin Out : https://www.dfrobot.com/wiki/images/thumb/5/5e/DFR0009-PIN2.png/900px-DFR0009-PIN2.png

- Ref Url : http://www.dfrobot.com/wiki/index.php/LCD_KeyPad_Shield_For_Arduino_SKU:_DFR0009

- Key Code (Left -> ..)

#include <LiquidCrystal.h>

 

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);           // select the pins used on the LCD panel

 

// define some values used by the panel and buttons

int lcd_key     = 0;

int adc_key_in  = 0;

 

#define btnRIGHT  0

#define btnUP     1

#define btnDOWN   2

#define btnLEFT   3

#define btnSELECT 4

#define btnNONE   5

 

int read_LCD_buttons(){               // read the buttons

    adc_key_in = analogRead(0);       // read the value from the sensor 

 

    // my buttons when read are centered at these valies: 0, 144, 329, 504, 741

    // we add approx 50 to those values and check to see if we are close

    // We make this the 1st option for speed reasons since it will be the most likely result

 

    if (adc_key_in > 1000) return btnNONE; 

 

    // For V1.1 us this threshold

    //if (adc_key_in < 50)   return btnRIGHT;  

    //if (adc_key_in < 250)  return btnUP; 

    //if (adc_key_in < 450)  return btnDOWN; 

    //if (adc_key_in < 650)  return btnLEFT; 

    //if (adc_key_in < 850)  return btnSELECT;  

 

   // For V1.0 comment the other threshold and use the one below:

   

     if (adc_key_in < 50)   return btnRIGHT;  

     if (adc_key_in < 195)  return btnUP; 

     if (adc_key_in < 380)  return btnDOWN; 

     if (adc_key_in < 555)  return btnLEFT; 

     if (adc_key_in < 790)  return btnSELECT;   


    return btnNONE;                // when all others fail, return this.

}

 

void setup(){

   lcd.begin(16, 2);               // start the library

   lcd.setCursor(0,0);             // set the LCD cursor   position 

   lcd.print("D038 - Push BTNs");  // print a simple message on the LCD

}

  

void loop(){

   lcd.setCursor(9,1);             // move cursor to second line "1" and 9 spaces over

   lcd.print(millis()/1000);       // display seconds elapsed since power-up

 

   lcd.setCursor(0,1);             // move to the begining of the second line

   lcd_key = read_LCD_buttons();   // read the buttons

 

   switch (lcd_key){               // depending on which button was pushed, we perform an action

 

       case btnRIGHT:{             //  push button "RIGHT" and show the word on the screen

            lcd.print("RIGHT ");

            break;

       }

       case btnLEFT:{

             lcd.print("LEFT   "); //  push button "LEFT" and show the word on the screen

             break;

       }    

       case btnUP:{

             lcd.print("UP    ");  //  push button "UP" and show the word on the screen

             break;

       }

       case btnDOWN:{

             lcd.print("DOWN  ");  //  push button "DOWN" and show the word on the screen

             break;

       }

       case btnSELECT:{

             lcd.print("SELECT");  //  push button "SELECT" and show the word on the screen

             break;

       }

       case btnNONE:{

             lcd.print("NONE  ");  //  No action  will show "None" on the screen

             break;

       }

   }

}


- Key Code (Sensor Value)

#include <LiquidCrystal.h>

 

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);        // select the pins used on the LCD panel

 

unsigned long tepTimer ;   

 

void setup(){

    lcd.begin(16, 2);                       // start the library

}

 

void loop(){

    lcd.setCursor(0, 0);                   // set the LCD cursor   position

    int val;                               // variable to store the value coming from the analog pin

    double data;                           // variable to store the temperature value coming from the conversion formula

    val=analogRead(1);                     // read the analog in value:

    data = (double) val * (5/10.24);       // temperature conversion formula

     

    if(millis() - tepTimer > 500){         // output a temperature value per 500ms

             tepTimer = millis();

 

             // print the results to the lcd

             lcd.print("T: ");              

             lcd.print(data);            

             lcd.print("C");             

     }

}

'3) Actuator > LCD' 카테고리의 다른 글

LCD 4002 Blue (ERM4002SBS-1) [D051]  (0) 2016.09.21
LCD Keypad Shield Green (LCD1602) [D043]  (0) 2016.09.21
LCD Keypad Shield (LCD1602) [D038]  (0) 2016.09.21
LCD2004 I2C Green (LCD2004A) [D046]  (0) 2016.09.21
LCD2004 I2C ( LCD2004A) [D017]  (0) 2016.09.21
LCD1602 I2C (LCD1602) [D016]  (0) 2016.09.21
Posted by RD IoT RDIoT

댓글을 달아 주세요