@laventel: Niestety mam casio, a samych równań nigdy nie było mi potrzebne robić na kalkulatorze, więc nie pomogę, ale nie wydaje mi się, żeby tego nie było tam. Dziwi mnie, że osoba wyżej od razu wie co kryje się w tym konkretnym kalkulatorze pod przyciskiem "mode". Najwyżej chyba faktycznie będziesz musiał kupić casio, skoro instrukcji też nie masz.
  • Odpowiedz
Potrzebuje nieco pomocy przy sposobie organizacji projektu. Nie znam się niestety na wzorcach a to jest idealny moment, żeby się poznać. Ale jaki i dlaczego wybrać? Jak to dalej zaimplementować, żeby nie zrobić kaszanki z kodu?
na razie to jest główny program
To coś działa. Ale będzie wymagało mnóstwa caseów, chociaż pętla główna znacznie się uprości w stosunku do tego co było kiedyś.
To co widać - na początku wywołuję funkcję action(...)
A.....k - Potrzebuje nieco pomocy przy sposobie organizacji projektu. Nie znam się ni...

źródło: comment_JSDcxBqIKO2YmqawGGvrSfdylaQRK5b9.jpg

Pobierz
@lionbest: dzięki za uwagi. No właśnie chciałbym to uprościć, upchnąć jakiś schemat lub wzorzec. O zasoby jestem spokojny, na razie zajmuje 10k pamięci ze 128k i 1kB ramu z 8kB.
Enum state to stan w jakim znalazł sie program po akcji użytkownika. Wypisałem je dla świadomości ile tego jest, i że każdy taki przypadek wymaga określonej akcji, dlatego na tym bazuje. Za to w tej chwili zupełnie nie używam żadnego wzorca
  • Odpowiedz
@Analityk: Najpierw wydziel sobie stany, które są niezależne. Potem dopiero pomyśl która klasa powinna się tym zajmować. Jeżeli masz wiele instancji okien, to każda z nich będzie miała stan niezależny. Następnie łatwiej będzie ci określić, czym dana klasa powinna się zajmować.
  • Odpowiedz
PCB przylutowane do wyświetlacza. Generalnie już działa ale muszę zrobić porządek z kodem, bo się zakałapućkam.
Na razie pobór mocy to 0,22 W z pełnym podświetleniem i około 0,12W z wyłączonym LCD. To by dawało czas pracy około 4-6 godzin na dwóch ogniwach NiMH 800mAh. Zdecydowanie można to poprawić, po pierwszych testach udało mi się obniżyć pobór prądu z 70mA do 20 w czasie pracy i do 7,5mA w trybie czuwania. I
A.....k - PCB przylutowane do wyświetlacza. Generalnie już działa ale muszę zrobić po...

źródło: comment_h1PxYcLa8inQ1z0MuC0jCuw870wz2Vef.jpg

Pobierz
Przy ogniwie, które pracuje od 3.0 do 4.2 potrzebowałbym przetwornicy SEPIC


@Analityk: nie jeśli zasilisz procesor ~3V. Są przetwornice buck, które przy malej różnicy napięć przechodzą w tryb LDO i dzięki temu zachowują dużą sprawność i niski spadek napięcia w razie potrzeby.
  • Odpowiedz
pomocy czy ktoś umie to zliczyć, w exelu zlicza mi jeśli usunę to co po przecinku inaczej wyskakuje mi błąd ;(potrzebuje wynik)

173,30
32,70
444,60
373,40
325,10
54,10
49,50
97,40
110,60
183,20
11,50
356,60
21,70
281,20
245,50
33,60
52,50
133,40
57,30
3,10
10,10
37,40
255,10
309,90
176,80
539,40
9,20
309,80
1083,60
136,30
50,40
39,30
209,40
10,00
475,10
280,50
79,00
61,30
11,40
93,00
387,60
55,40
354,30
24,10
24,80
58,30
15,80
64,00
37,40
68,20
Zmieniłem podejście do tematu i zamiast parsować całe wyrażenie aż do uzyskania typowego stosu dla odwrotnej notacji polskiej obliczam wynik działania odkładanego na wyjście w trakcie budowania stosu, przez co unikam pisania dość złożonej funkcji obliczania onp wprost z typowego jej stosu.


Pewnie zamiast konstrukcji switch case mógłbym użyć jakiegoś callbacka ale optymalizacja będzie później, jeśli będzie potrzebna.
link
#kalkulatoranalityczny #programowanie #programujzwykopem
  • Odpowiedz
Ktoś śledzi #kalkulatoranalityczny więc kolejny wpis. Długo to trwa bo urodził mi się syn #chwalesie
link
Buduje coś na kształt excela. Mam ekran podzielony na kolumny i wiersze, 10 kolumn, 9 wierszy, 90 pól zdolnych pomieścić w zasadzie dowolną ilość znaków (128kB pamięci ram na takie rzeczy), obecnie po 50 max.
Można już przesuwać kolumny i wiersze, wybierać pola i edytować ich zawartość. Widać na raz 4 pola (niestety taki jest ekran
  • Odpowiedz
No elo.
link
#kalkulatoranalityczny Rozwijam powoli kod menedżera pamięci, wygląda to coraz lepiej. get_mem zwraca obiekt typu ram_grip a wszystkie inne funkcje tego pilnują. read_block oraz write_block działają w pętli bezpośrednio na pamięci a nie pośrednio przez readByte i writeByte co pozwala opuścić (zwłaszcza w funkcji read) aż do 9 instrukcji na każdy odczytany bajt co sprawia, że komunikacja z pamięcią jest bardzo szybka.
Mam już obliczone jak rozwiązać zwalnianie pamięci i
  • Odpowiedz
#kalkulatoranalityczny #avr #arduino
Ha, jest pierwsza wersja menedżera zewnętrznej pamięci static ram. link
Działa to tak, że trzeba zgłosić zapotrzebowanie na określoną ilość pamięci a metoda get_mem zwróci numerek z dostępem do bloku, czyli
uint16_t numerBloku = ram.get_mem(100);
później tym numerkiem odwołujemy się do tegoż bloku i możemy czytać np.
uint8_t dane = ram.read_mem(numerBloku, offset); gdzie offset to kolejny numer bajtu w bloku.
albo pisać (choć prototypy są zniechęcające)
ram.write_block(numerBloku, offset, ileBajtow,
  • Odpowiedz
#kalkulatoranalityczny #arduino #avr
Kalkulator rośnie, napisałem najprościej jak się dało komunikację przez spi z pamięcią flash, zainstalowałem wszystkie elementy tak, że urządzenie działa zasilane pojedynczym ogniwem 1.5V, dodałem zewn. pamięć static ram. Lutowanie się skończyło, teraz zostało tylko zaprogramować to tak, żeby było dobrze.
repo
#kalkulatoranalityczny #programowanie
Jakby ktoś pytał to zmobilizowałem swoje cztery litery i dzięki pomocy mireczków @KrzaQ2 i @lionbest udało mi się dojść do momentu, w którym mogę skupić się na zasadniczych funkcjach kalkulatora.
Za pomocą strzałeczek po obu stronach będzie się wysuwało potrzebne przyciski jak choćby funkcję trygonometryczne, których teraz nie widać itd itp. W miejscu, gdzie pojawiają się informacje dupa debugging pojawi się wprowadzane obliczenie, zarezerwowałem sobie minimum 32 piksele wysokości więc
A.....k - #kalkulatoranalityczny #programowanie 
Jakby ktoś pytał to zmobilizowałem ...

źródło: comment_P822AUrFRwktqBr4qAJnDdopYgemzRvr.jpg

Pobierz
Na razie mało czasu do pracy bo przeprowadzki, śluby i inne takie, #prokrastynacja też nieco no i pracbaza na 3 zmiany.
Zarządzanie pamięcią będę rozwijał jak zrobię rzeczy podstawowe, teraz dokopałem się do swojego postu sprzed dwóch lat o panelu dotykowym.
Powstanie jedna klasa, która udostępni funkcję readkey(), która zwróci bezwartościowe współrzędne miejsca ekranu, które zostało naduszone (i gdzie zostało zwolnione) oraz funkcja, która będzie czekała na zwolnienie klawiatury oraz bool
Mirki z #programowanie potrzebuje wskazówki.
Muszę zorganizować takie prymitywne zarządzanie pamięcią. Mam uC (4kB ramu) oraz kostkę 128kB ramu (nazwijmy to ERAM).
Najprościej mówiąc potrzebuje takich funkcji malloc i free, (albo new i delete) dzięki którym będę mógł wykorzystać całą dostępną pamięć ERAM a przy tym nie zużyć całej dostępnej pamięć uC.
Pomysł mam taki: zorganizować pamięć ERAM w bloki po 256 bajtów. w uC będę przechowywał adres początku bloku (2 bajty),
Napisz odpowiedni skrypt lokatora (zwany bardziej popularnie skryptem linkera) a potem możesz już przeciążyć operator new/delete albo napisać własne odpowiedniki funkcji malloc, free które w zasadzie będą tylko wrapperami dla oryginałów z zaznaczeniem w których sekcjach wymienionych w skrypcie lokatora dane mają być alokowane (jak to zrobić, musisz dokopać się w dokumentacji twojego kompilatora/linkera, bo nie jest to ustandaryzowane).

Wydaje mi się to najprostszym rozwiązaniem (zakładając że nie przejmujesz się defragmentacją pamięci
  • Odpowiedz
@Analityk: Zależy jak prosty ma być ten alokator. Ale przy prostym przydałaby się jeszcze informacja o zajętości pamięci. Taki prosty kołowy alokator jest jednak niebezpieczny i możliwe będą defragmentacje - przerabiałem to jakis czas temu... Opakowanie w klasę, przeciążenie operatora new i delete to najprostszy element całości, to, aby działało to rozsądnie, szybko (w moim przypadku jeszcze w watkach) jest wyzwaniem. Dodatkowo u mnie istotne bylo wyrównanie adresu przy zmiennych typu
  • Odpowiedz
Płyta niby skończona ale może kiedyś powstanie wersja 1.1 więc czasem nanoszę jakieś zmiany. Wszystkie lecą do repo.
Płyty przyjadą jutro. Część części mam, resztę zamówię jak znajdę chwilę by ogarnąć wszystkie potrzebne linkii do TME (bo wtedy zamawianie trwa chwilę).
Powstało trochę kodu, możecie jedynie zobaczyć konwencję nazewnictwa plików niż jakiś przetestowany kod. Wszystko na podstawie datasheetów, powinno działać ale życie pokaże jak jest naprawdę.
link
Nie chce mi się na
  • Odpowiedz