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



Teraz jest 12 lut 2025, o 00:52


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 37 ]  Przejdź na stronę 1, 2  Następna strona
Autor Wiadomość
PostNapisane: 13 gru 2014, o 21:57 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 108
Pomógł: 0

Witam Wszystkich bardzo serdecznie.Jest to mój pierwszy post ,a więc bardzo proszę o zrozumienie.Jestem absolutnie początkującym w tej materii i zwracam się z prośbą o pomoc szanownych kolegów.Buduję sobie zasilacz i chciałem zamontować wyświetlacz lcd 2x16 znaków.Na tym wyświetlaczu mam już wyświetlony pomiar napięcia w woltach i pomiar temperatury radiatora.Docelowo będzie jeszcze pomiar prądu.Chcę jeszcze mieć dwie linijki cegiełek,które będą się wydłużać lub skracać w miarę regulacji napięcia i poboru pradu.Znaki utworzyłem w programie „generator programu lcg”,ale za nic nie mam pojęcia,jak napisać kawałek kodu,zadeklarować,czy też zdefiniować te znaki w programie(ponawiam prośbę o wyrozumiałość mojej niewiedzy na tym etapie).Wiem,że można utworzyć 8 znaków własnych,ale ja potrzebuję ich więcej(np.12),to kolejny kłopot.Następnie,jak je prawidłowo wyświetlić.Nie proszę o napisanie gotowego kodu,bo było by to bardzo nie na miejscu,ale chociaż o jakieś kawałeczki,nakierowanie mnie i wytłumaczenie,jak się do tego zabrać.Mam coś podobnego,ale w bascomie i nie wiem za bardzo,jak to użyć,przekonstruować,a żeby działało w C.Zamieszczam kawałek kodu w celu zrozumienia,o co mi mniej więcej chodzi.Przepraszam,jeśli używam niewłaściwego słownictwa(programisty),ale jak pisałem,stawiam dopiero pierwsze kroki.Będę bardzo wdzięczny za wszelką pomoc.Z góry dziękuję i pozdrawiam wszystkich.


--------definicje znaków linijki-------------


Deflcdchar 0,32,32,32,32,32,32,32,31
Deflcdchar 1,32,32,32,32,32,32,31,31
Deflcdchar 2,32,32,32,32,32,31,31,31
...
...
...

if napiecie > 1 And napiecie <= 1,9 Then
Call Dline(0)

if napiecie > 1,9 And napiecie <=2 Then
Call Dline(1)

If napiecie > 2 and napiecie <=3 Then
Call Dline(2)

itd........



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2014, o 11:14 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 108
Pomógł: 0

Witam sznowne forum.Czy naprawdę nie ma nikogo,kto zechciałby mi pomóc ?.A może robię lub piszę coś nie tak ?.Proszę o jakieś sugestie.Dziękuję.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2014, o 13:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1967
Lokalizacja: Lipsko
Pomógł: 125

Ile poziomów chcesz odwzorować, czy ma być uwzględnine skalowanie napięcia /prądu czy może chcesz odwzorować dokładnie jakiś fragment zakresu? I do czego Ci aż tyle definiowanych znaków przy linijce?! Sama animacja linii jest banalnie prosta, ale najpierw odpowiedz na pytania...

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2014, o 13:37 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 108
Pomógł: 0

Witam i dziękuję za zainteresowanie moim problemem.Chodzi mi głównie o odwzorowanie napięcia w postaci linijki.Pomyślałem sobie,że jeżeli nauczę się na przykładzie napięcia,to i w innych sytuacjach się odnajdę(np.prąd itp.).Potrzebuję więcej,niż osiem znaków,ponieważ będę chciał w przyszłości zrobić wskaźnik wysterowania na lcd i 8 cegiełek,to zamało.Potrafię utworzyć
znaczki rosnących prostokącików,tak jak zrobiłem to w postaci znaku stopnia do pomiaru temp:

uint8_t znak_stopnia[] PROGMEM = {8, 20, 8, 0, 0, 0, 0, 0};

ale podobno można tylko 8 takich własnych znaków utworzyć.Według mnie z pewnością jest sposób na to,ale ja zacząłem około 3 tygodnie temu przygodę z programowaniem i mam mało czasu po pracy.Mam książkę Mirka i zestaw atb-najnowsza wersja.Uczę się kiedy czas na to pozwala,ale dla takiego laika,jak ja to początki są trudne,a i wiek już nie najmłodszy hi.Domyślam się,że każdy znak trzeba wysłać pojedyńczo w ściśle określonej sytuacji,to znaczy,że przy ściśle określonym poziomie napięcia,wskazać dokładnie,gdzie ma się wyświetlić itd.,ale jest to trochę po omacku.Wiadomo,że najmniejsza nieścisłość w kodzie powoduje nie działanie urządzenia,bądź działanie złe.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2014, o 15:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1967
Lokalizacja: Lipsko
Pomógł: 125

A co by przeszkadzało, abyś zrobił wskaźnik wzdłuż? Wtedy wystarczy tylko 5 definicji (można by na w sumie nawet 4 zrobić, bo w zestawie jest zazwyczaj gotowy "negatyw" na końcu tabeli znaków).
Samo odtwarzanie ścieżki to bajka. Licząc od zera: 0-pusty (drukujesz spację), 1-jeden rządek pikseli, 2-dwa rządki, ...itd do 5-pełne zaciemnienie, można sobie zrobić małą tablicę z tą animacją i kolejnością znaków - zwłaszcza jeśli wykorzystasz negatyw, który jest już zdefiniowany na stałe - bo upraszcza to sterowanie animacją. I teraz z prostego wzoru oraz manipulacją pozycji ekranu gdzie umieszczona jest ścieżka można sobie dowolny wskaźnik zrobić. Zakładając, że chcesz pokazać wartości od 0 do 80 (16 znaków x 5 pionowych linii w każdym) obliczasz najpierw pozycję, w której ma się wyświetlić aktualny znak czyli pozycja=wartość/5, a z kolei reszta z tego dzielenia to wskaźnik do tabeli animacji, gdzie wybierasz który ma być znak na aktualnej pozycji. Pozostaje tylko uzupełnić lcd małą pętlą od aktualnej (pozycji-1) w tył do 0 negatywem i masz odzwierciedlenie zadanej wartości. Wypadało by jeszcze wstawić spacje od wyliczonej wcześniej pozycji+1 do końca lcd aby skasować ewentualne wcześniejsze większe wskazania. Masz już praktycznie wszystko na tacy :) Teraz napisz program, a dopiero jak nie będzie działał to będziemy szukać błędów ;)

------------------------ [ Dodano po: 7 minutach ]

Taką metodę płynnej animacji obiektów stosowano np. w grach na stare komputerki, nie posiadające sprzętowych sprite'ów - np. commodore c16,116,+4, zx spectrum... :)

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2014, o 23:27 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 108
Pomógł: 0

Witam ponownie.Nakreśliłem coś takiego.Słupki w poszczególnych segmentach.

uint8_t slupek_1[] PROGMEM = {16, 16, 16, 16, 16, 16, 16, 16};
uint8_t slupek_2[] PROGMEM = {24, 24, 24, 24 ,24, 24, 24, 24};
uint8_t slupek_3[] PROGMEM = {28, 28, 28, 28, 28, 28 ,28, 28};
uint8_t slupek_4[] PROGMEM = {30, 30, 30, 30, 30, 30, 30, 30};
uint8_t slupek_5[] PROGMEM = {31, 31, 31, 31, 31, 31, 31 ,31};

Zrozumiałem ideę Twojego pomysłu.Bardzo prosta i oczywista.Mamy tylko 5 znaków,a możemy wyświetlać całą linijkę płynnie i na dodatek z dość dużą rozdzielczością.Rozumiem to tak:dla określonych poziomów adc zapalamy poszczególne słupki jednego segmentu.Kiedy skończy nam się segment,kolejne narastanie adc powoduje zapalanie kolejnych słupków drugiego segmentu itd...
Trzeba tylko to napisać,a ja za bardzo nie wiem jak zacząć.To znaczy na początek wykombinowałem coś takiego:

while(1)

{

if (napiecie > 0,4 && napiecie <= 0,5)

{

lcd_locate(0,0);
lcd_str("\xxx");

}

if (napiecie > 0,9 && napiecie <= 1)

{

lcd_locate(0,1);
lcd_str("\xxx");

}

if (napiecie > 1,4 && napiecie <=1,5)

{

lcd_locate(0,2);
lcd_str("\xxx");

}

}

Oczywiście napiecie w nawiasach jest w wartościach ADC.Czy idę w dobrym kierunku ?Jeżeli czegoś tu brakuje,to czy nie mógłbyś podpowiedzieć ?Dziękuję SylwekK



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 gru 2014, o 10:23 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 108
Pomógł: 0

Witam.Dziękuję bardzo koledze Antystatyczny za przyłączenie się i za pomoc.Wieczorem po pracy przyjrzę się temu bliżej.Pozdrawiam wszystkich.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 gru 2014, o 14:16 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3213
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 91

Robson a Ciebie nie obowiązują zasady? topic7402.html

_________________
http://www.jaglarz.info



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 gru 2014, o 18:05 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 108
Pomógł: 0

Witam.Przepraszam za niewłaściwe prowadzenie posta.W przyszłości postaram się poprawić,ale i tego muszę się nauczyć..Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 gru 2014, o 20:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1967
Lokalizacja: Lipsko
Pomógł: 125

Moja wersja jest nieco inna niż kolegi Antystatycznego. Przede wszystkim korzysta tylko z 4-ech definiowanych znaków i jest zrobiony na zasadzie jaką opisywałem wyżej. Przyznacie Panowie, że to chyba nieco lepsze niż ifowanie mało zrozumiałej litanii... ;)
Napisałem całą funkcję, bo i tak, będę z niej korzystał w jednym z projektów, które mam na warsztacie.

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


...i efekt działania...


_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 gru 2014, o 22:28 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 108
Pomógł: 0

Witam kolegów.Dziękuję SylwekK za materiały,które na pewno mi pomogą.Jak czytam Wasze wywody i oglądam pliki,to jedno jest pewne:znacie się na rzeczy.Ja stawiam dopiero pierwsze kroki
i na początku bazuję na zasadzie copy and past.A co jest dla mnie najważniejsze,staram się nauczyć czytać linijki w celu zrozumienia,o co chodzi w tym wszystkim.Nigdy nie będę programistą w prawdziwym tego słowa znaczeniu,bo już trochę za późno hi,ale chciałbym opanować tą sztukę na tyle,ą żeby zrobić ładny wyświetlacz do urządzenia,jakiś mierniczek czy wskaźnik itp...Na tą chwilę uruchomiłem miernik napięcia(pokazuje adc i volty),termometr.Na razie działam bez jakichkolwiek timerów.Używam książki Pana Mirka i internetu.Nie znam nikogo w mojej okolicy,kto by mi pomógł w nauce,a więc działam sam.Dzisiaj udało mi się wysłać jeden segment,który zapala się w pewnym przedziale napięcia(0 > 512),a więc trochę pojąłem,jak to zrobić.Vrev mam Vcc,preskaler 64.Mam jeszcze błędnie wyświetlana wartość napięcia.Adc jest ok,tylko w niektórych sytuacjach(jest np.1,2 volta i potem np. 1,20 volta),a adc różne.W poradniku Pana Mirka o adc jest opis,jak to zrobić,tylko na tą chwilę jeszcze tego nie rozumiem.Ale starczy tych wywodów,bo zabraknie czasu na naukę.Projekty,które Panowie przedstawiliście,są super,tylko na moim etapie chodzi mi o coś trochę innego.Jak wcześniej pisałem,póki co jeszcze nie zacząłem z przerwaniami,a co za tym idzie Wasze programy są bardzo krótkie i przez to ciężkie do zrozumienia dla mnie.Wolę zastosować 100 x if i wysłać każdy pojedynczy słupek do wyświetlacza,ale za to rozumieć,co tworzę.Może za jakiś czas nauczę się więcej i wtedy spróbuje tak jak Wy.Także proszę się nie śmiać,ale taką mam metodę nauki(tak mi się łatwiej przyswaja).Kolejna rzecz,która sprawia trochę kłopotu,to jak najlepiej „scalić” dwa programy.Oczywiście metodą prób i błędów udało się,ale czy do końca właściwie,to nie wiem.Jakie są zasady,co przed,a co po,jak w pętli,co na końcu.Pytań jest wiele,ale myślę Panowie,że kiedyś też mieliście podobnie i chyba to rozumiecie.Oczywiście,jak zakończę to podzielę się.Błędów pewnie będzie wiele,ale zobaczymy.Z tego co wiem,to nie można zamieszczać kodów z książki,a ja oczywiście na tym bazuję.Bez niej nic bym nie wskurał.W związku z tym jest problem z zamieszczaniem kodu.Dalsze podpowiedzi byłyby mile widziane i bardzo cenne dla mnie.Dziękuję i pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 gru 2014, o 23:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1967
Lokalizacja: Lipsko
Pomógł: 125

Jeśli sumiennie będziesz czytał książkę Mirka to zapewniam Cię, że z analizą naszych kodów nie będziesz miał żadnych problemów :) Sam tak naprawdę w C programuję od niedawna i jeszcze mam naleciałości z bascoma (choćby stosowanie ulubionego WHILE zamiast FOR, bo to pierwsze mniej w bascomie zajmowało, a tu nawet nie wiem szczerze mówiąc jak jest z rozmiarem kodu...). W programie wykorzystane są tak TYLKO podstawowe instrukcje i ich kombinacje. Prześledź linia po linii te programy (w swoim starałem się komentować najważniejsze rzeczy) i zobaczysz, że wszystko jest naprawdę proste. Dodam tylko dla jasności, że przy drukowaniu czegoś na LCD - nawet jednej literki - to kursor automatycznie przestawia się na następną pozycję i jest gotowy umieścić kolejny znak za już istniejącym. Niby prosta rzecz, ale pomoże Ci przeanalizować funkcję, bo to jest tu bardzo istotne. Aha, przerwań w swoim kodzie nie wykorzystywałem. I ważne! - książkę przeczytaj za koleją od początku bez przeskakiwania działów! Jeśli raz będzie mało to... przeczytaj jeszcze raz :)


Autor postu otrzymał pochwałę

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 cze 2017, o 09:09 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 108
Pomógł: 0

Ponieważ nie wiem,jak podejść do mojego problemu,postanowiłem zapytać kolegów na forum.
Wykonałem wskaźnik wysterowania wzmacniacza na linijce i jednoczesne wyświetlanie napięcia. Jestem zadowolony z działania mojego
wskaźnika, ale jest jeden szczegół,którego nie mogę rozwiązać.Linijka reaguje szybko na zmiany napięcia na wejściu adc i tak ma być.
Natomiast wyświetlanie wartości napięcia zmienia się zbyt szybko i trudno jest odczytać wskazania.Zastosowałem uśrednianie,filtr cyfrowy
z poradników Mirka, ale w moim konkretnym przypadku potrzeba czegoś więcej.Czy może ktoś zaproponuje jakiś pomysł.Chcę,a żeby wartość
napięcia narastała również szybko,synchronicznie z wyświetlaniem linijki,ale po zaniku tegoż napięcia jeszcze przez moment była widoczna
wartość w voltach(cyferki).Chodzi o to,a żeby odczyt wartości był stabilny,czytelny(jakby uśredniony,zamrożony).Tyczy się to wartości
szczytowych,maksymalnych.
Filtr cyfrowy,uśrednianie, powoduje również opóźnienie narastania wartości wyświetlanej,a tego nie chcę.Oczywiście nie czepiam się
pomysłu Mirka,ponieważ w Jego założeniu działa bardzo dobrze i spełnia swoje zadanie,ale u mnie musi funkcjonować trochę inaczej i na tą
dolegliwość nie mam pomysłu.
Może ktoś zmierzył się kiedyś z podobnym tematem,albo ma rozwiązanie.Z góry dziękuję za wszelkie wskazówki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 cze 2017, o 09:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1967
Lokalizacja: Lipsko
Pomógł: 125

Użyj dodatkowego timerka programowego, który będzie odliczał czas wyświetlania wartości, a żeby ta jakoś bardziej logiczne działało to niech czas będzie odliczany (powiedzmy od 0,5-1s) dla aktualnie największej odczytanej wartości, tzn. jeśli odczytasz, np. wartość 30, a za kilkadziesiąt ms pojawi się 35 to niech czas odliczania 30 zostanie od razu przerwany i niech wyświetli i od początku odlicza dla wartości 35. Po odliczeniu tej 1s łapie to co aktualne i tak w koło. Dzięki temu wartości szczytowe będą miały priorytet.


Autor postu otrzymał pochwałę

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 cze 2017, o 12:07 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 108
Pomógł: 0

Dziękuję Sylwku za odpisanie i za chęć pomocy.
Będę próbował zastosować się do Twoich wskazówek, może coś się uda.
Jeśli któryś z kolegów forumowiczów ma jeszcze jakieś pomysły,to bardzo proszę podzielić się.
Dzięki na razie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 cze 2017, o 06:26 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 108
Pomógł: 0

Sorki, że tak późno odpisuję, ale inne zajęcia były.

Napisałem krótki program, a żeby było czytelniej i człon main wygląda następująco:


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



W funkcji wyswietl_napiecie(); chcę wyświetlić wartość ADC , jako tą stabilną, wartość szczytowa.....Nie jestem pewny, czy idę w dobrą
stronę używając timera w ten sposób.Co by tu dalej poczynić.
W fynkcji wyswietl_napiecie(); między innymi kodami do wyświetlenia napięcia w woltach i po przecinku mam tak:


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



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


Funkcjonuje to nawet ciekawie ale reakcja przy szybkim pokręceniu jest taka, że wyświetlenie zmienia się z opóźnieniem (reakcja po chwili
kiedy nastąpi zmiana napięcia), no i na razie nie mam pomysłu jak wyłuskać tylko wartości szczytowe i je wyświetlać.
Rozumiem zamysł Twojej podpowiedzi Sylwku i o co kaman, ale puki co nie wiem, jak zastosować to w kodzie.
Pozdrowionka.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 cze 2017, o 07:10 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 108
Pomógł: 0

Nie mogę poradzić sobie, jak rozwiązać to programowo. Teoretycznie rozumiem, co SylwekK mi poradził, ale za Chiny ludowe nie mogę ruszyć z kodem.
Może któryś z biegłych forumowiczów mi podpowie na zaczątek :( . ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 cze 2017, o 08:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1967
Lokalizacja: Lipsko
Pomógł: 125

Wartość szczytowa to prosta sprawa. Bierzesz dodatkową zmienną, która będzie też służyła do wyświetlania wyników i porównujesz ją z aktualnym wynikiem i teraz jeśli aktualny wynik jest większy niż stan zmiennej to przypisujesz ten wynik do tej zmiennej i jednocześnie ustawiasz timer na odliczenie 1s. Po odliczeniu czasu przez timer znowu przypisujesz aktualny stan. Pamiętaj, że samo porównanie musi być poza timerem aby ewentualnie wychwycić jakąś kolejną max wartość i ponownie ustawić timer na 1s.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 cze 2017, o 13:38 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 108
Pomógł: 0

Dzięki Sylwku, że znalazłeś czas, a żeby odpisać.
Coś zaczyna wychodzić, tylko występuje mały problem z wyświetlaniem. Wypociłem coś takiego w oparciu o Twoje podpowiedzi:


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


Oczywiście powołałem dwie zmienne: uint16_t wynik1; i uint16_t wartosc_szczytowa; (zmienne globalne). Uint16_t wynik1; jest powiązany z pomiarem ADC i
jako postać 0-1023. Wyświetlają się dwie wartości adc, ta "normalna" i ta szczytowa-spowolniona, uśredniona, szczytowa.
Problem wygląda tak, że wyświetlają się dwie takie same wartości (oczywiste). Kiedy pokręcę potencjometrem, to szczytowa dogania (0,5s) tą normalna, ale
kiedy zmniejszam wartość adc, to ta szczytowa zostaje na zapamiętanej ostatniej wartości i się nie zmienia.
Pewnie chodzi o skasowanie, odświeżenie tego pomiaru, ale mam już taki mętlik w głowie, że nie myślę racjonalnie :evil: .

Czy to, co namodziłem jest ok (pomiar wartości szczytowych) i co ewentualnie robię źle. Proszę o wsparcie forumowiczów.

------------------------ [ Dodano po: 25 minutach ]

Popełniłem jeszcze mała korektę i wyglada to następująco:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Wydaje mi się, że chyba jest to, o co mi chodziło, tylko byłoby fajnie, gdyby czas narastania był krótki (gonienie za napięciem), a czas wyświetlania nawet
po zaniku na wejściu adc był nieco wydłużony. Co by nu wykombinować i czy teraz jest do przyjęcia taka oto wersja ?.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2017, o 14:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1967
Lokalizacja: Lipsko
Pomógł: 125

Powinno działać. Niepokoi mnie tylko to cls przed każdym wyświetlaniem. Zajmuje ono sporo czasu i lepiej zastąpić go drukowaniem spacji w miejscu gdzie chcesz wykasować jakieś dane.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 cze 2017, o 06:30 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 108
Pomógł: 0

Dzięki SylwekK

Siadam do zagadnienia, kiedy tylko mam czas, ale z tym problem. Napisałem trochę inaczej , poprawiłem i samo wyświetlanie wartości jest ok.
Nie wpadłbym na to, gdyby nie Twoje wskazówki. Punkty oczywiście przydzielę, jak siądę na dłużej i dokończę. Wartość napięcia narasta szybko
, a zatrzymuję na np 1s. Jest ok, tylko chcę jeszcze bardziej przytrzymać wynik na lcd, a to z kolei wpływa na inne dane na wyświetlaczu.
Walczę nad tym. Wieczorkiem zapodam kod do wglądu. Słusznie zauważyłeś. To lcd_cls(); trochę mi miesza w programie. Jak to rozwiązać
"spacjami" (jakiś przykład). Tak sobie myślę, że jak pętla kręci się szybko, to czy zauważę efekt?.
Na razie.


Nie mam dostępu do mojego Eclipse, ale o ile pamiętam, to jakoś tak mam na tą chwilę:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Jeszcze raz dzięki Sylwku. Pozostałem na razie z tą wersją, aczkolwiek sposób z drukowaniem spacji również przetestowałem i jest ok. Sorki, że tak późno
odpisuję, ale mam ważniejsze sprawy i C jest na dalszym planie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2018, o 14:17 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 108
Pomógł: 0

Ostatnio przeglądałem "wymęczone" w Eclipsie swoje programiki i pomyślałem sobie, co by tu jeszcze zmienić, ew. dodać.
Otóż mam wskaźnik-bargraf, który pokazuje mi wartość napięcia na lcd (hd44780). W necie widywałem różne ciekawe
pomysły na wizualizację i wpadło mi w oko takie rozwiązanie, jak na foto:


Obrazek


Dorobiłem sobie cienki pasek w postaci kropek;

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



i napisałem małą pętlę:

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


Linia z kropkami ładnie się wyświetla. Następnie na nią "nałożony" jest pasek obrazujący poziom napięcia, który przesuwa się
od lewej do prawej. Wszystko było by fajnie, tylko działanie nie jest do końca takie, jak chciałem.
Wiadomo, że te kilka kropek znajduje się w jednym segmencie kolumny i kiedy przesuwająca się linijka nachodzi na kolejny
segment, to wygasza od razu wszystkie kropki tego segmentu i tworzy się mały obszar bez tych kropek. nie ma tej płynności....
Rozumiem, że powinienem utworzyć kilka znaków (jedna kropka, dwie kropki, trzy kropki, itd..., razem 5 kropek) i odpowiednio je wyświetlić, tak, jak robię to z samym paskiem. Tylko, że kończy mi się możliwość tworzenia własnych znaków(wyczerpały się) i
szczerze mówiąc, nie wiem co by tu w takiej sytuacji można było zrobić. Czy w ogóle w mojej sytuacji jest jakieś wyjście.

Oczywiście można by z tego w ogóle zrezygnować, no ale zachciało mi się takiej zajawki, no i jestem w kropce.

Wyświetlacz sterowany jest buforowo. Może ma ktoś z kolegów jakieś remedium na ten problem. Z góry dziękuję.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2018, o 14:39 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27356
Lokalizacja: Szczecin
Pomógł: 1042

https://youtu.be/x_Xbg259yaM?t=1201

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2018, o 14:50 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 108
Pomógł: 0

Dziękuję Mirku
Zagłębiam się za studiowanie poradnika...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2018, o 15:01 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27356
Lokalizacja: Szczecin
Pomógł: 1042

tam jest kilka poradników z tej serii w jednym z nich omawiam jak można to realizwać w C

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2018, o 20:58 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 108
Pomógł: 0

Dziękuję Mirku.
Pod linkiem, który mi podałeś akurat nie trafiłem na rozwiązanie, ale przejrzę wszystkie. Tak na marginesie, to jestem w posiadaniu Twego kodu w wersji
"pro", ale akurat w tym konkretnym przypadku zastosowałem trochę inne rozwiązanie. Jak dojdę, co i jak, to się pochwalę. Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lut 2018, o 10:33 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 108
Pomógł: 0

Witam po małej przerwie.
Mirku, jeśli przypadkiem przeczytasz mój post, to powiem tylko, że przejrzałem 9 poradników o enkoderze i dwa epilogi dotyczące
bargrafów, ale jakoś nie trafiłem. przyznaje, że poradniki o enkoderach przeleciałem pobieżnie, ale dwa pozostałe obejrzałem od
dechy do dechy. Może po prostu przeoczyłem, ale nie znalazłem odpowiedzi na mój przypadek.
Z kodu zawartego z poradnika wynika, ze zostały również wyczerpane wszystkie możliwe definicje własnych znaków od
0x80 do 0x87. Ponad to w bargrafach z poradnika nie ma sytuacji, jak u mnie, że wyświetla się statycznie linijka kropek, a na
niej wyświetlany jest ruchomy pasek.
Swoją drogą, to myślałem, że jak w pętli będę wyświetlał te dwie nałożone na siebie rzeczy, to takiego negatywnego efektu nie będzie.
Oko nie zauważy, ale się myliłem. Temat puki co jest otwarty. Może jest jakiś sposób na ominięcie tej niedogodności ? :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lut 2018, o 11:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1967
Lokalizacja: Lipsko
Pomógł: 125

A może po prostu niech każda definicja znaku zawiera te kropki w sobie i dodatkowo zdefiniuj sobie jeszcze zamiast spacji same kropki. Albo czegoś ja teraz nie rozumiem albo próbujesz koło na nowo odkryć, bo temat wydaje się być banalny.


Autor postu otrzymał pochwałę

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lut 2018, o 11:56 
Offline
Użytkownik

Dołączył(a): 12 lis 2014
Posty: 108
Pomógł: 0

Bardzo dziękuję Sylwekk.
W 50% mi pomogłeś. Ja rozumiem, że dla Ciebie takie sprawy są banalnie proste. Musisz jednak mi wybaczyć słabą kreatywność.
No nie pomyślałem, że przecież tak można. Pierwsza kreska i dwie kropki, jako jeden znak, dwie kreski i dwie kropki, jako drugi znak,
trzy kreski i jedna kropka, jako 3 znak itd...No ale proste jest zazwyczaj trudne :lol: . Ja mam dodatkowy pasek z samymi kropkami,
jako kolejny własny znak, który się wyświetla w pętli for. A jeden z parametrów tej pętli odpowiada za ostateczną długość paska.
Na tą chwilę pozostał jeszcze jeden mały problem, że kolejny segment za końcem paska wędrującego jest pusty. To jest pewnie
wyświetlenie pustego znaku. Występuje to tylko wówczas, kiedy poprzedni segment jest całkowicie zajęty przez swój znak. Kiedy
natomiast jest wyświetlony częściowo (pierwsza kreska segmentu i kolejne kropki, druga kreska i kropki, trzecia kreska i kropki itd...),
to wówczas ten następny w przodzie segment i kolejne po nim są normalnie z kropkami. Dopiero kiedy w danym segmencie nastąpi
całkowite zaciemnienie, to znikają kropki w kolejnym. Sorry, że naklepałem tyle o tych kropkach i kreskach, ale chciałem dokładnie
opisać przypadek. Kombinuję dalej... Jeszcze raz dzięki za wskazówkę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lut 2018, o 12:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1967
Lokalizacja: Lipsko
Pomógł: 125

Kombinuj :) może wstaw jakiś warunek o drukowaniu czegoś lub nie kiedy osiągnięty jest pewien stan... ;-)

_________________
http://www.sylwekkuna.com



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: 37 ]  Przejdź na stronę 1, 2  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO