Elektroda.pl
Elektroda.pl
X
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Wyświetlacz kursu na WeMos WiFi D1 R2 ESP8266 i LCD 2004 4*20 I2C Yellow HD44780

01 Lis 2019 09:09 369 16
  • Poziom 3  
    Witam, chciałbym zrobić wyświetlacz kursu kryptowalut oparty o WeMos D1 R2 ESP8266 i LCD 2004 4*20 I2C. Jestem początkujący co do arduino i potrzebuję pomocy by dostosować kod z oled na lcd. Wyświetlacz miałby wyświetlać 2 waluty BTC/PLN(pierwszy wiersz) i BCH /PLN(drugi wiersz). Api miał by pobierać z bitbay.net Tutaj kod:
    Kod: c
    Zaloguj się, aby zobaczyć kod
  • PCBway
  • Poziom 35  
    Jeżeli planujesz samodzielnie spróbować zmodyfikować ten kod do współpracy z LCD2004, to proponuję, abyś zerknął najpierw pod adres:
    http://robojax.com/learn/arduino/?vid=robojax-LCD2004-I2C
  • PCBway
  • Poziom 3  
    Znalazłem inny kod do właśnie LCD i on działa, tylko teraz mam problem z ustawieniem API bitbay.net
    Kod pierwotny:
    Kod: c
    Zaloguj się, aby zobaczyć kod



    Kod po mojej zmianie wyświetla "BTC/PLN: 1.0".Proszę nie wyszydzać, nie znam języka programowania. Robię metodą prób i błędów stosując i porównując kody.

    Kod: c
    Zaloguj się, aby zobaczyć kod
  • Poziom 35  
    Poniższą linię powinieneś zmodyfikować:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    zgodnie z informacjami zawartymi na tej stronie:
    https://bitbay.net/pl/api-publiczne
  • Poziom 3  
    nowy.zielony.pczątku napisał:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    nowy.zielony.pczątku napisał:
      
    Kod: c
    Zaloguj się, aby zobaczyć kod

    nowy.zielony.pczątku napisał:
     
    Kod: c
    Zaloguj się, aby zobaczyć kod



    I zmieniłem na tak jak wyżej. Wyświetla "BTC/PLN: 0.00"
  • Poziom 35  
    nowy.zielony.pczątku napisał:
    I zmieniłem na tak jak wyżej.

    Czyli, jak konkretnie ten 'url" wygląda teraz w Twoim kodzie? W poście powyżej jest bez zmian, o których napisałem w poście #4.
  • Poziom 3  
    Pierwotnie było
    nowy.zielony.pczątku napisał:
    const char* host = "api.coindesk.com";
    a jest
    nowy.zielony.pczątku napisał:
    const char* host = "bitbay.net";
    Było
    nowy.zielony.pczątku napisał:
      String url = "/v1/bpi/currentprice.json";
    a jest
    nowy.zielony.pczątku napisał:
      String url = "/API/Public/BTCPLN/ticker.json";

    Pełny adres API to: bitbay.net/API/Public/BTCPLN/ticker.json
  • Pomocny post
    Poziom 35  
    Mam dobrą i złą wiadomość ;) Dobra to jest taka, że udało mi się przerobić kod z postu #3 do współpracy z bitbay.net. Zła jest taka, że to dość dużo zmian. W kodzie zakomentowałem odwołania do LCD - wyniki wyświetlają się w monitorze portu szeregowego Arduino IDE. Zachowałem oryginalne włoskie komentarze :)
    Korzystałem z informacji zawartych w tym linku:
    https://docs.bitbay.net/reference#wprowadzenie-1
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Wynik działania programu:
    Kod: bash
    Zaloguj się, aby zobaczyć kod
  • Poziom 3  
    @khoam twój kod zadziałał :D Tyle że pojawił się kolejny problem. Arduino się restartuję co chwilę po pokazaniu IP lub po pokazaniu kursu, to jest pierwszy problem, czy to świadczy o uszkodzeniu arduino? Drugi to taki że po połączeniu się z lokalnym internetem zawiesza się na pokazaniu adresu IP i nic dalej nie robi (problem nie występuję po połączeniu się do internetu z telefonu).
    Kod: c
    Zaloguj się, aby zobaczyć kod
  • Poziom 35  
    nowy.zielony.pczątku napisał:
    Arduino się restartuję co chwilę po pokazaniu IP lub po pokazaniu kursu, to jest pierwszy problem, czy to świadczy o uszkodzeniu arduino?

    Testowałem program kilkadziesiąt minut, ale bez wyświetlacza LCD. Żadnych restartów nie było. Spróbuj przetestować moja wersję programu z postu #8 i napisz, czy też są restarty. Jeżeli ich nie będzie, to problem może tkwić, gdzieś w obsłudze wyświetlacza.

    nowy.zielony.pczątku napisał:
    Drugi to taki że po połączeniu się z lokalnym internetem zawiesza się na pokazaniu adresu IP i nic dalej nie robi

    Czy wtedy też wyświetla się komunikat "Brak połączenia z bitbay.net" w monitorze portu szeregowego w Arduino IDE?

    Dodano po 1 [minuty]:

    Czy moduł wyświetlacza LCD zasilasz z +5V? Pewnie tak, to czy nie zapomniałeś o konwerterach poziomów na szynie I2C pomiędzy Wemos a wyświetlaczem?
  • Poziom 3  
    khoam napisał:
    Testowałem program kilkadziesiąt minut, ale bez wyświetlacza LCD. Żadnych restartów nie było. Spróbuj przetestować moja wersję programu z postu #8 i napisz, czy też są restarty. Jeżeli ich nie będzie, to problem może tkwić, gdzieś w obsłudze wyświetlacza.

    Wyświetla takie krzaki:
    [code]
    Kod: bash
    Zaloguj się, aby zobaczyć kod

    czy ja coś źle robię? Bo chodzi żeby zobaczyć rejestr o tutaj gdy arduino się włącza i po odczekaniu chwili, tak?
    Wyświetlacz kursu na WeMos WiFi D1 R2 ESP8266 i LCD 2004 4*20 I2C Yellow HD44780

    khoam napisał:
    Czy moduł wyświetlacza LCD zasilasz z +5V?

    No tak podłączyłem do +5V
    khoam napisał:
    Pewnie tak, to czy nie zapomniałeś o konwerterach poziomów na szynie I2C pomiędzy Wemos a wyświetlaczem?

    Co to?
    Dodam że inny kod np. na wyświetlanie "hello world", działa poprawnie. Nie restartuje się.
  • Poziom 35  
    nowy.zielony.pczątku napisał:
    Wyświetla takie krzaki:

    Prędkość monitora portu szeregowego w Arduino IDE powinna być zgodna z tym, co jest w Serial.begin(). W programie z postu #9 jest to 115 200.

    nowy.zielony.pczątku napisał:
    Co to?

    Wiem, że w popularnych "fritzingach" w necie ignorują takie konwertery. Jak chcesz, to nie używaj.
    Poczytaj sobie tutaj:
    https://hackaday.io/project/8856-incubator-co.../log/30825-level-shifting-and-sdascl-pull-ups

    Jeszcze dzisiaj postaram się przetestować ten kod z wyświetlaczem LCD.
  • Poziom 3  
    Ok, więc twój @khoam kod z postu #8 w porcie szeregowym pokazuje poprawnie kurs i się łączy z internetem z telefonu. Po połączeniu z internetem domowym dzieje się tak jak myślałeś czyli staje na pokazaniu IP i co chwilę wypisuje "Brak połączenia z bitbay.net". Pewnie coś blokuje w sieci (sieć w trybie DHCP jeśli to ma znaczenie).

    Po wgraniu kodu z postu #9 restartuje się arduino i w porcie szeregowym wyświetla na raz to:
    [code]
    Kod: bash
    Zaloguj się, aby zobaczyć kod
  • Poziom 35  
    Jaką masz wersję ESP8266 w Boards Manager? Testowałem z wersją 2.5.2
    Jaką masz wersję biblioteki ArduinoJson w Library Manager. Testowałem z wersją 5.13.5.
  • Poziom 3  
    Wersja ESP8266 to: 2.6.0
    Wersja biblioteki ArduinoJson to 6.13.0
  • Poziom 35  
    nowy.zielony.pczątku napisał:
    Wersja ESP8266 to: 2.6.0

    Po zainstalowaniu tej wersji faktycznie obserwuję restarty. Wykonaj proszę downgrade do wersji 2.5.2 i testuj.

    Dodano po 2 [godziny] 37 [minuty]:

    Zakończyłem testy. Wersja kodu z postu #9 działa bez problemu z wyświetlaczem LCD. Warunkiem jest downgrade ESP8266 w Arduino IDE do 2.5.2. Od teraz ograniczam (mocno) swoją aktywność na Forum, więc mam nadzieję, że ktoś Ci pomoże, gdyby pojawiły się z Twojej strony pytania.
  • Poziom 3  
    @khoam Ogromne dzięki za pomoc. Wyświetlanie kursu działa :D Ostatnią przeszkodą jest sieć domowa z którą nie chcę współpracować. Dodam że mam antywirus eset który coś tam niby blokuje ale po odblokowaniu dalej to samo.
    Wyświetlacz kursu na WeMos WiFi D1 R2 ESP8266 i LCD 2004 4*20 I2C Yellow HD44780
    Wyświetlacz kursu na WeMos WiFi D1 R2 ESP8266 i LCD 2004 4*20 I2C Yellow HD44780