Skocz do zawartości

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


Pomocna odpowiedź

U mnie działa ładnie 

Ale mam takie jedno pytanko @Treker Pokazał by pan jak zrobić na takim wyświetlaczu licznik do gier o samochodach ???

IMG_20240831_174507.jpg

  • Lubię! 1
  • 2 tygodnie później...

@Jonyy witam na forum, cieszę się, że układ działa u Ciebie poprawnie 🙂 Co dokładnie chciałbyś pokazywać na takim wyświetlaczu, aby uznać go za licznik do gier wyścigowych? Załóż osobny temat i opisz swój problem to łatwiej będzie pomóc.

  • 1 miesiąc później...

Cześć. 

Właśnie realizuje zadanie z tej części kursu i wszystko podłączyłem dokładnie tak samo ale kiedy uruchamiam wyświetlają się same kwadraciki. Ktoś wie co może być przyczyną?

DSC_0001.thumb.JPG.2f5cdca76d8a6cde47997f95ecb2fb8a.JPG

 

  • 2 tygodnie później...
(edytowany)

Sprawdzałem kilka razy połączenia i kręciłem potencjometrem od min do maxa. Przesyłam jeszcze raz lepszej jakości zdjęcia

DSC_0004.thumb.JPG.4b0f8eafc70ff886e891ff69145ec290.JPGDSC_0003.thumb.JPG.85e56e5fef92f131122aba0231c7e757.JPGDSC_0002.thumb.JPG.b9a535f60d7c8f297aacc157751c8f1a.JPG

 

Edytowano przez T101
1 godzinę temu, T101 napisał:

Przesyłam jeszcze raz lepszej jakości zdjęcia

Prześlij takie, na których będzie widać dokładnie jak połączyłeś elementy. Jeśli zdjęcia nie wychodzą, to narysuj, nawet odręcznie w uproszczeniu.

  • Lubię! 1
  • 2 tygodnie później...
7 godzin temu, Santiago napisał:

@T101 i co było przyczyną ? Kabelek ?

Nie jestem pewien ale wydaje mi się, że potencjometr albo nie był dobrze wpięty albo miał za słaby kontrast.

 

7.2

Ja widzę jakby cyfry z powodu szybkiego odświeżania "pływały" nie wiem jak to nazwać fachowo, fluktuacja obrazu?

7.4


#include <LiquidCrystal.h> //Dołączenie bilbioteki
LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //Informacja o podłączeniu nowego wyświetlacza
 
void setup() {
  pinMode(9, INPUT_PULLUP);
  pinMode(10, INPUT_PULLUP);
  lcd.begin(16, 2); //Deklaracja typu
  lcd.clear();
  lcd.setCursor(0, 0); //Ustawienie kursora

 
}
 
double counter = 0;
 
void loop()
{
 
  
  if(digitalRead(9) == LOW) {

    while(digitalRead(10) != LOW) {
       lcd.setCursor(0, 1);
       lcd.print(counter);
       delay(1000);
       counter = counter + 1;

       if(digitalRead(10) == LOW) {
        lcd.clear();
        lcd.print("Koniec");
        lcd.setCursor(0, 1);
        lcd.print(counter);
        break;
       }
    }

  }
}

 

DSC_0001(2).thumb.JPG.b596afb1382a04bbeee78830354bcaf5.JPG

(edytowany)

Kolejny raz pokazujesz zdjęcia, na których nie widać co z czym jest połączone. 

Zamieszczasz kod, ale bez słowa opisu co ten kod ma wykonywać? Na pierwszy rzut oka, wykonywany jest poniższy fragment kodu gdy digitalRead(9) == LOW

 while(digitalRead(10) != LOW) {
       lcd.setCursor(0, 1);
       lcd.print(counter);
       delay(1000);
       counter = counter + 1;

Drugi kawałek kodu

       if(digitalRead(10) == LOW) {
        lcd.clear();
        lcd.print("Koniec");
        lcd.setCursor(0, 1);
        lcd.print(counter);
        break;
       }

nie ma szans być wykonany bo jest wewnątrz while, które działa gdy digitalRead(10) != LOW

 

Edytowano przez Sylba
8 godzin temu, Sylba napisał:

nie ma szans być wykonany

Ma bardzo duże szanse, bo krążąc w pętli while większość czasu program wykonuje delay(1000). Jeśli wtedy sygnał na nóżce 10 się zmieni, to ten fragment się wykona.

  • Lubię! 1
(edytowany)
9 godzin temu, jand napisał:

Ma bardzo duże szanse, bo krążąc w pętli while większość czasu program wykonuje delay(1000). Jeśli wtedy sygnał na nóżce 10 się zmieni, to ten fragment się wykona.

I chyba tak się dzieje, przynajmniej wyświetlacz to pokazuje. Tym nie mniej nie jest to raczej zamierzony wynik działania kodu.

Jednak nie do końca rozumiem, czemu tak miałoby się zdarzyć. W opisie do delay() na stronie https://docs.arduino.cc/built-in-examples/digital/BlinkWithoutDelay/ napisano:
"Czasami trzeba zrobić dwie rzeczy na raz. Na przykład możesz chcieć mrugnąć diodą LED podczas odczytywania naciśnięcia przycisku. W takim przypadku nie możesz użyć delay(), ponieważ Arduino wstrzymuje program podczas delay(). Jeśli przycisk zostanie naciśnięty, gdy Arduino jest wstrzymane i czeka na zakończenie delay(), program nie zauważy naciśnięcia przycisku."

 

Edytowano przez Sylba
  • Lubię! 2

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