السبت، 12 يوليو، 2014

غطاء الشاشة الكريستاليه LCD Keypad Shield

غطاء الشاشة الكريستاليه LCD Keypad Shield






إذا أعجبتكم مقالاتنا , يمكنكم دعمنا عبر الشراء من متجرنا الألكتروني الجديد




تحدثنا في المدونة سابقاً عن الشاشات الكريستاليه و اهميتها في المشاريع المختلفة و برمجتها بواسطة الأردوينو , و من خلال تجربتي العمليه لاحظت أنه عند استعمال بعض الشاشة في المشاريع تقف توصيله الشاشة عقبة أمام ادخالها في اي مشروع سواءاً من ناحية المظهر و كثر أسلاك التوصيل التي تحتاجها و التي تتطلب عند البعض استخدام لوحة تعليمية BreadBoard" كما في مشاريع الروبوتات , او نظم الحماية او المنزل الذكي .





من أفضل الحلول التي يمكن نقوم بها هو استخدام غطاء خاص بهذه الشاشة من فريق DF Robot .

هذا الغطاء يمكن توصيله فوق أي لوحة أردوينو بسهولة و برمجة الشاشة بمكتبة اردوينو الرسمية لهذه الشاشة "لا حاجة لتحميل مكتبات " بالأضافة لوجود عدة كبسات يمكنك الأستفادة منها لعمل تطبيقات متعددة او لتبديل النصوص و الأرقام المعروضة على الشاشة .

التركيب العام الخارجي للشاشة :


التوصيل لهذه الشاشة هو نفسه التوصيل المعتمد من قبل مكتبة الأردوينو مع استبدال مداخل التحكم ENABLE, RS  بدلاً من 11 و 12 في مكتبة اردوينو الرسمية إلى 8 ,9 "و هذا مفيد لو اردنا استخدام البروتوكول SPI , الأضافة في هذه الغطاء هو انه يمكنك التحكم بشدة أضاءة الشاشة عن طريق التحكم النبضي PWM من المنفذ D10 .





الكبسات push Button مربوطة معاً  مع المنفذ A0 و سنرى كيفية استعملها من خلال البرنامج .

يمكن الأطلاع على المخطط كاملاً من هنا

سنحتاج في هذه التجربة إلى :

1)بطاقة أردوينو . 
2)غطاء الشاشة الكريستالية LCD KeyPad Shield



تركيب الغطاء سهل "فقط ضعه فوق الأردوينو " ثم سننتقل للبرمجة .







البرنامج :

يعتمد قراءة الكبسات على مبدأ مقسم الجهد Voltage Divider حيث انه عند الضغط على كل كبسة سيعطينا قراءة مختلفة عن القراءة لكبسة أخرى .


هذا البرنامج يطبع جملة Hello World المشهورة على الشاشة بالإضافة للكبسة التي ستنقر عليها .



/*
Code For LCD Keypad Shield 
To show "Hello World " and The button You pressed
Written By : Mohannad Rawashdeh
 http://www.genotronex.com
 By this Shield and Support us 
 http://www.genotronexstore.com
 http://www.genotronexstore.com/#!product/zoom12tf/2299873151/lcd1602-arduino-shield-with-button
*/
#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
#define Bck       10
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; 
   
     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(){
  Serial.begin(9600);
  pinMode(Bck,OUTPUT);
   lcd.begin(16, 2);               // start the library
   lcd.setCursor(0,0);             // set the LCD cursor   position 
   lcd.print("Hello World !");  // print a simple message on the LCD
   
  
  for(int i=255;i>0;i--){
    analogWrite(Bck,i);
    delay(10);    
  }
  for(int i=0;i<256;i++){
    analogWrite(Bck,i);
    delay(10);    
  }
  
}
 
void loop(){
   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;
       }
   }
}



و هذا برنامج يتحكم بشدة سطوع الشاشة عبر النقر على الزرين up - down 
/*
Code For LCD Keypad Shield 
 for Control Backlight brightness 
 By clicking "" Up"" & ""Down"" Button
 Written By : Mohannad Rawashdeh
 http://www.genotronex.com
 By this Shield and Support us 
 http://www.genotronexstore.com
 http://www.genotronexstore.com/#!product/zoom12tf/2299873151/lcd1602-arduino-shield-with-button
*/
#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
#define Bck       10
byte light =      128;        
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.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(){
   pinMode(Bck,OUTPUT);
   lcd.begin(16, 2);               // start the library
   lcd.setCursor(0,0);             // set the LCD cursor   position 
   lcd.print("Hello World !");  // print a simple message on the LCD
  for(int i=255;i>0;i--){
    analogWrite(Bck,i);
    delay(10);    
  }
  for(int i=0;i<128;i++){
    analogWrite(Bck,i);
    delay(10);    
  }  
}
 
void loop(){
   lcd.setCursor(0,1);             // move to the begining of the second line
   lcd_key = read_LCD_buttons();   // read the buttons
  analogWrite(Bck,light);
   switch (lcd_key){               // depending on which button was pushed, we perform an action    
       case btnUP:{
             lcd.print("increase Bck    ");  //  push button "UP" and show the word on the screen
             light++;
             if(light>=255){light=255;}
             delay(100);
             break;
       }
       case btnDOWN:{
             lcd.print("decrease Bck    ");  //  push button "UP" and show the word on the screen
             light--;
             if(light<0){light=0;}
             delay(100);
             break;
       }
       case btnNONE:{
             lcd.print("                ");  //  No action  will show "None" on the screen
             break;
       }
   }
}


يمكن الأستفادة من هذا الغطاء لتوصيل حساسات عبر المنافذ A1-A5  .


إذا أعجبتكم مقالاتنا , يمكنكم دعمنا عبر الشراء من متجرنا الألكتروني الجديد




هذا مثال لتوصيل الغطاء مع حساس الحرارة LM 35





البرنامج :

/*
Code For LCD Keypad Shield 
To show Tempreture using LM35
Written By : Mohannad Rawashdeh
 http://www.genotronex.com
 By this Shield and Support us 
 http://www.genotronexstore.com
 http://www.genotronexstore.com/#!product/zoom12tf/2299873151/lcd1602-arduino-shield-with-button
*/
#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;
float LM35=0;
float input=0;  // reading the voltage on pin A0
float celsius=0;
#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5
#define Bck       10

void setup(){
  Serial.begin(9600);
  pinMode(Bck,OUTPUT);
  pinMode(A1,INPUT);// LM35 Sensor OUTPUT Pin
   lcd.begin(16, 2);               // start the library
   lcd.setCursor(0,0);             // set the LCD cursor   position 
   lcd.print("Genotronex.com");  //  push button "UP" and show the word on the screen 
  analogWrite(Bck,128);
   
  
}
 
void loop(){
   LM35 = analogRead(A0);
   input = (LM35*5000)/1024; // convert raw sensor value to millivolts       
   celsius = input/10;         // convert millivolts to Celsius
   lcd.setCursor(4,1);             // move to the begining of the second line
   lcd.print("T=");
   lcd.print(celsius);
   lcd.print(" C");
   
}

0 التعليقات :

إرسال تعليق

 
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.