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



Teraz jest 23 lis 2024, o 08:36


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 24 wrz 2015, o 09:02 
Offline
Użytkownik

Dołączył(a): 05 kwi 2014
Posty: 339
Pomógł: 10

Stacja pogodowa, na początku miał być tylko zegarek, projekt cały czas się rozwija.
Nie dokończone jeszcze rysowanie wykresu, menu już jest, brak grafik do pogody, ale się pojawia.

Układ złożony z modułu mmega128, wyświetlacz graficzny T6963, pamięć 24c256 po i2c (do zbierania logów), w module w pamięci flash załadowane grafiki.
Obsługa z pilota rc5.
Czujniki:
DTH22, BMP085, czujnik oświetlenia.
W module mmega02 jest zegar na ds1305, pamiec flash at45 (wszystko po SPI).




4 tryby wyświetlania wyników, pamięć wilgotności, 2x temperatura, ciśnienie.

Pisane w c, program bez grafik zajmuje ok 28% zajętości, wiec jest jeszcze dużo miejsca na dopisanie innych funkcji.

Program: 34466 bytes (26.3% Full)
(.text + .data + .bootloader)

Data: 1385 bytes (33.8% Full)
(.data + .bss + .noinit)

W planie podłączenie modułu wifi i przesyłanie na serwer, dopisanie budzika i może coś więcej.

Grafiki ładowane są oddzielnymi programami, które nic nie robią tylko kopiują zawartość pamięci procka na flash.
Ze względu na duża ilość grafik, każda paczkę należny wgrywać osobno (paczka przyjmuje max kilka dużych grafik lub więcej mniejszych).
Nie zrobiłem leadera grafik, nie mam na to pomysłu, może kopiować z karty sd?
Grafika musi leżeć na flash, ze względu na szybkość odczytu.



Video z działania układu




Tym Razem Poprawiłem ... SunRiver



Ostatnio edytowano 24 wrz 2015, o 14:37 przez wchpikus, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 wrz 2015, o 10:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lut 2014
Posty: 569
Lokalizacja: Żagań
Pomógł: 54

Projekt zapowiada się ciekawie.
Ciekawy jest sposób konfiguracji z podkreśleniami co aktualnie jest zmieniane.
I ten scrolling :D

Planujesz dołożenie modułu prognozującego pogodę?

_________________
http://leszczamiga.ppa.pl/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 wrz 2015, o 13:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2014
Posty: 1089
Pomógł: 34

Bardzo fajny projekt!


Sent from my iPhone using Tapatalk

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 wrz 2015, o 14:10 
Offline
Użytkownik

Dołączył(a): 05 kwi 2014
Posty: 339
Pomógł: 10

LA72 napisał(a):
Projekt zapowiada się ciekawie.
Ciekawy jest sposób konfiguracji z podkreśleniami co aktualnie jest zmieniane.
I ten scrolling :D

Planujesz dołożenie modułu prognozującego pogodę?


Pogoda będzie jeszcze wyświetlana wg wskazań ciśnienia, wilgotności temperatury, graficzne rysunki, możne animacja, deszcz, mroz...
Animacja może przejdzie, spi jest na tyle szybki ze uda się załadować i wyświetlić..
Prognoza pogody...jak zbiorę dane i je obrobię, może jest jakaś zależność, ale prognoza to temat na doktorat, raczej trzeba obserwować wiatry elminio:), lokalnie to ciężko..

Podoba się scrolling?
Walka z nim była niezła:)
Niestety nie da się łatwo zrobić wertykalnie, ale może...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 wrz 2015, o 20:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2014
Posty: 1089
Pomógł: 34

Cytuj:
Podoba się scrolling?
Walka z nim była niezła:)
Niestety nie da się łatwo zrobić wertykalnie, ale może...


to napisz moze cos wiecej o tym scrollingu bo TAK wyglada naprawde fajnie :) robiles podwojne buforowanie ?

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 wrz 2015, o 22:10 
Offline
Użytkownik

Dołączył(a): 05 kwi 2014
Posty: 339
Pomógł: 10

RafPe napisał(a):
Cytuj:
Podoba się scrolling?
Walka z nim była niezła:)
Niestety nie da się łatwo zrobić wertykalnie, ale może...


to napisz moze cos wiecej o tym scrollingu bo TAK wyglada naprawde fajnie :) robiles podwojne buforowanie ?


Po pierwsze, problem był z duchami, pozostawionymi przez zapalone pixele..
Nie dało rady narysować coś, przesunąć w dol z myślą, ze zniknie poprzedni rysunek..
Wyświetlacz trzyma dane w pamięci.
Reset (czyszczenie lcd) odpada, migotanie będzie widoczne.

Próbowałem rysować czysta linie zaraz po obrazku, niestety czas "czyszczenia" był za duży, zresztą trzeba było trzymać pozycje gdzie ma kasować...(gdzie indziej zaczyna się np kropka rozdzielająca czas, a gdzie indziej inna grafika.
Za dużo kodu i za mało czasu na czyszczenie.

Prostym rozwiązaniem okazało się pozostawienie od góry wolnej linii (czystej) na szerokość pixela już na etapie projektowania grafik.

Samo wyświetlanie jest proste, wystarczy dodać jeden parametr w funkcji (pozycja x lub y) i nim operować.

Ale doszedłem to tego po godzinach walki z kasowaniem pozostawionych pixeli:)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 wrz 2015, o 06:29 
Offline
Nowy

Dołączył(a): 01 sie 2015
Posty: 2
Pomógł: 0

Witam wszystkich !
Może zechciałbyś podzielić się informacjami :
1. Korzystając z jakiego programu tworzyłeś fonty grafiki ?
2. Może coś więcej na temat projektu - na przykład nie wszyscy mogą być przekonani, że trzeba było odświeżać cały obszar wyświetlacza itd.?
Mimo wszystko zachęcam do podzielenia się większą ilością szczegółów, może nie tylko ja jestem taki ciekawski?
Co szkodzi powiedzieć w kilkunastu zdaniach co jest w przerwaniach, co w programie głównym, zdecydowanie więcej na temat wyświetlania ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 wrz 2015, o 20:54 
Offline
Użytkownik

Dołączył(a): 05 kwi 2014
Posty: 339
Pomógł: 10

witam
Program do konwersji grafik LCDAssistant by Radzio.

W przerwaniu pracuje tylko timer, oraz obsługa pilota.
Timer0 jako licznik, timer1 - pilot

W main, sprawdzany jest tylko status klawiszy (u mnie to sa klawisze pilota i przypisane im akcji), stan licznika w przerwaniu, oraz odczyt czasu z ds-a.
Reszta dzieje się w podprogramach, wywoływanych pilotem, oraz sprawdzając stan bitów poszczególnych zmiennych (flag).

Oczywiście w main jest tez ustawienie atmega128.inicjalizacja i2c, spi, wyświetlacza, uart, ds-ow.

Po włączeniu odczytywane sa tez wartości z pamięci eeprom,takie jak podświetlenie, ustawianie zapisu logerra itp.

Co do odświeżania wyświetlacza, można jak napisałem, nadpisać zawartość zerami miejsca, które chcemy wyczyścić, tylko ze to dużo dodatkowego kodu, trzeba pamiętać pozycje itp..ale da się.

Wyświetlacz działa na zasadzie zapisu 8 bitów na raz, czyli wartość 0xff odpowiada zapalonym 8 pixelom w jednej linii.
Jak wyślesz 0xAA, otrzymasz zapalony i zgaszony pixel na przemian.
Grafiki trzymane sa w postaci tablic, przekonwertowanych z bitmapy.
Rysujesz grafikę po 8 bitow, niestety nie da się narysować tylko 5, 6, 3,zawsze 8, wiec albo grafika ma dokładnie wielokrotność 8 lub wypełniasz resztę pozostałą 0-mi.
Starałem się otrzymywać wielokrotność.

Fonty są tez w formie grafik (tablic) we flash, co daje mi możliwość podmiany.
Wyświetlam je poprzez case, podając koordynaty, flagi ustawiają, jakie to maja być cyfry (małe, duże).
Resztę robi funkcja wyświetlania. (podaje ile bajtów ma odczytać z flash, skąd (która strona pamięci), jaka jest szerokość grafiki) i rysujemy.

Jak macie jakieś pytania, odpowiem, niestety soft jest duży i umieszczenie go tutaj raczej będzie kłopotliwe:)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2015, o 12:51 
Offline
Użytkownik

Dołączył(a): 05 kwi 2014
Posty: 339
Pomógł: 10

Witam
Projekt się rozwija, dodano
- menu wyboru wyświetlania wartości min i max dla temperatur
- menu wyboru wyświetlania wykresów (ciśnienie, wilgotność, temperatury)
- menu wyboru wyświetlania daty i alarmu (jeszcze nie ma obsługi)
- rysowanie wykresów (trzeba tylko skale dobrać)




Miałem tez problem z kasowaniem pamięci flash w module Mmega128, rozwiązaniem okazało się podłączenie linii przełączającej moduł w tryb programowania, bezpośrednio z diody LED programatora ISP.
Programator w momencie wgrywania wsadu ustawia tam stan niski, który był mi potrzebny do przełączenia MMega128.
Teraz nie muszę już "banglac" przełącznikiem, co skutkowało tym, ze czasami zapisywała się zewnętrzna pamięć flash w tym module, nie wiadomo czemu...
W pamięci mam same grafiki, a ładowanie ich jest trochę problematyczne.
Obecnie mam przygotowanych kilka "plików wsadowych", gdzie każdy ma jakaś cześć grafiki i jest ona kopiowana z mikro kontrolera do flash.
Może później będzie możliwość załadowania z pliku po RS lub z karty...jeszcze tego nie rozwiązałem.

Zapomniałem dodać, ze projekt powstał od zerowej wiedzy na temat C, z przesiadki z Bascom, wiec wszystko zrobione od zera, wraz z nauka programowania w C.
Wiem ze jest dużo "baboli", staram się na bieżąco je poprawiać, zmieniać i pisać inaczej, ale zabawa jest przednia.
Szczególnie jak wraca się do kodu z przed kilku miesięcy i po nabytej wiedzy poprawia "smarki":)
Przez taki projekt nauczyłem się obsługi SPI, i2C, pamięci, zegara RTC, obsługi LCD, pilota i klawiszy, tworzenia menu i wiele innych:)



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: 9 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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