Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 17 lut 2019, o 12:22


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 8 lut 2019, o 08:01 
Online
Użytkownik
Avatar użytkownika

Dołączył(a): 13 sty 2016
Posty: 437
Pomógł: 23

Hej. Jak widać po tytule wziąłem się za wyświetlacze e-papierowe. Postanowiłem to zrobić "po Mirkowemu :lol:" a więc wziąłem libsa z arduino no i powoli kleję ten kod. Ponieważ nie jestem biegły w języku c++ potrzebuję waszej rady.
A więc czy na przykład funkcja
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


jeśli jest opisana jako prywatna to powinienem ją przerobić na static?

Drugie pytanko dotyczy tego zapisu:

Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


przerobiłem na:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Gdyż WIDTH i HEIGHT są stałymi dosłownymi, czy to prawidłowy zapis?
innym razem zaś mam taki dylemat jak w komentarzu....
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Oglądałem poradniki Mirka dotyczące przeróbek bibliotek jednak one nie rozwiewają moich wątpliowści.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2019, o 10:19 
Online
Użytkownik
Avatar użytkownika

Dołączył(a): 13 sty 2016
Posty: 437
Pomógł: 23

Coś mi nie idzie z tym kodem, nie rozumiem takich zapisów jak w tej funkcji:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Przecież taki zapis zawsze da w wyniku zero (rozdzielczość 200x200)a podobnych kwiatków jest więcej, czy w arduino zmienne są zapisywane w jakiś inny sposób?

------------------------ [ Dodano po: 1 minucie ]

tak samo ten kod wygląda napisany w C dla STMa



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2019, o 12:56 
Offline
Użytkownik

Dołączył(a): 26 mar 2018
Posty: 37
Pomógł: 5

Istnieją większe wyświetlacze eink więc EPD_HEIGHT zapewne może przyjmować wartości 16 bitowe. Podana sekwencja to typowy przykład rozbicia liczby 16 bitowej na dwie 8 bitowe. Najpierw idzie młodszy bajt potem starszy. SendData, co można sobie sprawdzić w sygnaturze funkcji, zapewne przyjmuje daną 8 bitową.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2019, o 13:18 
Online
Użytkownik
Avatar użytkownika

Dołączył(a): 13 sty 2016
Posty: 437
Pomógł: 23

kalani napisał(a):
SendData, co można sobie sprawdzić w sygnaturze funkcji, zapewne przyjmuje daną 8 bitową.
tak, dane są wysyłane przez SPI.
kalani napisał(a):
Najpierw idzie młodszy bajt potem starszy.
Czy to oznacza że powinienem jakoś inaczej to wysyłać?

------------------------ [ Dodano po: 2 minutach ]

Tutaj jest funkcja clear, widać że są użyte nadmiarowe typy danych.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Walczę z tym wyświetlaczem od kilku dni i bez efektu(nawet nie daje się skasować)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2019, o 15:51 
Offline
Użytkownik

Dołączył(a): 26 mar 2018
Posty: 37
Pomógł: 5

Ja w takich przypadkach zanim zacznę jakąkolwiek grzebaninę odpalam sprzęt na Arduino. Jeśli działa, to wiadomo że hardware jest dobry więc jeśli wystąpią problemy to mam pewność, że są pochodzenia softwarowego. Przy okazji upewniam się lub rozwiązuję drobne upierdliwości sprzętowe typu właściwe podłączenia pinów, adres urządzenia I²C, polaryzacja SPI itp. Nie napisałeś czy wykonałeś ten etap, jeśli nie to proponuję od tego zacząć.
Sprawa nr 2: nie ma informacji jaki to wyświetlacz ani lib, a jeśli oczekujesz jakiejś pomocy to wypadałoby to podać. Niby można dojść, że chodzi o gdep015oc1 i lib https://github.com/soonuse/gdep015oc1_1.54inch_e-paper ale sytuacja kiedy obie strony mówią o innym sprzęcie i sofcie są wysoce irytujące a przede wszystkim kontrproduktywne.

zubik napisał(a):
jeśli (funkcja) jest opisana jako prywatna to powinienem ją przerobić na static?

To bardzo dobra praktyka, więc jak najbardziej. Generalnie: wszystkie funkcje i zmienne które mają być niewidoczne poza jednostką kompilacji należy opatrzyć tym słowem (w przypadku zmiennych oczywiście chodzi o te poza ciałem funkcji).

zubik napisał(a):
WIDTH i HEIGHT są stałymi dosłownymi, czy to prawidłowy zapis?

Wydaje się, że można tak, ale ja zrobiłbym inaczej, tj. poszedł w ślady autora liba i utworzył strukturę z tymi danymi. Dzięki temu zachowałbym możliwość uruchomienia większej ilości instancji. Pytanie po co? Może w którymś momencie zaistnieje potrzeba podłączenia dwóch lub więcej wyświetlaczy?

Cytuj:
Czy to oznacza że powinienem jakoś inaczej to wysyłać?

No nie. Generalnie to zależy od sprzętu ale w tym przypadku nie.

zubik napisał(a):
Przecież taki zapis zawsze da w wyniku zero (rozdzielczość 200x200)a podobnych kwiatków jest więcej, czy w arduino zmienne są zapisywane w jakiś inny sposób?

Cytuj:
Tutaj jest funkcja clear, widać że są użyte nadmiarowe typy danych.

Polowanie na czarownice. :roll:
Owszem możesz sobie zmienić te dane na uint8_t ale nie dość, że zamkniesz sobie drogę do wykorzystania liba z większym wyświetlaczem to jeszcze nic Ci to nie da, bo i tak trzeba przesłać do wyświetlacza dwa bajty. Tyle tylko, że jak zastosujesz zmienną 8 bitową to drugi bajt trzeba na sztywno ustawić na 0.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2019, o 16:45 
Online
Użytkownik
Avatar użytkownika

Dołączył(a): 13 sty 2016
Posty: 437
Pomógł: 23

kalani napisał(a):
Ja w takich przypadkach zanim zacznę jakąkolwiek grzebaninę odpalam sprzęt na Arduino.
Faktycznie należało tak zrobić, bo w pewnym momencie skapnąłem się że ustawiłem stan niski na linii busy a to jest wyjście wyświetlacza. Co prawda nie posiadam arduino ale skompilowany hex powinien się w sieci znaleźć.
kalani napisał(a):
Sprawa nr 2: nie ma informacji jaki to wyświetlacz ani lib, a jeśli oczekujesz jakiejś pomocy to wypadałoby to podać.

Dokładnie ten: https://www.waveshare.com/w/upload/f/fe/1.54inch-e-paper-module-b-user-manual-en.pdf ze sterownikami z https://github.com/soonuse/epd-library-stm32 Dałem sobie spokój z tymi arduinowymi bo w C więcej rozumiem.
kalani napisał(a):
a jeśli oczekujesz jakiejś pomocy to wypadałoby to podać
Jak zakładałem ten temat to chciałem tylko wiedzieć jak czytać niektóre instrukcje c++, teraz okazuje się że problem jest głębszy możliwe że usmażyłem kontroler wyświetlacza ale to się potwierdzi(lub nie) kiedy uruchomię oryginalny program.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lut 2019, o 11:56 
Online
Użytkownik
Avatar użytkownika

Dołączył(a): 13 sty 2016
Posty: 437
Pomógł: 23

Wyświetlacz jednak działa :) Łatwo nie jest ale coś powolutku zaczyna się dziać :)
Obrazek

------------------------ [ Dodano po: 11 minutach ]

Najważniejsze że wyświetlenie tego obrazka to już dzieło mojej przeróbki oryginalnej biblioteki pisanej na STM - a Można by rzec że "to mały krok dla ludzkości, ale dla karła normalny :twisted: "



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lut 2019, o 15:09 
Offline
Tech-support
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 776
Lokalizacja: Kraków
Pomógł: 63

Dobra robota :)
Ale widzę na wyświetlaczu jakieś duszki (wcześniej wyświetlała się stacja pogodowa?). Masz pomysł, jak się ich pozbyć? Czy to z moim wzrokiem coś nie tak...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lut 2019, o 15:44 
Online
Użytkownik
Avatar użytkownika

Dołączył(a): 13 sty 2016
Posty: 437
Pomógł: 23

Marhef napisał(a):
Masz pomysł, jak się ich pozbyć? Czy to z moim wzrokiem coś nie tak...
Dobrze widzisz, nie wiem czemu ale nie da się całkowicie "wyzerować obrazu" tj wyświetlacz jest biały ale jakby coś lekko przebijało Obrazek Może to widać na tym zdjęciu, w sumie nie wiem czy robię coś źle czy wyświetlacz zbyt długo leżał na magazynie. Obrazek który tam był to oryginał wgrywany przez waveshare. Teraz kombinuję nad wyświetlaniem czcionek.

------------------------ [ Dodano po: 24 minutach ]

Oryginalne biblioteki operują na dwóch buforach RAM o pojemności 5kB każdy(dla czerwonego i czarnego koloru), ja muszę to jakoś tak ogarnąć żeby AVR obliczał wszystko "w locie"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lut 2019, o 16:38 
Offline
Użytkownik

Dołączył(a): 26 mar 2018
Posty: 37
Pomógł: 5

zubik napisał(a):
nie da się całkowicie "wyzerować obrazu"

W wyświetlaczach eink to normalne. Żeby się pozbyć artefaktów trzeba, przed wyświetleniem nowego obrazu, najpierw wyświetlić poprzedni obraz w inwersji. Tak to jest robione w czytnikach ebooków. Niektóre, zdaje się, że robią to co którąś stronę, ale już np. Amazon Kindle robi to przy każdej zmianie. Generując obraz on the fly może to być problematyczne. Być może zamiast inwersji wystarczyłoby wyświetlenie strony czarnej, strony białej i dopiero po tym nowego obrazu.

------------------------ [ Dodano po: 26 minutach ]

Ups! Tu piszą, że wyświetlacza nie należy odświeżać zbyt często: https://learn.adafruit.com/adafruit-ein ... s?view=all



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lut 2019, o 17:49 
Online
Użytkownik
Avatar użytkownika

Dołączył(a): 13 sty 2016
Posty: 437
Pomógł: 23

kalani napisał(a):
Ups! Tu piszą, że wyświetlacza nie należy odświeżać zbyt często: https://learn.adafruit.com/adafruit-ein ... s?view=all
Spokojnie, w docelowym projekcie będzie to raz na 10...20 minut. Ale mam zajawkę z tymi wyświetlaczami, super to wygląda.
Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO