Skocz do zawartości

Kurs Arduino - #7 - Wyświetlacz tekstowy, LCD 2x16


Komentator

Pomocna odpowiedź

Pytanie laika: Co to są te czarne koła po drugiej stronie układu scalonego https://botland.com.pl/pl/wyswietlacze-alfanumeryczne-i-graficzne/223-wyswietlacz-lcd-2x16-znakow-zielony.html? Oznaczone jako U1 i U2? Przeszukałem dokumentację i schemat, i nic nie potrafię z tego wywnioskować, a w sumie tylko w jednym miejscu w dokumentacji coś było o tym wspomniane. Czy to jest ten "Liquid-crystal" z akronimu LCD? Z góry dziękuję za pomoc 🙂

Link do komentarza
Share on other sites

@Synergia są tu układy scalone 🙂 Przy masowej skali producent nie potrzebuje pięknych i dużych obudów. W tym przypadku stosuje się tzw. chip-on-board (COB). W uproszczeniu można powiedzieć, że jest to goły układ scalony (bez obudowy i wyprowadzeń), który jest przyklejany do płytki, a wszystkie połączenia są wykonywane za pomocą cienkich drucików. Na koniec całość jest zalewana substancją, która zabezpiecza układ. Tak to wygląda:

K4QUM.jpgIXcXD.gif

Źródło zdjęć: https://electronics.stackexchange.com/questions/9137/what-kind-of-components-are-black-blobs-on-a-pcb

  • Pomogłeś! 1
Link do komentarza
Share on other sites

@Treker Dzięki bardzo za odpowiedź! Nie pomyślałbym o czymś takim 🙂 w takim razie miałbym jeszcze pytanie o wyświetlacz LCD z tego odcinka kursu. Gdzie jest ten ciekły kryształ? Czy nie widzę go, a patrzę na niego, czy też jest to jakaś inna technologia? Wiem, że nie wiesz na co patrzę, ale wyciągnąłem sobie sam ekran (w sensie szkło) z PCB i z paska elastomerycznego (tak to się nazywa?) i oglądam oglądam i nie widzę tego ciekłego kryształu... Jest on jakoś "wlany" w szkło? Czy jak?

EDIT:

Przeczytałem sobie artykuł na wiki, https://pl.wikipedia.org/wiki/Wyświetlacz_ciekłokrystaliczny

Cytat

 

Wszystkie rodzaje wyświetlaczy ciekłokrystalicznych składają się z czterech podstawowych elementów:

  1. komórek, w których zatopiona jest niewielka ilość ciekłego kryształu
  2. elektrod będących źródłem pola elektrycznego działającego bezpośrednio na ciekły kryształ
  3. dwóch cienkich folii, z których jedna pełni rolę polaryzatora a druga analizatora
  4. źródła światła.

 

Zakładam, że to szkło, o którym mówię (czyli to szkło do którego po wyciągnięciu z PCB przylegają paski elastomeryczne), to jest ta komórka z punktu pierwszego, czyli w tym szkle jest niewielka ilość ciekłego kryształu. Folie w tym konkretnym przypadku są przyklejone do szkła, które zostało w PCB, nie bardzo umiem zlokalizować elektrody i źródło światła. Chyba, że elektrody to są te "prostokąciki" które przylegają do pasków elastomerycznych i tak się ten prąd rozchodzi? A źródło światła?

Edytowano przez Synergia
Link do komentarza
Share on other sites

@Synergia źródłem światła jest ten element:

9d423-2020-11-27_04-59-00-9784.png

To coś przebiega pod całym ekranem, i wychodzi po jednej stronie. Całość powinna też świecić, gdy ściągniesz szkło z wyświetlacza i włączysz zasilanie. Będziesz wtedy widział tylko podświetlenie.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Cześć,

 

Przesyłam zadanko 7.4

#include <LiquidCrystal.h> //Dołączenie bilbioteki
LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //Informacja o podłączeniu nowego wyświetlacza

#define przyciskSTART 8

boolean odliczanieSTART = false;
double czas = 0;
void setup() {

//WYSWIETLACZ LED
  lcd.begin(16, 2); //Deklaracja typu
  lcd.setCursor(0, 0); //Ustawienie kursora
  lcd.print("Wciśnij START!"); //Wyświetlenie tekstu

//PRZYCISK START/STOP
  pinMode(przyciskSTART, INPUT_PULLUP); 
}

void loop() {

//URUCHOMIENIE STOPERA

  if (digitalRead(przyciskSTART) == LOW && odliczanieSTART == false); { //Jeśli przycisk wciśniety {
    odliczanieSTART = true; //Włączono odliczanie
    czas = 0; //Wyzerowanie licznika
  }

  if (odliczanieSTART == true) { //Stoper właczony
    lcd.setCursor(0,0); //Ustawiamy kursor na poczatku ekranu
    lcd.print("Wciśnij STOP!"); //Komunikat 
    lcd.setCursor(0,1); //Ustawiamy kursor w drugiej linijce
    lcd.print(czas); //LCD wyswietla czas
    lcd.print("sec"); //Wyświetlenie jednostki
    czas = czas + 10./1000.; 
    delay(10); //Opoznienie o 0,01 sec
  }

//ZATRZYMANIE STOPERA

  if (digitalRead(przyciskSTART) ==LOW && odliczanieSTART == true); { //Jeśli STOPER odlicza czas
    odliczanieSTART = false;   
    lcd.setCursor(0,0); //Ustawiamy kursor na poczatku ekranu
    lcd.print("Koniec!"); //Komunikat 
    lcd.setCursor(0,1); //Ustawiamy kursor w drugiej linijce
    lcd.print(czas); //LCD wyswietla czas
    lcd.print("sec"); //Wyświetlenie jednostki
  }
}

 

Link do komentarza
Share on other sites

Cześć niestety z nieznanego mi powodu nie działa mi wyświetlacz.

Póki nie zrobię printa mam czarne kwadraciki, jak robie cursor to jest podkreślenie, jak robie blink to jest blink, ale jak próbóje zrobić print na stringu to zwykle są kwadraty, raz udało mi się jakieś japońskie znaczki. i ogólnie to dwa razy próboowałem po podłączać jak na rysunku więc nie wiem co to może być

IMG_20201129_234333.thumb.jpg.b2ac6f94d470d28017116df30e5d7b32.jpg

screen.zip

Link do komentarza
Share on other sites

@shinzu witam na forum 🙂 Możliwe, że coś nie styka na płytce. To co najlepiej w tej sytuacji zrobić to zwyczajnie spróbuj rozmontować wszystko i złóż całość jeszcze raz np. po drugiej stronie płytki stykowej. Efekty, które opisujesz pasują do przypadłości, w której coś nie styka na liniach danych.

Link do komentarza
Share on other sites

@shinzu oj, to nie dobrze - przepraszam za zamieszanie. Zgłoś proszę sprawę do Botlandu - sprawdzą temat i na pewno wymienią przewody 🙂 Mam nadzieję, że dalej obejdzie się już bez takich niespodzianek.

Link do komentarza
Share on other sites

Cześć 🙂

 

7.2:

Tekst staje ciężki do odczytania. Przy częstszym odświeżaniu rzędu delay(1) zaczyna wręcz gasnąć.

7.3

W zasadzie to samo co przy 7.2 albo nie do końca rozumiem zadanie.

7.4 - tutaj mam wątpliwości:

#include <LiquidCrystal.h> // dołączenie biblioteki
LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //zdefiniowanie wyswietlacza

bool counting = false; // bool "czy jest w trakcie liczenia?"

int timeA = 0 ; // czas


void setup() {
  lcd.begin(16, 2); // tryb wyświetlacza
  lcd.setCursor(0, 0); // tekst startowy
  lcd.print("Rozpocznij");


  pinMode(10, INPUT_PULLUP); // zdefiniowanie przycisków
  pinMode(12, INPUT_PULLUP);

}


void loop() {
  while (counting == false) { // kiedy nie liczy
    if (digitalRead(10) == LOW) { //jak przycisk zostanie naciśnięty
      lcd.clear(); // wyczyść ekran
      lcd.setCursor(0, 0); // wyświetl tekst o trwającym liczeniu
      lcd.print("Liczenie"); 
      counting = true; // zmiana bool na "w trakcie liczenia"
      delay(1); //opóźnienie 1 ms
    }

  }
  while (counting == true) { // kiedy trwa liczenie
    if (digitalRead(12) == LOW) { //jak drugi przycisk zostanie naciśniety
      counting = false; // bool "nie liczy"
      timeA = timeA / 1000; // zmiana jednostki na sekundy
      lcd.clear(); // wyczyszczenie lcd
      lcd.setCursor(0, 0); // podanie wyniku
      lcd.print("Koniec");
      lcd.setCursor(0, 1);
      lcd.print(timeA);
      delay(150);
    } else {
      timeA = timeA + 1; //zwiększenie czasu o 1ms
      delay(1);
    }

  }
}

Czy użyta metoda - delay(1) -  jako podstawowy pomiar czasu daje precyzyjne pomiary? Czy czas będzie minimalnie wytracany na "czytanie pętli" ? (nie wiem jak to określić).

 

I jeszcze pytania dotyczące podświetlania ekranu.

1. Rozumiem, że mógłbym równie dobrze sterować jasnością podświetlenia za pomocą potencjometru? 🙂

2. Dlaczego należy uważać na zbyt duży pobór prądu w przypadku podpięcia zasilania bezpośrednio do arduino i użyć rezystora, skoro w podstawowym ustawieniu mam podłączony wyświetlacz do plusa na płytce bez żadnego opornika?

 

 

Link do komentarza
Share on other sites

@Opinel widzę, że sporo masz przerobione zadań, tak trzymaj! 🙂 

11 godzin temu, Opinel napisał:

7.2:

Zgadza się.

11 godzin temu, Opinel napisał:

7.3

Tak zadanie jest podobne. W 7.2 mogłeś np odświeżać statyczny tekst "Hello world!". Tutaj są dane na podstawie zmiennej. Dało się upolować 2 ptaki jednym kamieniem, albo upiec 2 pieczenie na jednym ogniu 🙂 

7.4

Tu uwaga jedna jest taka ze delay() nie jest dobry. Pomijając dokładność opóźnienia, to dodatkowo pomijasz czas wykonywania kodu, który coś tam zajmuje. Po 100 obiegach nagromadzi się tego czasu sporo. Na razie jest to prosty przykład więc może być, ale jeżeli chcesz iść krok dalej to poczytaj o maszynie stanów i funkcji millis w 2 części kursu.

11 godzin temu, Opinel napisał:

Rozumiem, że mógłbym równie dobrze sterować jasnością podświetlenia za pomocą potencjometru?

Pewnie tak, trzeba tylko sprawdzić jaki pobiera prąd.

11 godzin temu, Opinel napisał:

Dlaczego należy uważać na zbyt duży pobór prądu w przypadku podpięcia zasilania bezpośrednio do arduino i użyć rezystora

Pewnie chodzi o pobór prądu z pinow cyfrowych Arduino, tam masz limit max 40 mA ale rekomendowane 20 mA. Możliwe że LCD nie pobiera więcej - tu byłaby odpowiedź na poprzednie pytanie - tak. Chyba że mowa o wyprowadzeniach zasilających: 5 V, 3,3 V.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

13 godzin temu, Gieneq napisał:

Pewnie chodzi o pobór prądu z pinow cyfrowych Arduino, tam masz limit max 40 mA ale rekomendowane 20 mA. Możliwe że LCD nie pobiera więcej - tu byłaby odpowiedź na poprzednie pytanie - tak. Chyba że mowa o wyprowadzeniach zasilających: 5 V, 3,3 V.

Tak. Teraz już wiem o co chodzi. Wcześniej mylnie myślałem, że limit 20mA dotyczy wszystkich wyprowadzeń, w tym 5v. Teraz zagłębiłem się w ten temat bardziej i z tego co czytam 20mA to bezpieczny limit dla pinów cyfrowych, a dla 5V ograniczeniem jest 900mA, stąd też ten brak rezystora. Dzięki 🙂

Link do komentarza
Share on other sites

@Opinel to się jednak dogadaliśmy 🙂 

10 godzin temu, Opinel napisał:

a dla 5V ograniczeniem jest 900mA

To zależy. Jak sobie popatrzysz na schemat to są tam 3 miejsca z sygnałami USBVCC, VIN i 5V. Na wejściu jest bezpiecznik polimerowy 500 mA ograniczający zasilanie z USB, jeżeli jednak masz zasilacz podłączony do złącza koncentrycznego, to stabilizator ma w nominalny 1A wydajności prądowej więc może to być to o czym piszesz.

Edytowano przez Gieneq
Link do komentarza
Share on other sites

Witam. 

Chciałbym skonsultować mój kod do zadania 7.4 Wszelkiego rodzaje uwagi mile widziane:

#include <LiquidCrystal.h>
LiquidCrystal monitor(2,3,4,5,6,7);

#define button1 10
#define button2 11

int czas=0;
int czasKoncowy=0;

void setup() {
monitor.begin(16,2);
monitor.setCursor(0,0);
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);

}

void loop() {

  while(digitalRead(button1)==LOW){
   czas=1;
   monitor.clear();
   }

  while(digitalRead(button2)==LOW){
   czas=0;
   }

  if(czas!=0){
    monitor.setCursor(0,0);
    monitor.print(czas);
    delay(1000);
    czasKoncowy=czas;
    czas++;  
   }
   
  else if(czas==0 && czasKoncowy!=0){
    monitor.setCursor(0,0);
    monitor.print("KONIEC");
    monitor.setCursor(0,1);
    monitor.print("Minelo: ");
    monitor.setCursor(7,1);
    monitor.print(czasKoncowy);
    monitor.setCursor(10,1);
    monitor.print("sek.");
    delay(25);
 }
  }

 

Edytowano przez gryzmol88
Link do komentarza
Share on other sites

@gryzmol88 wygląda, że jest dobrze. Na przyszłość warto byłoby tylko poprawić trochę formatowanie kodu (w kilku miejscach uciekły Ci jakieś wcięcia) Do tego jakiś komentarz w kodzie też byłby mile widziany, bo za jakiś czas zapomnisz co miał robić ten kod 😉

  • Lubię! 1
Link do komentarza
Share on other sites

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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.