Skocz do zawartości

Pomocna odpowiedź

Zamówiłem właśnie na Alledrogo dwa wyświetlacze OLED - 0,91" 128x32 I2C oraz 0,96" 128x64 I2C, plus konwertery I2C-LCD. Ma to tę zaletę (Alledrogo), że zawsze mogę coś zwrócić.

Zauważyłem, że te mniejsze 128x32 różnią się pinami - są takie z pinem SCL (dla I2C) i SCK (w aukcji opisane jako dla I2C, ale google pokazuje, że dla SPI). Nie było wcześniej w temacie nic na temat SPI, więc wziąłem ten z pinem SCL (ten większy też ma taki pin, oraz konwerter go posiada - powinno wszystko pasować).

Czytając cały wątek od początku, Koledzy forumowicze wtrącają coraz to nowsze pomysły. Większość bardzo mi się podoba i widzę je oczami wyobraźni. Chciałbym jednak wspomnieć, że zaledwie od kilku dni posiadam UNO, a środowisko Arduino jest mi całkowicie obce. No prawie - staram się rozszyfrowywać coraz to nowsze linijki kodu. Tak więc proszę mieć na uwadze ten fakt, i to do czego jestem (będę) zdolny z Waszymi wskazówkami.

Wpadłem również na symulator arduino - Fritzing. Niby wersja darmowa, po zainstalowaniu i uruchomieniu zawiesza się. Przeinstalowanie nic nie pomaga. Czy ktoś może polecić inny symulator? A może większość z Kolegów działa "praktycznie" - czyli montuje od razu?

Cytat

@BlackJack trochę zachodu jak to określiłeś można ogarnąć. Niestety jak wspomniałem w pierwszym poście z wiedzą u mnie kiepsko. Kończąc szkołę podstawową dostałem pierwszy komputer (Commodore C64 - słyszę ten śmiech na sali).

To i tak więcej ode mnie miałeś..Ja pierwszego komputera Pentium 166 "dorobiłem się", po wypadku w zawodówce, jak dostałem odszkodowanie za obcięty palec. C64 dorwałem 10 lat później na śmietniku, i mam do dziś. To co potrafię nauczyłem się sam, z pomocą życzliwych ludzi któży pomogli w wyjaśnieniu paru żeczy. A dziś programuje panela HMI i sterowniki PLC jak trzeba. Kursy sam zrobiłem za własne pieniądze.

A dziś w sumie jestem jednym z dwóch co potrafią programować na całym zakładzie.

Młodzi, a im się nie chce, nie ma gotowców w internecie, trzeba by się wysilić, do tego jeszcze matematykę jakąś znać. E.. to nie dla nich. Za moich czasów mogliśmy tylko marzyć, lub sobie poczytać w BAJTKU albo Młodym techniku tudzież AMIGE o tym co ma dzisiejsza młodzież ma pod nosem. Ale dla większości liczy się tylko być online na fejsie czy innych faekbookach.

@99teki dziękuję. Właśnie takiego zdjęcia szukałem bo już kiedyś mi się przewinęło przez google. Może to było to, tylko w "normalnych" kolorach.

Natomiast ten większy 128x64 jako umieszczony na budynku dworca - wyświetlający pociągi dla wszystkich peronów.

(edytowany)

Po długiej analizie Waszych wskazówek i ogromnemu wsparciu @farmaceuta wyszło mi (Nam) coś takiego - działa 🙂

#include <LiquidCrystal.h>


const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void setup() {
  pinMode(8,INPUT_PULLUP);
  pinMode(9,INPUT_PULLUP);
  pinMode(10,INPUT_PULLUP);
  
  lcd.begin(16, 2);
  
  
}

void loop() {
  if (digitalRead(8) == 0) { 
  delay(1000);
  lcd.setCursor(0,0);
  lcd.print("16:30 PR Katowice");
  lcd.setCursor(0,1);
  lcd.print("16:45 IC Warszawa Wsch.");
  } else if (digitalRead(9) == 0) { 
  delay(1000);
  lcd.setCursor(0,0);
  lcd.print("12:00 TLK Gliwice");
  lcd.setCursor(0,1);
  lcd.print("12:05 IC Praga");
}  else if (digitalRead(10) == 0) { 
  delay(1000);
  lcd.setCursor(0,0);
  lcd.print("23:15 IC Berlin");
  lcd.setCursor(0,1);
  lcd.print("23:30 IC Wieden");
    } 

}

problemem jest tylko fakt, że wyświetlając krótszy komunikat po dłuższym (zawierającym więcej znaków w linijce), pozostaje część starych znaków:

najpierw "16:45 IC Warszawa Wsch." potem "12:05 IC Praga" i wychodzi "12:05 IC Pragaawa Wsch."

Dodałem linijkę pustego wiersza i otrzymałem następujący kod:

#include <LiquidCrystal.h>


const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void setup() {
  pinMode(8,INPUT_PULLUP);
  pinMode(9,INPUT_PULLUP);
  pinMode(10,INPUT_PULLUP);
  
  lcd.begin(16, 2);
  
  
}

void loop() {
  if (digitalRead(8) == 0) { 
  delay(1000);
  lcd.setCursor(0,0);
  lcd.print("                ");
  lcd.print("16:30 PR Katowice");
  lcd.setCursor(0,1);
  lcd.print("16:45 IC Warszawa Wsch.");
  } else if (digitalRead(9) == 0) { 
  delay(1000);
  lcd.setCursor(0,0);
  lcd.print("                ");
  lcd.print("12:00 TLK Gliwice");
  lcd.setCursor(0,1);
  lcd.print("12:05 IC Praga");
}  else if (digitalRead(10) == 0) { 
  delay(1000);
  lcd.setCursor(0,0);
  lcd.print("                ");
  lcd.print("23:15 IC Berlin");
  lcd.setCursor(0,1);
  lcd.print("23:30 IC Wieden");
    } 

}

w tej chwili górny wiersz jest ZAWSZE pusty a dolny nadal z błędem (zostają stare znaki na końcu).

Linijka pustego wiersza przed każdym komunikatem powoduje, że ekran jedynie ma podświetlenie 😞

#include <LiquidCrystal.h>


const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void setup() {
  pinMode(8,INPUT_PULLUP);
  pinMode(9,INPUT_PULLUP);
  pinMode(10,INPUT_PULLUP);
  
  lcd.begin(16, 2);
  
  
}

void loop() {
  if (digitalRead(8) == 0) { 
  delay(1000);
  lcd.setCursor(0,0);
  lcd.print("                ");
  lcd.print("16:30 PR Katowice");
  lcd.setCursor(0,1);
  lcd.print("                ");
  lcd.print("16:45 IC Warszawa Wsch.");
  } else if (digitalRead(9) == 0) { 
  delay(1000);
  lcd.setCursor(0,0);
  lcd.print("                ");
  lcd.print("12:00 TLK Gliwice");
  lcd.setCursor(0,1);
  lcd.print("                ");
  lcd.print("12:05 IC Praga");
}  else if (digitalRead(10) == 0) { 
  delay(1000);
  lcd.setCursor(0,0);
  lcd.print("                ");
  lcd.print("23:15 IC Berlin");
  lcd.setCursor(0,1);
  lcd.print("                ");
  lcd.print("23:30 IC Wieden");
    } 

}

Proszę o wskazówki dot. rozwiązania problemu

Edytowano przez prezesedi
(edytowany)

Mozna dac lcd.clear() no ale wlasnie chcialem tego uniknac zebys sobie mogl w przyszlosci usuwac to co Cie interesuje a nie zawsze caly lcd...u mnie taka roznica ze korzystam z i2c no i takie wyswietlanie spacji dziala elegancko...moze tu jest inaczej cos🤔

Edytowano przez farmaceuta
(edytowany)

Wyświetl w tym miejscu same spacje żeby skasować poprzednią zawartość, a potem dopiero właściwy napis.

Ew. użyj sprintf @farmaceuta chętnie wyjaśni.

@farmaceuta nie mieszaj - to 1H czy korzystasz z i2c, spi czy bawisz się w bit banging

Edytowano przez ethanak
  • Lubię! 1
Przed chwilą, ethanak napisał:

Wyświetl w tym miejscu same spacje żeby skasować poprzednią zawartość, a potem dopiero właściwy napis.

no właśnie wyświetlałem same spacje (wkleiłem post wyżej kody) - i są błędy o których napisałem

Przed chwilą, ethanak napisał:

Wyświetl w tym miejscu same spacje żeby skasować poprzednią zawartość, a potem dopiero właściwy napis. 

No i tak wlasnie jest...wyswietla spacje w calym wierszu i pozniej napis, ktory sie nie wyswietla..🤔 

3 minuty temu, ethanak napisał:

Ew. użyj sprintf @farmaceuta chętnie wyjaśni.

Yhyy...bardzo chetnie wyjasni, ale to dopiero jak sie tego sam nauczy..😢(lenistwo nie pozwolilo mi tego ogarnac)

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...