Znalazłem cos co wykorzystałem. Nie do konca rozumiem o co w nim chodzi, a chodzi o to zeby rozumiec i sie nauczyc dlaczego tak a nie inaczej. Kod ma tez problem, jak wsadze go do kodu głownego gdzie mam jeszce w wierszy piwerwszym inne rzeczy pasek głupieje, wiem że napewno chodzi tu o delay(150) bez opóźnienia działa dobrze - prawie, bo tez potrafi zostawic cos za soba. Wyglada on tak
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
uint8_t bar0[8] = { to kapuje bo tu definiujemy znaki w tym przypadku linie
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0};
uint8_t bar1[8] = {
0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10};
uint8_t bar2[8] = {
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18};
uint8_t bar3[8] = {
0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C};
uint8_t bar4[8] = {
0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E};
//uint8_t bar5[8] = {
// 0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F};
int i,j=0;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
lcd.begin();
lcd.backlight();
lcd.createChar(0, bar0); ---------------------- tu je nazywamy
lcd.createChar(1, bar1);
lcd.createChar(2, bar2);
lcd.createChar(3, bar3);
lcd.createChar(4, bar4);
}
void loop()
{
pasek(analogRead(A0),1,16); -------- definiujemy pasek. Ma brac odczyt z A0, ma być w pierwszym wierszu (tzn 2) wyswietlacz ma 16 znaków
}
void pasek(int data, int row, int lcd_size) -------- definiujemy pasek. Ma brac odczyt z A0, ma być w pierwszym wierszu (tzn 2) wyswietlacz ma 16 znaków
{
j = map(data, 0, 1023, 0, (5 * lcd_size)+16); --- tu nie lapie wyswietlacz ma 80 znaków, zapisane w tej postaci dochodzi do konca zapisane w postaci (data, 0, 1023, 0, 80) jest problem dochodzi do 13 pola
i = j / 6; - nie wiem
lcd.setCursor(i,row); --- ustawia kursor, row to wiersz 2 i poczatek. Dlaczego nie działa jak napisze (0,1)
lcd.write(j % 6); --- wyswietla nasz pasek ale co znaczy zapis dlaczego % i 6
Jeszcze jedno. Mam zdefiniowane paski uint8_t bar0[8] mam je poźniej nazwane jako 1,2,3,4,5 i gdzie one sa umieszczone dalej w kodzie w PASKU? i = j / 6; lcd.write(j % 6); ??
}
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
uint8_t bar0[8] = { to kapuje bo tu definiujemy znaki w tym przypadku linie
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0};
uint8_t bar1[8] = {
0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10};
uint8_t bar2[8] = {
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18};
uint8_t bar3[8] = {
0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C};
uint8_t bar4[8] = {
0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E};
//uint8_t bar5[8] = {
// 0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F};
int i,j=0;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
lcd.begin();
lcd.backlight();
lcd.createChar(0, bar0); ---------------------- tu je nazywamy
lcd.createChar(1, bar1);
lcd.createChar(2, bar2);
lcd.createChar(3, bar3);
lcd.createChar(4, bar4);
}
void loop()
{
pasek(analogRead(A0),1,16); -------- definiujemy pasek. Ma brac odczyt z A0, ma być w pierwszym wierszu (tzn 2) wyswietlacz ma 16 znaków
}
void pasek(int data, int row, int lcd_size) -------- definiujemy pasek. Ma brac odczyt z A0, ma być w pierwszym wierszu (tzn 2) wyswietlacz ma 16 znaków
{
j = map(data, 0, 1023, 0, (5 * lcd_size)+16); --- tu nie lapie wyswietlacz ma 80 znaków, zapisane w tej postaci dochodzi do konca zapisane w postaci (data, 0, 1023, 0, 80) jest problem dochodzi do 13 pola
i = j / 6; - nie wiem
lcd.setCursor(i,row); --- ustawia kursor, row to wiersz 2 i poczatek. Dlaczego nie działa jak napisze (0,1)
lcd.write(j % 6); --- wyswietla nasz pasek ale co znaczy zapis dlaczego % i 6
Jeszcze jedno. Mam zdefiniowane paski uint8_t bar0[8] mam je poźniej nazwane jako 1,2,3,4,5 i gdzie one sa umieszczone dalej w kodzie w PASKU? i = j / 6; lcd.write(j % 6); ??
}