Přepínání obrazovek a zobrazení analogových hodnot

Odpovědět
unyhhox
Příspěvky: 41
Registrován: 19 bře 2018, 11:11
Reputation: 0

Přepínání obrazovek a zobrazení analogových hodnot

Příspěvek od unyhhox » 22 dub 2018, 18:23

Zdravím kolegové,

jsem v arduinu začátečník a ve školním projektu musím vytvořit zobrazení naměřených hodnot napětí, proudů a výkonů na LCD 128x64. Níže přikládám kód. Mám čtyři tlačítka a chci, aby např. při zmáčknutí tlačítka 1. naběhla obrazovka č1., při stisku tlačítka dva obrazovka číslo 2 atd. Tento kód dělá, co má do doby, dokud nechci zobrazovat reálné analogové hodnoty. Při zmáčknutí tlačítka 1 mi najede obrazovka 1, ale analogová hodnota se neobnovuje .. obnoví se pouze při stisku tlačítka, což dává smysl viz. kód .. nicméně netuším, jak tenhle problém vyřešit, aby se analogová hodnota každé 2s obnovovala. A dalším problémem je špatné zobrazování znaků.

Problém obnovování analogové hodnoty a špatného zobrazení symbolů jsem zaznamenal na video viz. odkaz níže

https://www.youtube.com/watch?v=4xh1IsAm7eg

Děkuji za rady.

Kód: Vybrat vše

#include "U8glib.h"
#define EN 7
#define RW 6
#define RS 5
#include <phi_buttons.h>
#define btn_a 12
#define btn_b 11
#define btn_c 10
#define btn_d 9
phi_buttons btn_1(btn_a, LOW);
phi_buttons btn_2(btn_b, LOW);
phi_buttons btn_3(btn_c, LOW);
phi_buttons btn_4(btn_d, LOW);
float voltage1;
U8GLIB_ST7920_128X64_1X lcd(EN, RW, RS);

const uint8_t vutlogo[] PROGMEM = {
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x1F, 0xF8, 0xFF, 0xE3, 0x81, 0xCF, 0xFE, 0x03,
0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x1F, 0xF8, 0xFF, 0xE3, 0x83, 0xCF, 0xFE, 0x03,
0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x1F, 0xF8, 0xFF, 0xE3, 0x87, 0x8F, 0xFE, 0x03,
0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x1C, 0x00, 0xC0, 0x03, 0x87, 0x00, 0xE0, 0x03,
0xC1, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x03, 0x80, 0x1C, 0x00, 0xC0, 0x03, 0x8E, 0x00, 0xE0, 0x03,
0xC1, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x03, 0x80, 0x1C, 0x00, 0xC0, 0x03, 0x9C, 0x00, 0xE0, 0x03,
0xC1, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x03, 0x80, 0x1C, 0x00, 0xC0, 0x03, 0xBC, 0x00, 0xE0, 0x03,
0xC1, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x03, 0x80, 0x1F, 0xF0, 0xFF, 0xC3, 0xF8, 0x00, 0xE0, 0x03,
0xC1, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x03, 0x80, 0x1F, 0xF0, 0xFF, 0xC3, 0xF8, 0x00, 0xE0, 0x03,
0xC1, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x03, 0x80, 0x1F, 0xF0, 0xFF, 0xC3, 0xFC, 0x00, 0xE0, 0x03,
0xC1, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x03, 0x80, 0x1C, 0x00, 0xC0, 0x03, 0xCE, 0x00, 0xE0, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0x83, 0x80, 0x1C, 0x00, 0xC0, 0x03, 0x8E, 0x00, 0xE0, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0x83, 0x80, 0x1C, 0x00, 0xC0, 0x03, 0x87, 0x00, 0xE0, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0x83, 0x80, 0x1C, 0x00, 0xC0, 0x03, 0x87, 0x00, 0xE0, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0x83, 0x80, 0x1C, 0x00, 0xC0, 0x03, 0x83, 0x80, 0xE0, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0x83, 0x80, 0x1C, 0x00, 0xFF, 0xE3, 0x83, 0x80, 0xE0, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0x83, 0x80, 0x1C, 0x00, 0xFF, 0xE3, 0x81, 0xC0, 0xE0, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x1C, 0x00, 0xFF, 0xE3, 0x80, 0xE0, 0xE0, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x70, 0x38, 0xFF, 0xE3, 0xFF, 0x8E, 0x07, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x70, 0x38, 0xFF, 0xE3, 0xFF, 0x8F, 0x07, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x70, 0x38, 0xFF, 0xE3, 0xFF, 0x8F, 0x07, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x70, 0x38, 0xE0, 0x03, 0x80, 0x0F, 0x87, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x70, 0x38, 0xE0, 0x03, 0x80, 0x0F, 0x87, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x70, 0x38, 0xE0, 0x03, 0x80, 0x0F, 0xC7, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x70, 0x38, 0xE0, 0x03, 0x80, 0x0F, 0xC7, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x70, 0x38, 0xFF, 0xC3, 0xFF, 0x0E, 0xE7, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x70, 0x38, 0xFF, 0xC3, 0xFF, 0x0E, 0xE7, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x70, 0x38, 0xFF, 0xC3, 0xFF, 0x0E, 0x77, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x70, 0x38, 0xE0, 0x03, 0x80, 0x0E, 0x77, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x70, 0x38, 0xE0, 0x03, 0x80, 0x0E, 0x3F, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x70, 0x38, 0xE0, 0x03, 0x80, 0x0E, 0x3F, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x70, 0x38, 0xE0, 0x03, 0x80, 0x0E, 0x1F, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x78, 0x78, 0xE0, 0x03, 0x80, 0x0E, 0x1F, 0x03,
0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0x80, 0x3F, 0xF0, 0xFF, 0xE3, 0xFF, 0x8E, 0x0F, 0x03,
0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x1F, 0xE0, 0xFF, 0xE3, 0xFF, 0x8E, 0x0F, 0x03,
0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x0F, 0xC0, 0xFF, 0xE3, 0xFF, 0x8E, 0x07, 0x03,
0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
};

const uint8_t overview[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0xE3, 0x0D, 0xF9, 0xFB, 0x0D, 0xBF, 0xB3, 0x98, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xF3, 0x0D, 0xF9, 0xFB, 0x0D, 0xBF, 0xB3, 0x98, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x06, 0x19, 0x09, 0x81, 0x8D, 0x09, 0xB0, 0x33, 0x98, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x06, 0x19, 0x09, 0x81, 0x8D, 0x09, 0xB0, 0x12, 0x90, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x06, 0x19, 0x99, 0xF9, 0xF9, 0x99, 0xBF, 0x92, 0x90, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x06, 0x19, 0x99, 0xF9, 0xF9, 0x99, 0xBF, 0x9E, 0xF0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x06, 0x18, 0x91, 0x81, 0xB0, 0x91, 0xB0, 0x1E, 0xF0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x06, 0x18, 0xF1, 0x81, 0xB8, 0xF1, 0xB0, 0x1E, 0xF0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0x38, 0xF1, 0x81, 0x98, 0xF1, 0xB0, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0xF0, 0x61, 0xF9, 0x8C, 0x61, 0xBF, 0x8C, 0x60, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xE0, 0x61, 0xF9, 0x8C, 0x61, 0xBF, 0x8C, 0x60, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
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, 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, 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, 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, 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) {
  // nastavení bílé barvy pro výpis
  if ( lcd.getMode() == U8G_MODE_R3G3B2 ) {
    lcd.setColorIndex(255);
  }
  // nastavení maximální intenzity svitu
  else if ( lcd.getMode() == U8G_MODE_GRAY2BIT ) {
    lcd.setColorIndex(3);
  }
  // nastavení viditelnosti pixelů
  else if ( lcd.getMode() == U8G_MODE_BW ) {
    lcd.setColorIndex(1);
  }
Serial.begin(9600);
delay(1000);
lcd.firstPage();
do 
{
draw();
} 
while( lcd.nextPage() );
}

void loop(void) {
int temp1=btn_1.sense();
int temp2=btn_2.sense();
int temp3=btn_3.sense();
int temp4=btn_4.sense();
if (temp1==buttons_released){
lcd.firstPage();
do {
draw1();
} while( lcd.nextPage() );
}
if (temp2==buttons_released){
lcd.firstPage();
do {
draw2();
} while( lcd.nextPage() );
}
if (temp3==buttons_released){
lcd.firstPage();
do {
draw3();
} while( lcd.nextPage() );
}
if (temp4==buttons_released){
lcd.firstPage();
do {
draw4();
} while( lcd.nextPage() );
}}

void draw(void) {
lcd.drawBitmapP( 0, 0, 16, 64, vutlogo);
}

void draw1(void) {
int sensorValue1 = analogRead(A0);
float voltage1 = sensorValue1 *(5.0 / 1023.0);
lcd.drawBitmapP( 0, 0, 16, 64, overview);
lcd.setFont(u8g_font_helvR08);

lcd.setPrintPos(0, 38); 
lcd.print("Voltage");
lcd.setPrintPos(50, 38);
lcd.print(voltage1);
}

void draw2(void) {
lcd.setFont(u8g_font_8x13);
lcd.setPrintPos(42, 50); 
lcd.print("Button 2");
}

void draw3(void) {
lcd.setFont(u8g_font_8x13);
lcd.setPrintPos(42, 50); 
lcd.print("Button 3");
}

void draw4(void) {
lcd.setFont(u8g_font_8x13);
lcd.setPrintPos(42, 50); 
lcd.print("Button 4");
}

Uživatelský avatar
gilhad
Příspěvky: 786
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Přepínání obrazovek a zobrazení analogových hodnot

Příspěvek od gilhad » 24 dub 2018, 13:57

potrebujes to obnovovani volat "porad", bez ohledu na to, jestli je zrovna neco stisknute a kdyz se neco stiskne, tak si zapamatovat, co to bylo naposled a podle toho vybrat stranku.

Zhruba nejak takto:

Kód: Vybrat vše

int posledni_button=1;
void loop(){
if (btn_1.sense()==buttons_released){ posledni_button=1;};
if (btn_2.sense()==buttons_released){ posledni_button=2;};
if (btn_3.sense()==buttons_released){ posledni_button=3;};
if (btn_4.sense()==buttons_released){ posledni_button=4;};
lcd.firstPage();
do {
  switch (posledni_button) {
    case 1: draw1();break;
    case 2: draw2();break;
    case 3: draw3();break;
    case 4: draw4();break;
    };
} while( lcd.nextPage() );
}

Uživatelský avatar
gilhad
Příspěvky: 786
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Přepínání obrazovek a zobrazení analogových hodnot

Příspěvek od gilhad » 25 dub 2018, 14:35

(Odpovidam tady, protoze kdyz nekdo narazi na podobny problem, tak to najde ve vyhledavani a nemusi se ptat znovu.)
  • ale všiml jsem si, že tlačítka reagují až ve chvíli, kdy je držím cca pul sekundy, že nereagují okamžitě.
    • Neznam knihovnu phi_buttons a na par kliknuti jsem nenasel zdrojaky, ale vidim, ze testujese release (cili pusteni) tlacitka, ze to funguje i pri stisknutem muze byt funkci autorepeat z te knihovny, ale i ta ceka nejakou dobu (1/2s?) nez autorepeat tlacitko pusti a zase stiskne. Pokud k tomu neni nejaky specialni duvod, tak bych se vykaslal na obskurni knihovny a jednoduse nastavil v setupu

      Kód: Vybrat vše

      pinmode(btn_a,INPUT_PULLUP);
      ; pin 12 (btn_a) povesil na tlacitko pripojene kk zemi a v loop pouzil

      Kód: Vybrat vše

      if (digitalRead(btn_a)==LOW){ posledni_button=1;}; // tlacitko je stisknute
      , cimz bych reagoval na stisknute tlacitko tak rychle, jak to jen jde
  • akorát bych tu analogovou hodnotu potřeboval obnovovat jednou za 1-2 sekundy
    • obzvlast bych se vyhnul pouzivani dalay ve funkci draw_x(), ktera se vola opakovane, dokud se obrazovka neprekresli cela (protoze kvuli velikosti pameti nejde uchovat celou obrazovku, tak se prekresluje jen nejaka jeji cast a ta draw.. se vola CELA pro KAZDE prekresleni casti. kazdy delay v dra se tak nasobi poctem casti potrebnych k prekresleni obrazovky - ve tvem priklade asi tak 8x
    • navic bych se vyhnul nacitani hodnot ve funkci draw, protoze se mezi jednotlivymi volanimi muzou menit a kdyz je vystup rozdelen mezi vice casti, tak kazda z nich bude obsahovat jinou namerenou hodnotu - vysledek muze vypadat s trochou smuly otresne
    • ukazane pouziti draw() znamena prekreslit CELOU obrazovku, coz (zvlast s grafikou) muze znamenat spoustu dat, ktera je potreba prenest - a ten prenos je proste POMALY a grafickych dat je proste MOC (i tak by u8glib mela byt schopna neceho jako 20 framu za sekundu)
    • takze radsi misto

      Kód: Vybrat vše

      lcd.firstPage();
      do {
        switch (posledni_button) {
          case 1: draw1();break;
          case 2: draw2();break;
          case 3: draw3();break;
          case 4: draw4();break;
          };
      } while( lcd.nextPage() );
      };
      
      void draw1(void) {
      int sensorValue1 = analogRead(A0);
      float voltage1 = sensorValue1 *(5.0 / 1023.0);
      delay(1000);
      lcd.setFont(u8g_font_helvR08);
      lcd.setPrintPos(0, 25); 
      lcd.print("Production");
      lcd.setPrintPos(0, 38); 
      lcd.print("Consumption");
      lcd.setPrintPos(0, 51); 
      lcd.print("Produced");
      lcd.setPrintPos(0, 64); 
      lcd.print("Consumed");
      lcd.setPrintPos(110, 25); 
      lcd.print("W");
      lcd.setPrintPos(110, 38); 
      lcd.print("W");
      lcd.setPrintPos(110, 51); 
      lcd.print("W h");
      lcd.setPrintPos(110, 64); 
      lcd.print("W h");
      lcd.setPrintPos(80, 64);
      lcd.print(voltage1);
      
      }
      
      pouzij

      Kód: Vybrat vše

        switch (posledni_button) {
          case 1: page1();break;
          case 2: page2();break;
          case 3: page3();break;
          case 4: page4();break;
          };
      };
      
      float voltage1; // hodnotu dodame pozdeji
      void page1(void) {
        int sensorValue1 = analogRead(A0);
        voltage1 = sensorValue1 *(5.0 / 1023.0); // tady ji nastavime pro tuto page1
        do {
          draw1();  // pomocna funkce na prekresleni KONSTANTNI stranky
        } while( lcd.nextPage() );
      }
      void draw1(void){
      lcd.setFont(u8g_font_helvR08);
      lcd.setPrintPos(0, 25); 
      lcd.print("Production");
      lcd.setPrintPos(0, 38); 
      lcd.print("Consumption");
      lcd.setPrintPos(0, 51); 
      lcd.print("Produced");
      lcd.setPrintPos(0, 64); 
      lcd.print("Consumed");
      lcd.setPrintPos(110, 25); 
      lcd.print("W");
      lcd.setPrintPos(110, 38); 
      lcd.print("W");
      lcd.setPrintPos(110, 51); 
      lcd.print("W h");
      lcd.setPrintPos(110, 64); 
      lcd.print("W h");
      lcd.setPrintPos(80, 64);
      lcd.print(voltage1);  // tady ji pouzijeme a nebude se nam menit v kazdem pruchodu draw1
      }
      
    (jinak ti hrozi, ze pokud se behem prekreslovani zmeni hodnota na A0, a tudiz se zmeni i voltage1 napriklad z 3.99 na 4.11, tak s pokud ti to vyjde na prelom stranky, tak budes mit na display horni cast z 3.99 a dolni z 4.11 coz je naprosto nesmyslna a necitelna zmet pixelu

rejze69
Příspěvky: 174
Registrován: 02 dub 2018, 18:56
Reputation: 0

Re: Přepínání obrazovek a zobrazení analogových hodnot

Příspěvek od rejze69 » 04 kvě 2018, 17:35

Jinak to cyklické přepínání stránek jde vyřešit přímo ve funkci switch, pomocí default. firstPage. Bez pomocných řádků. Ne?

rejze69
Příspěvky: 174
Registrován: 02 dub 2018, 18:56
Reputation: 0

Re: Přepínání obrazovek a zobrazení analogových hodnot

Příspěvek od rejze69 » 04 kvě 2018, 18:07

Aha jak na to koukám na mobilu ušlo mi že má na každý case tlačítko. :oops:

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 13 hostů