• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
LCD + I2C jak zrobic Afr/voltomierz + pasek
#10
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);  ??


}
 
Odpowiedź
  


Wiadomości w tym wątku
RE: LCD + I2C jak zrobic Afr/voltomierz + pasek - przez Kuter_tm - 15-02-2017, 17:36

Skocz do:


Przeglądający: 2 gości