This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| et:arduino:sensorss:project3 [2017/01/03 12:13] – kaupo.raid | et:arduino:sensorss:project3 [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 2: | Line 2: | ||
| \\ | \\ | ||
| ===== Näide #5.1 Teksti kuvamine ekraanil ===== | ===== Näide #5.1 Teksti kuvamine ekraanil ===== | ||
| + | |||
| <code c> | <code c> | ||
| Line 29: | Line 30: | ||
| ===== Näide #5.2 Logo kuvamine ekraanil ===== | ===== Näide #5.2 Logo kuvamine ekraanil ===== | ||
| - | Näide demonstreerib | + | {{: |
| + | |||
| + | Näide demonstreerib | ||
| + | [[http:// | ||
| <code c> | <code c> | ||
| Line 123: | Line 127: | ||
| ===== Näide #5.3 Kujunduse tekitamine ja andurite kuvamine ekraanil ===== | ===== Näide #5.3 Kujunduse tekitamine ja andurite kuvamine ekraanil ===== | ||
| + | |||
| + | {{: | ||
| <code c> | <code c> | ||
| + | /* | ||
| + | # This sample codes is for testing the LCD12864 shield. | ||
| + | # Editor : Mickey | ||
| + | # Date : 2013.11.27 | ||
| + | # Ver : 0.1 | ||
| + | # Product: LCD12864 shield | ||
| + | # SKU : DFR0287 | ||
| + | */ | ||
| + | |||
| + | #include " | ||
| + | |||
| + | // setup u8g object, please remove comment from one of the following constructor calls | ||
| + | // IMPORTANT NOTE: The complete list of supported devices is here: http:// | ||
| + | |||
| + | 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); | ||
| + | key = get_key(adc_key_in); | ||
| + | if (key != oldkey) | ||
| + | { | ||
| + | delay(50); | ||
| + | adc_key_in = analogRead(0); | ||
| + | key = get_key(adc_key_in); | ||
| + | if (key != oldkey) | ||
| + | { | ||
| + | oldkey = key; | ||
| + | if (key >=0){ | ||
| + | // | ||
| + | if ( key == 0 ) | ||
| + | | ||
| + | else if ( key == 1 ) | ||
| + | | ||
| + | else if ( key == 2 ) | ||
| + | | ||
| + | else if ( key == 4 ) | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | | ||
| + | } | ||
| + | |||
| + | |||
| + | #define MENU_ITEMS 6 | ||
| + | char *menu_strings[MENU_ITEMS] = { "ITT Group OU", " | ||
| + | |||
| + | 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);// | ||
| + | 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]))/ | ||
| + | u8g.setDefaultForegroundColor(); | ||
| + | if ( i == menu_current ) { | ||
| + | u8g.drawBox(0, | ||
| + | u8g.setDefaultBackgroundColor(); | ||
| + | } | ||
| + | u8g.drawStr(d, | ||
| + | } | ||
| + | } | ||
| + | |||
| + | 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();// | ||
| + | u8g.setContrast(0); | ||
| + | menu_redraw_required = 1; // force initial redraw | ||
| + | // | ||
| + | } | ||
| + | |||
| + | void loop() { | ||
| + | |||
| + | uiStep(); | ||
| + | updateMenu(); | ||
| + | | ||
| + | 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: | ||
| + | |||
| + | === Harjutus #5.1 === | ||
| + | Muuta näiteprogrammi nii, et nupu vajutamisel muutub aktiivse menüüelemendi kuvamise viis. | ||
| + | |||