• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Dobre zasady programowania w Arduino...
#11
Dzięki za wpisy. Spróbuje jutro przetestować to setWaitForConversion(0).
C.O. to tylko przykład - przy nim nie powinno przeszkadzać czekanie nawet 1s na pomiar.
Przyblokowanie na te 20ms nie powinno stanowić problemu w żadnym wypadku.

Napiszę dwie wersje funkcji obsługującej DSy i zobaczę jak szybko pętla główna zasuwa Wink

Muszę jeszcze zastanowić się w jakie sterowanie palpacyjne się pchać - czy enkoder obrotowy,
czy tradycyjne klawisze. Skłaniam się ku temu drugiemu, jako człowiek starej daty Wink
Przynajmniej na mojej drukarce enkoder działa dość koślawo...

PWL
 
Odpowiedź
#12
Ekran dotykowy z wyświetlaczem kolorowym Smile
 
Odpowiedź
#13
A tego to nie cierpię najbardziej Smile

PWL
 
Odpowiedź
#14
Drugi temat, może nawet ważniejszy.

Jak obsłużyć menu nie blokując pracy pętli.
Wiadomo, że np. w przypadku regulatora temperatury nie mogę zablokować
pętli PID tylko dlatego, że chcę sobie pochodzić po menu Wink Jakieś sugestie?

PWL
 
Odpowiedź
#15
Sugestia taka, by zrealizować menu tak jak mówisz. Program ma lecieć swoim rytmem, a to że akurat wyświetla na ekranie jakieś opcje menu ma nie wpływać na to czy akurat mierzy temperaturę czy odlicza czas do wyłączenia jakiejś pompy, itp.
Przykładów jest mnóstwo, łatwo to zweryfikować puszczając sobie miganie led w pętli głównej co np. 100ms i łażąc po menu, jak w przykładzie led robi pause to nie ma co się z nim dalej bawić. Kolejna sprawa to wszystkie teksty i komunikaty ładowane z flash, bo w Arduino szybko kończy się RAM.
Możesz zacząć od tego: https://starter-kit.nettigo.pl/2017/04/m...aczu-16x2/.
Przykładów jest mnóstwo w Internecie, są też całe generatory menu online.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#16
Dzięki postaram się to zrozumieć Wink

Marzy mi się, żeby menu było funkcja uniwersalna - na początku tablica z danymi definiującymi
strukturę, zachowanie etc. No ale na to chyba na razie za cienki jestem Bolek Wink

PWL
 
Odpowiedź
#17
(29-04-2019, 19:01)PierwszyWolnyLogin napisał(a): Problem jaki widzę w Arduino to ograniczenia samego procesora - czyli jedna pętla,
brak jakiejkolwiek wielozadaniowości itd.
Problemem jest nie Arduino, które od początku (IDE )do końca (C++ na 2kB RAM) to nieporozumienie, ale programista, który nie potrafi uruchomić RTOS'sa.

(29-04-2019, 19:01)PierwszyWolnyLogin napisał(a): Problem jaki widzę to zdarzenia które długo trwają - jak np. odczyt temperatury z DS18B20
- trwa prawie sekundę, w czasie której można tylko czekać, a jeśli zdarzy się błąd pomiaru
to trzeba go ponowić...
Kolejny przykład ułomności programisty.
Jaki problem obsłużyć 1-Wire przez UART na przerwaniach? Obciążenie uC poniżej 1%.

Na AVR 20MHz robiłem rzeczy, których nie powstydziłby się ARM.
Dekodowanie DMX w "tym samym czasie" sterowanie do 1000 LED WS2812, wysyłanie DMX. Zrobiłem nawet gry aby zademonstrować co da się zrobić na AVR::
https://www.youtube.com/watch?v=h2RKAJZdVl4
https://www.youtube.com/watch?v=aM9hy4EpleY

Jak więc widać, AVR ma spore możliwości. Niestety, mało RAM, brak DMA zmusił mnie do odejścia od tych uC, które owszem, 20 lat temu były dobre, teraz są powolne, mają małe zasoby i co najgorsze, są stosunkowo drogie! Nawet bardzo drogie (AtMega2560 vs 10 czy 100 razy lepszy ARM).


PS
Co do RTOS, to na AVR widzę jego w miarę sensowne wykorzystanie na Mega1284 (16kB RAM), ostatecznie Mega2560 (8kB RAM), bo jak wiadomo, RTOS lubi RAM. Z tego powodu, na AVR, robi sie wielowątkowość, wystarczy oduczyć się "dealy" i "while{ coś się wydarzy}". Niestety, wysyłając szybko po SPI, trzeba kręcić się w pętli, bo wejście/wyjście w IRQ to dużo czasu. Problem rozwiązuje DMA, np Xmega, ale one są drogie i mają mało RAM i nie da sie zrobić bufora na większe, kolorowe LCD. Wybór jest prosty - ARM.
 
Odpowiedź
#18
Gdyby nie liczba wejść, to taki sterownik spokojnie by działał i na attiny.
Choć szczerze, to sam nie podjąłbym się zrobienia sterownika takowego, a patrząc na twoje posty, zdecydowanie bym tego unikał Smile
Jedna pętla zle i piec szlak trafi, i jak masz fart to tylko on się uszkodzi, gorzej jak coś powali z rurami które masz już w ścianie, a jeszcze gorzej jak to gazowy jest i coś sknocisz, zgasisz gaz i po chwili włączysz bez iskry a iskra skoczy po godzinie bo akurat jakaś pętla while się zapetlila i nieszczęście gotowe.
 
Odpowiedź
#19
(01-05-2019, 12:51)error105 napisał(a): ...zgasisz gaz i po chwili włączysz bez iskry a iskra skoczy po godzinie bo akurat jakaś pętla while się zapetlila i nieszczęście gotowe.

Bez jaj, o czym Ty piszesz? Smile Nikt normalny nie będzie ingerował w pracę pieca gazowego na tym poziomie...
Piec ma własną elektronikę, która radzi sobie doskonale.

Ja potrzebuje zautomatyzować sobie sterowanie pompami obiegowymi - mam ich kilka - do kilku obwodów c.o., do pętli c.w.u. Oczywiście mogłyby pracować non-stop, albo na jakimś głupim zegarze, ale jeśli za kilkadziesiąt złotych mogę zrobić sterownik, który będzie inteligentniejszy i w dłuższym rozrachunku da choćby małe oszczędności to czemu nie? Smile
Przy okazji nauczę się czegoś. A wypracowane mechanizmy przydadzą się na pewno do czegoś innego..

Ps.

OK, termometr wstępnie działa.

sensors.getTempC(DS01); zajmuje 12-14ms, a sensors.requestTemperatures() 2ms.
Jeszcze muszę obsługę błędów pomiaru zrobić.

Ps.

Sterowanie "PWM" stycznikiem załączającym grzałką też zrobione.

Teraz muszę jakieś przyciski kupić, i większy LCD - mam pod ręką tylko 2x16
a przydałoby sie 4x20... Następne będzie menu, albo przynajmniej wyświetlanie wyników, o ile samo menu nie będzie potrzebne...

PWL
 
Odpowiedź
#20
Co się tyczy kupowania LCD, to jest to jedyne moje hobby, które toleruje moja żona, nawet sama mi je kupuje na jakieś urodziny, czy rocznicę ślubu.
(Tak, zbieranie wyświetlaczy jest moim hobby, mam tych elcedeków niezliczone ilości. W zamierzchłych czasach pracowałem dla PVI i zostało mi takie zboczenie)
Można czasami trafić na prawdziwe perełki. Na przykład na znanym portalu aukcyjnym, kupiłem karton Seiko 19A1 na prawdziwych (japońskich) KS0063 i 0066 za 10PLN. Najwyższej jakości ekran jaki w życiu widziałem, no i 24 znaki w linii.
Albo graficzny LCD 128064 na oryginalnych Toshibach T6963C za 15PLN, wart co najmniej 10 razy tyle.
Nie wiem po co ja to piszę, ale pewnie po to, żeby zachęcić Was do szukania okazji, bo kupowanie chińskiego badziewia bardzo często źle się kończy (znam z autopsji, być może kiedyś Wam opowiem kilka historyjek o straconych pieniądzach z powodu nie trzymania parametrów w tych czipach napylanych na płytkach LCD. To znaczy, jak ktoś ma łeb, to spokojnie może grzebać w sterownikach i to coś uruchomić.)
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości