Projekt 5 Graafiline LCD ekraan (3 näidet)


Näide #5.1 Teksti kuvamine ekraanil

//Lisame vajalikud teegid
#include "U8glib.h"
 
//lcd objekti tekitamine
U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);  // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
 
void setup(void) {
  u8g.setContrast(0); // seadsita ekraani kontrastsus (LCD plaadist sõltuv)
  u8g.setRot180();// pööra ekraani 180 kraadi (LCD plaadist sõltuv)
  u8g.setFont(u8g_font_gdr14); //sea teksti font
}
 
void loop(void) {
 
  u8g.firstPage(); //Clear screen and start from zero point
  while ( u8g.nextPage() == 1 )u8g.drawStr( 8, 35, "Hello World");
}

Näide #5.2 Logo kuvamine ekraanil

Näide demonstreerib logo kuvamist graafilisel ekraanil. Selleks on vaja kõigepealt tekitada bitmap massiiv, mis määrab ära millised pikslid kuvatakse ekraanil. Bitmap konverter

//Lisame vajalikud teegid
#include "U8glib.h"
 
//lcd objekti tekitamine
U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);  // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
 
const uint8_t logo [] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x63, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x60, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x60, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x60, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x63, 0xFC, 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x63, 0xFC, 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x63, 0xFC, 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x62, 0x0C, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x62, 0x0C, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x62, 0x0C, 0x5F, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x62, 0x0C, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x62, 0x0C, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x62, 0x0C, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x62, 0x0C, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x62, 0x0C, 0x7F, 0x8F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x62, 0x0C, 0x7F, 0x8F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x62, 0x0C, 0x43, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x62, 0x0C, 0x43, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x62, 0x0C, 0x43, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x62, 0x0C, 0x43, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x62, 0x0C, 0x43, 0x88, 0x7B, 0xFF, 0xFF, 0xE0, 0x0F, 0xE3, 0xFC, 0x07, 0xE0, 0xF1, 0xE7, 0xF8,
0x62, 0x0C, 0x43, 0x88, 0x7B, 0xFF, 0xFF, 0xE0, 0x3F, 0xF3, 0xFE, 0x1F, 0xF8, 0xF1, 0xE7, 0xFC,
0x62, 0x0C, 0x43, 0x88, 0x7B, 0xFF, 0xFF, 0xE0, 0x3F, 0xE3, 0xFF, 0x3F, 0xF8, 0xF1, 0xE7, 0xFE,
0x7E, 0x0C, 0x43, 0x88, 0x7D, 0xFF, 0xFF, 0xE0, 0x7E, 0x63, 0xDF, 0x3E, 0x7C, 0xF1, 0xE7, 0xFE,
0x00, 0x0C, 0x43, 0x88, 0x7C, 0x3C, 0x0F, 0x00, 0x78, 0x03, 0xCF, 0x3C, 0x3C, 0xF1, 0xE7, 0x9E,
0x00, 0x0C, 0x43, 0x88, 0x7C, 0x3C, 0x0F, 0x00, 0xFB, 0xF3, 0xFF, 0x7C, 0x3C, 0xF1, 0xE7, 0xBE,
0x00, 0x0C, 0x43, 0x88, 0x7C, 0x3C, 0x0F, 0x00, 0xFB, 0xF3, 0xFE, 0x7C, 0x3C, 0xF1, 0xE7, 0xFE,
0x00, 0x0C, 0x43, 0x88, 0x7C, 0x3C, 0x0F, 0x00, 0xFB, 0xF3, 0xFC, 0x7C, 0x3C, 0xF1, 0xE7, 0xFC,
0x00, 0x0C, 0x43, 0x88, 0x7C, 0x3C, 0x0F, 0x00, 0x7B, 0xF3, 0xFE, 0x3C, 0x3C, 0xF1, 0xE7, 0xF8,
0x00, 0x0C, 0x43, 0x88, 0x7C, 0x3C, 0x0F, 0x00, 0x7C, 0xF3, 0xDE, 0x3E, 0x7C, 0xF9, 0xE7, 0x80,
0x00, 0x0C, 0x43, 0x88, 0x7C, 0x3C, 0x0F, 0x00, 0x7F, 0xF3, 0xDF, 0x3F, 0xFC, 0xFF, 0xE7, 0x80,
0x00, 0x0C, 0x43, 0x88, 0x7C, 0x3C, 0x0F, 0x00, 0x3F, 0xF3, 0xCF, 0x9F, 0xF8, 0x7F, 0xC7, 0x80,
0x00, 0x0F, 0xC3, 0x88, 0x7C, 0x3C, 0x0F, 0x00, 0x1F, 0xF3, 0xC7, 0x8F, 0xF0, 0x3F, 0x87, 0x80,
0x00, 0x03, 0xC3, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0x88, 0x7B, 0xAF, 0x3F, 0xFB, 0xBA, 0xC3, 0xFA, 0xEA, 0xE1, 0xFE, 0xAE, 0xA8,
0x00, 0x00, 0x03, 0x88, 0x7B, 0xAB, 0xFB, 0xCE, 0xAB, 0xC0, 0xA6, 0xAB, 0x80, 0xD2, 0xBE, 0xD8,
0x00, 0x00, 0x03, 0x88, 0x7B, 0xFB, 0xFB, 0x4E, 0xEF, 0xC1, 0xB6, 0xBA, 0x80, 0xDB, 0xBE, 0xD8,
0x00, 0x00, 0x03, 0x88, 0x7F, 0xFA, 0xDF, 0x6E, 0xEF, 0xDD, 0xB7, 0xBB, 0x6C, 0xDB, 0xBE, 0xDC,
0x00, 0x00, 0x03, 0x88, 0x77, 0xFA, 0xF7, 0x3E, 0xAA, 0xD9, 0xA5, 0xBB, 0x2C, 0xD2, 0xAE, 0xD4,
0x00, 0x00, 0x03, 0x88, 0x77, 0xAE, 0xF7, 0xFB, 0xBA, 0xC1, 0xBD, 0xEE, 0xE0, 0xDE, 0xAE, 0xB4,
0x00, 0x00, 0x03, 0xF8, 0x00, 0x04, 0x00, 0x41, 0x10, 0x00, 0x18, 0x44, 0xC0, 0x18, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
 
void setup(void) {
  u8g.setContrast(0); // seadsita ekraani kontrastsus (LCD plaadist sõltuv)
  u8g.setRot180();// pööra ekraani 180 kraadi (LCD plaadist sõltuv)
  u8g.setFont(u8g_font_gdr14); //sea teksti font
}
 
void loop(void) {
  u8g.firstPage(); //puhasta ekraan
  while ( u8g.nextPage() == 1 ){
    u8g.drawBitmapP( 0, 0, 16, 64, logo); //joonista ekraanile pilt
    //(x-koordinaat, y-koordinaat, horisontaalsete baitide arv, vertikaalsete ridade arv, joonistatava pildi massiiv)
  }
}

Näide #5.3 Kujunduse tekitamine ja andurite kuvamine ekraanil

/*
 # This sample codes is for testing the LCD12864 shield.
 # Editor : Mickey
 # Date   : 2013.11.27
 # Ver    : 0.1
 # Product: LCD12864 shield
 # SKU    : DFR0287
*/
 
 
#include "U8glib.h"
 
// setup u8g object, please remove comment from one of the following constructor calls
// IMPORTANT NOTE: The complete list of supported devices is here: http://code.google.com/p/u8glib/wiki/device
 
U8GLIB_NHD_C12864 u8g(13, 11, 10, 9, 8);  // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8
 
#define KEY_NONE 0
#define KEY_PREV 1
#define KEY_NEXT 2
#define KEY_SELECT 3
#define KEY_BACK 4
 
 
uint8_t uiKeyCodeFirst = KEY_NONE;
uint8_t uiKeyCodeSecond = KEY_NONE;
uint8_t uiKeyCode = KEY_NONE;
 
int adc_key_in;
int key=-1;
int oldkey=-1;
 
 
// Convert ADC value to key number
//         4
//         |
//   0 --  1 -- 3
//         |
//         2
int get_key(unsigned int input)
{   
    if (input < 100) return 0;
    else  if (input < 300) return 1;
    else  if (input < 500) return 2;
    else  if (input < 700) return 3;
    else  if (input < 900) return 4;    
    else  return -1;
}
 
void uiStep(void) {
 
  adc_key_in = analogRead(0);    // read the value from the sensor  
  key = get_key(adc_key_in);   // convert into key press  
  if (key != oldkey)    // if keypress is detected
   {
    delay(50);    // wait for debounce time
    adc_key_in = analogRead(0);    // read the value from the sensor  
    key = get_key(adc_key_in);     // convert into key press
    if (key != oldkey)        
    {     
      oldkey = key;
      if (key >=0){
             //Serial.println(key);
             if ( key == 0 )
               uiKeyCodeFirst = KEY_BACK;
             else if ( key == 1 )
               uiKeyCodeFirst = KEY_SELECT;
             else if ( key == 2 )
               uiKeyCodeFirst = KEY_NEXT;
             else if ( key == 4 )
               uiKeyCodeFirst = KEY_PREV;
             else 
               uiKeyCodeFirst = KEY_NONE;
 
             uiKeyCode = uiKeyCodeFirst;           
      }
    }
  }
 delay(100);
}
 
 
#define MENU_ITEMS 6
char *menu_strings[MENU_ITEMS] = { "ITT Group OU", "www.ittgroup.ee", "Akadeemia tee 21", "B-127" ,"Tallinn 12618","Tel. 6566614"};
 
uint8_t menu_current = 0;
uint8_t menu_redraw_required = 0;
uint8_t last_key_code = KEY_NONE;
 
 
void drawMenu(void) {
  uint8_t i, h;
  u8g_uint_t w, d;
 
  u8g.setFont(u8g_font_6x12);//4x6 5x7 5x8 6x10 6x12 6x13
  u8g.setFontRefHeightText();
  u8g.setFontPosTop();
 
  h = u8g.getFontAscent()-u8g.getFontDescent();
  w = u8g.getWidth();
  for( i = 0; i < MENU_ITEMS; i++ ) {
    d = (w-u8g.getStrWidth(menu_strings[i]))/2;
    u8g.setDefaultForegroundColor();
    if ( i == menu_current ) {  
      u8g.drawBox(0, i*h+1, w, h);
      u8g.setDefaultBackgroundColor();
    }
    u8g.drawStr(d, i*h+1, menu_strings[i]);
  }
}
 
void updateMenu(void) 
{
  switch ( uiKeyCode ) {
    case KEY_NEXT:
      menu_current++;
      if ( menu_current >= MENU_ITEMS )menu_current = 0;
      menu_redraw_required = 1;
      break;
    case KEY_PREV:
      if ( menu_current == 0 )menu_current = MENU_ITEMS;
      menu_current--;
      menu_redraw_required = 1;
      break;
  }
  uiKeyCode = KEY_NONE;
}
 
 
void setup() {
 
  u8g.setRot180();// rotate screen, if required
  u8g.setContrast(0); // seadsita ekraani kontrastsus (LCD plaadist sõltuv)
  menu_redraw_required = 1;     // force initial redraw
  //Serial.begin(9600);
}
 
void loop() {  
 
  uiStep();                                // check for key press
  updateMenu();                            // update menu bar    
 
  if (  menu_redraw_required != 0 ) {
    u8g.firstPage();
    do  {
      drawMenu();
    } while( u8g.nextPage() );
    menu_redraw_required = 0;
  }
 
}


Harjutus #5.1

Muuta näiteprogrammi nii, et ekraanil kuvatakse kolmes erinevas stiilis (font) ühte teksti.

Harjutus #5.1

Konverteerida vabal valitud pilt ekraanile sobilikuks massiiviks ja kuvada see ekraanile. Kasutada konverterit: Bitmap konverter

Harjutus #5.1

Muuta näiteprogrammi nii, et nupu vajutamisel muutub aktiivse menüüelemendi kuvamise viis.

et/arduino/sensorss/project3.txt · Last modified: 2020/07/20 09:00 by 127.0.0.1
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0