LCD - znak pełnego wypełnienia.

Masz problem z Arduino? Tutaj możesz szukać pomocy.
ODPOWIEDZ
Awatar użytkownika
Karl
Majsterkowicz
Posty: 58
Rejestracja: 3 gru 2014, 10:00

LCD - znak pełnego wypełnienia.

Post autor: Karl » 26 lip 2015, 22:30

Niefachowo to nazwałem, ale chodzi mi o widoczny tutaj znak:
https://www.youtube.com/watch?v=ezYzIaY0wr0&t=0m24s
jak to wyświetlić ?

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


Awatar użytkownika
Karl
Majsterkowicz
Posty: 58
Rejestracja: 3 gru 2014, 10:00

Re: LCD - znak pełnego wypełnienia.

Post autor: Karl » 27 lip 2015, 16:39

Oooo tototo
Dziękuję !
Arkadiusz_16
Majsterkowicz
Posty: 62
Rejestracja: 15 kwie 2015, 21:27

Re: LCD - znak pełnego wypełnienia.

Post autor: Arkadiusz_16 » 28 lip 2015, 08:38

Obrazek

A gdybym np chciał znak strzałki?
Jak wpisuję lcd.write(byte(143)); nie pojawia się nic.
rumunn95
Majsterkowicz
Posty: 174
Rejestracja: 12 mar 2015, 18:32

Re: LCD - znak pełnego wypełnienia.

Post autor: rumunn95 » 28 lip 2015, 08:48

polecam program Asystent elektronika z elektrody , w nim mozna piksel po pikselu projektowac znaki zgodne z hd44780 pozniej w arduino

Kod: Zaznacz cały

byte newChar[8] = {B11100, B10100, B11100, B00000, B00000, B00000, B00000, B00000};

void setup()

{
  lcd.createChar(1, newChar);
}

void loop()

{
lcd.write(1);
}
wlasnie stworzylem znak stopnia

znak strzalki w gore:

Kod: Zaznacz cały

byte newChar[8] = {0x04, 0x0e, 0x15, 0x04, 0x04, 0x04, 0x04, 0x04};

void setup()

{
  lcd.createChar(1, newChar);
}

void loop()

{
lcd.write(1);
}
nie zapomniec o ustawieniu kursora w odpowiednim miejscu poleceniem setCursor()
Awatar użytkownika
Karl
Majsterkowicz
Posty: 58
Rejestracja: 3 gru 2014, 10:00

Re: LCD - znak pełnego wypełnienia.

Post autor: Karl » 28 lip 2015, 12:39

Arkadiusz_16 pisze: Jak wpisuję lcd.write(byte(143)); nie pojawia się nic.
143 (Dec) => 8F (Hex)
8F o ile dobrze rozumiem tabelkę to znak paragrafu.

Z tego co już się naczytałem wynika, że może być inna zawartość układu Twojego wyświetlacza.
W "standardowym", najtańszym wyświetlaczu produkcji ChRL (PRC) zawarty jest zestaw europejski+cyrylica. Może Ty masz jakiś inny, droższy, żeby nie powiedzieć lepszy :)
Awatar użytkownika
Karl
Majsterkowicz
Posty: 58
Rejestracja: 3 gru 2014, 10:00

Re: LCD - znak pełnego wypełnienia.

Post autor: Karl » 28 lip 2015, 21:37

Postanowiłem właśnie sprawdzić co siedzi w moim wyświetlaczu za 1.90$
Wczytujcież mój kod i sprawdzajcież. Ów bardzo nieoptymalny, ale ja jestem początkującym programistą w C :)
Aha... za kolejnego dolara oszczędzamy przewodów dodając adapter I2C, do którego biblioteki są wczytywane w moim szkicu.

Opis działania:
LCD wita nas znakami 0-31 (00-1F) z czeluści swych.
Po zadaniu stanu wysokiego na pin 10 w kroku 2s podaje kolejne paczki znaków (krok 32, bo wyświetlacz 16x2)


Kod: Zaznacz cały

#include <LiquidCrystal_I2C.h>
#include <Wire.h>

#define BACKLIGHT_PIN 3
LiquidCrystal_I2C lcd(0x27, 2, 1, 0 , 4, 5, 6, 7);

int pin = 10;
int stan;
int wartosc1;
int wartosc2;
int wartosc3;
int wartosc4;
int wartosc5;
int wartosc6;
int wartosc7;
int wartosc8;
int wartosc9;
int wartosc10;
int wartosc11;
int wartosc12;
int wartosc13;
int wartosc14;
int wartosc15;
int wartosc16;
int wartosc17;
int wartosc18;
int wartosc19;
int wartosc20;
int wartosc21;
int wartosc22;
int wartosc23;
int wartosc24;
int wartosc25;
int wartosc26;
int wartosc27;
int wartosc28;
int wartosc29;
int wartosc30;
int wartosc31;
int wartosc32;

void setup() {

    pinMode (pin, INPUT);

  lcd.clear();
  lcd.begin(16,2);
  lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);
  lcd.setBacklight(1);

wartosc1 = 0;
}

void loop()
{
  stan = digitalRead(pin);  
if (stan ==HIGH)
  {
     wartosc1 = wartosc1 + 32;
   } 


wartosc2 = (wartosc1 + 1);
wartosc3 = (wartosc1 + 2);
wartosc4 = (wartosc1 + 3);
wartosc5 = (wartosc1 + 4);
wartosc6 = (wartosc1 + 5);
wartosc7 = (wartosc1 + 6);
wartosc8 = (wartosc1 + 7);
wartosc9 = (wartosc1 + 8);
wartosc10 = (wartosc1 + 9);
wartosc11 = (wartosc1 + 10);
wartosc12 = (wartosc1 + 11);
wartosc13 = (wartosc1 + 12);
wartosc14 = (wartosc1 + 13);
wartosc15 = (wartosc1 + 14);
wartosc16 = (wartosc1 + 15);
wartosc17 = (wartosc1 + 16);
wartosc18 = (wartosc1 + 17);
wartosc19 = (wartosc1 + 18);
wartosc20 = (wartosc1 + 19);
wartosc21 = (wartosc1 + 20);
wartosc22 = (wartosc1 + 21);
wartosc23 = (wartosc1 + 22);
wartosc24 = (wartosc1 + 23);
wartosc25 = (wartosc1 + 24);
wartosc26 = (wartosc1 + 25);
wartosc27 = (wartosc1 + 26);
wartosc28 = (wartosc1 + 27);
wartosc29 = (wartosc1 + 28);
wartosc30 = (wartosc1 + 29);
wartosc31 = (wartosc1 + 30);
wartosc32 = (wartosc1 + 31);


lcd.setCursor(0,0);     
lcd.write(byte(wartosc1));
lcd.setCursor(1,0);     
lcd.write(byte(wartosc2));
lcd.setCursor(2,0);     
lcd.write(byte(wartosc3));
lcd.setCursor(3,0);     
lcd.write(byte(wartosc4));
lcd.setCursor(4,0);     
lcd.write(byte(wartosc5));
lcd.setCursor(5,0);     
lcd.write(byte(wartosc6));
lcd.setCursor(6,0);     
lcd.write(byte(wartosc7));
lcd.setCursor(7,0);     
lcd.write(byte(wartosc8));
lcd.setCursor(8,0);     
lcd.write(byte(wartosc9));
lcd.setCursor(9,0);     
lcd.write(byte(wartosc10));
lcd.setCursor(10,0);     
lcd.write(byte(wartosc11));
lcd.setCursor(11,0);     
lcd.write(byte(wartosc12));
lcd.setCursor(12,0);     
lcd.write(byte(wartosc13));
lcd.setCursor(13,0);     
lcd.write(byte(wartosc14));
lcd.setCursor(14,0);     
lcd.write(byte(wartosc15));
lcd.setCursor(15,0);     
lcd.write(byte(wartosc16));

lcd.setCursor(0,1);     
lcd.write(byte(wartosc17));
lcd.setCursor(1,1);     
lcd.write(byte(wartosc18));
lcd.setCursor(2,1);     
lcd.write(byte(wartosc19));
lcd.setCursor(3,1);     
lcd.write(byte(wartosc20));
lcd.setCursor(4,1);     
lcd.write(byte(wartosc21));
lcd.setCursor(5,1);     
lcd.write(byte(wartosc22));
lcd.setCursor(6,1);     
lcd.write(byte(wartosc23));
lcd.setCursor(7,1);     
lcd.write(byte(wartosc24));
lcd.setCursor(8,1);     
lcd.write(byte(wartosc25));
lcd.setCursor(9,1);     
lcd.write(byte(wartosc26));
lcd.setCursor(10,1);     
lcd.write(byte(wartosc27));
lcd.setCursor(11,1);     
lcd.write(byte(wartosc28));
lcd.setCursor(12,1);     
lcd.write(byte(wartosc29));
lcd.setCursor(13,1);     
lcd.write(byte(wartosc30));
lcd.setCursor(14,1);     
lcd.write(byte(wartosc31));
lcd.setCursor(15,1);     
lcd.write(byte(wartosc32));
delay(2000);
}
ODPOWIEDZ

Strony partnerskie: