Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Inteligentna Stacja Meteorologiczna V1 - sztuczne sieci neuronowe w praktyce

ikko 13 Gru 2011 19:47 28095 61
  • #31
    szulat
    Poziom 23  
    ikko napisał:
    Średni błąd względny prognozy wynosi 6.7%

    temperatura i błąd względny? coś tu nie gra...
    gdyby była w kelwinach to owszem, może być błąd względny, ale wtedy 6.7% to jakieś 20 stopni błędu :) a w stopniach celsjusza błąd względny nie ma sensu ("w niedzielę było 0°C a w poniedziałek było dwa razy cieplej. ile stopni było w poniedziałek?")

    porównaj te prognozę z jakimś ogólnie zrozumiałym punktem odniesienia bo taka informacja jest bezwartościowa bez podania warunków w jakich to sprawdzałeś.

    i powtarzam propozycję porównania wyników NN z trywialnym algorytmem prognozującym że "jutro będzie tak jak dziś", to byłby bardzo dobry test pokazujący w jakim stopniu "inteligencja" pomaga w rozwiązaniu tego problemu.

    3.1.13. (10.9, 15) Zabronione jest publikowanie wpisów naruszających zasady pisowni języka polskiego, niedbałych i niezrozumiałych.
    Proszę poprawić !
    A.
  • #32
    mungo
    Poziom 18  
    marek1846 napisał:
    Choć to brzmi absurdalnie prognozować należy opierając się na przyszłości a nie przeszłości

    Na podstawie danych z przeszłości właśnie się prognozuje , a opierając się tylko "na przyszłości" to można przewidywać/zgadywać.
  • #33
    miszcz310
    Poziom 19  
    A ja mam takie pytanie/prośbę. Gdzie można poczytać o tych sieciach neuronowych w miarę przystępnej formie. Może polecisz jakąś literaturę. Będę bardzo wdzięczny. Z góry dziękuję.
  • #34
    bipolunipol
    Poziom 19  
    Jak wygląda oprogramowywanie takiej sieci neuronowej? Czy program sieci został napisany w Basicu czy Asemblerze? Skąd kolega czerpał wiedzę odnośnie sieci neuronowych-są może jakieś dobre książki/strony Int. opisujące w sposób przystępny owe zagadnienie? Jak mocno rozbudowaną sieć można stworzyć opierając się na mikro-kontrolerach AVR?
  • #35
    ikko
    Poziom 12  
    grzeniu_pl napisał:
    Rozumię, że asembler został użyty w momentach krytycznych czasowo ale czy tylko ?

    Asembler był tu niekonieczny. Zastosowany jest tylko do obsługi wyświetlacza.

    leonow32 napisał:
    Pewnie zdecydowaną większość miejsca w pamięci zajmuje tablica z danymi do sieci, mam rację? To że program ma 5800 linii i zajmuje 80% Atmegi128 niewiele mówi...

    Może gdybym napisał ile procentowo zajmuje obsługa różnych funkcji to dało by jakiś obraz sytuacji, ale nie mierzyłem tego. Możliwe, że używam bardzo nieoptymalnych rozwiązań programowych. Co do samej sieci, to nie zajmuje ona większości miejsca w pamięci. Nieco ponad 500 wag (po jednej na synapsę) nie zajmuje aż tak dużo. Razem z implementacją sieci dało to jakieś 30KB (nie pamiętam dokładnie).

    drzasiek napisał:
    Skoro podłączyłeś zewnętrzną (względnie dużą) pamięć RAM to
    pewnie ze względu na to "uczenie się" tak? Czyli wszystko co ta sieć się nauczyła
    przez te 3 tygodnie przechowywane jest w pamięci ulotnej?

    Cała wiedza sieci tkwi w nieulotnej pamięci ATmegi. Gdyby sieć douczała się, to zastosowałbym coraz łatwiej dostępną pamięć typu FRAM.

    szulat napisał:
    temperatura i błąd względny? coś tu nie gra...

    Błąd względny wyrażamy najczęściej w procentach, więc podałem go wyprzedzając pytanie o dokładność procentową. Wiem, że zimą taki błąd może wynieść nawet kilkaset procent, dlatego podałem średni błąd względny (z całego roku). Podałem też średni błąd w °C i współczynnik korelacji Pearsona. Napisałem już, że sieć lepiej sobie radzi z prognozą latem. Zimą rozbieżność wynosi chwilami prawie 2°C, a latem ok 0.7°C.

    miszcz310 napisał:
    A ja mam takie pytanie/prośbę. Gdzie można poczytać o tych sieciach neuronowych w miarę przystępnej formie. Może polecisz jakąś literaturę.

    Trudno mi jednoznacznie wskazać konkretną książkę (lub stronę internetową). Raczej większość materiałów edukacyjnych które znalazłem w sieci raczej odstraszały niewtajemniczonych. Może ulepię z czasem jakąś bibliografię z której czerpałem wiedzę.

    bipolunipol napisał:
    Jak wygląda oprogramowywanie takiej sieci neuronowej? Czy
    program sieci został napisany w Basicu czy Asemblerze? Skąd kolega czerpał wiedzę odnośnie sieci neuronowych-są może jakieś dobre książki/strony Int. opisujące w sposób przystępny owe zagadnienie? Jak mocno rozbudowaną sieć można stworzyć opierając się na mikro-kontrolerach AVR?

    Implementacja sieci jest w całości BASCOMowa.
    Istnieje stosunkowo dużo stron internetowych poświęconych tej tematyce.
    Co do stopnia rozbudowania sieci to zależy np. od ilości pamięci w AVR. Trudno mi powiedzieć na ile optymalna jest moja implementacja, ale sieć asemblerowa mogła by ważyć mniej. Wydaje mi się, że górną granicą dla 128KB jest sieć złożona z ok 100 neuronów, ale to zależy też od samej topologii sieci i liczby synaps.


    --- dodano ---

    lemgo napisał:
    Skąd się bierze/kupuje historyczne dane meteo?

    Na przykład z IMGW - odpłatnie. Warto pamiętać, że bazy tego typu często bywają niekompletne (brakuje czasem po kilka godzin w miesiącu).

    djkomprez napisał:
    Co do sieci NN, jak koledzy wspomnieli wcześniej, taka prognoza ma się nijak do prognozy meteo, Ty wyliczasz wypadkową i to przeanalizowana wg. archiwalnych pomiarów. To Ci nic nie da. Prawda jest taka że sami prognozy nie przewidzimy za pomocą standardowych obliczeń. Do tego buduje się specjalistyczne modele pogodowe, które i tak czasem zawodzą tak więc sam sobie możesz odpowiedzieć na sprawdzalność Twojej temperatury.


    Nie znam wzoru na jutrzejszą temperaturę. Pewnie takie wzory mają zastosowane w ogromnych wielowęzłowych modelach pogodowych.
    Gdybym znał obliczenia pomocne w prognozowaniu, to bym nie przyuczał do tego sieci neuronowej. Nie chodzi mi tu o statystyczne metody prognozowania, ale konkretnie o prognozowanie temperatury. Jak napisałem wcześniej, sieć nie odtwarza wzorców temperatury z przeszłości. Miała okazję wyuczyć się zależności między temperaturą historyczną a przyszłą. Wykrywanie i uczenie się zależności to jedna z podstawowych zdolności sieci neuronowych. Jeśli istnieje zależność między temperaturą przeszłą a przyszłą to sieć ją w końcu znajdzie (jedną lub więcej) i zapamięta (na etapie nauki) nawet jeśli człowiek takiej nie dostrzeże. Dlatego zastosowana w projekcie sieć nie dokonuje analizy statystycznej bazy klimatologicznej, ale w procesie uczenia ją ogląda i wyrabia sobie "intuicję" pomocną w prognozowaniu. W przypadkach w których nie znamy wzoru określającego jakieś zjawisko warto czasem stosować sieci neuronowe.
    Moja sieć jest dla mnie dowodem, że istnieje zależność między temperaturą przeszłą, a przyszłą. Co do sprawdzalności prognozy, to może nie jest ona doskonała (żadna nie jest) i z pewnością odstaje od metod opartych na modelach pogody ale biorąc pod uwagę stosunek dokładności do liczby czujników to jest ona zaskakująco dokładna. Nie próbuję idealizować tego systemu. Poświęciłem więcej czasu na sprawdzanie wiarygodności prognozy niż na tworzenie całej sieci i nadal ją testuję.W większości przypadków, gdy nakładałem dane empiryczne na prognozowane, widać było, że temperatura prognozowana jest lekko spłaszczana (o ułamek °C) tzn. zawyża temperaturę minimalną, a zaniża maksymalną. Za to czas w którym temperatura wzrasta lub spada prognozowany jest trafnie. Prognozy obarczone największym błędem, to takie w których temperatury maksymalne i minimalne wskazywane były prawidłowo, ale prognoza była przesunięta o około godzinę względem danych rzeczywistych (np. o godz 7 było 5°C gdy prognoza wskazywała 9°C, a o godzinie 8 było 9°C).
    Osobiście uważam, że przyszła temperatura zależy poza dzisiejszą temperaturą od ruchu mas powietrza (jak ktoś już wspomniał), czyli prądów i frontów, zmian ciśnienia, wilgotności i pory roku, więc zdziwiło mnie to, że udało mi się uzyskać dokładność lepszą niż 5°C opierając się na samej temperaturze.


    szulat napisał:
    ciekawe jak wypadłoby porównanie z następującym "algorytmem" prognozującym zawartym w jednym zdaniu: "jutro będzie tak jak dziś"
    ewentualnie druga wersja: również przewiduje że temperatura będzie taka jak poprzedniego dnia o tej samej godzinie, ale koryguje prognozę o takie samo przesunięcie o jakie obecna temperatura różni się od dnia poprzedniego

    Wydaje się, że taki algorytm może zwracać całkiem małe błędy podczas stabilnej pogody, ale duże podczas dynamicznych zmian (fronty, okres burzowy).
    W wielu przypadkach pewnie wystarczy przybliżony obraz rozkładu temperatury na dany dzień, więc trudno stwierdzić czy metody statystyczne czy inteligentne się lepiej nadają do prognozowania pogody. Możliwe, że metoda statystyczna da bardziej sprawdzalną prognozę podczas stabilnej pogody, a metoda inteligenta lepiej sobie poradzi z pogodą dynamiczną (jeśli wczoraj było zimniej niż dzisiaj, to nie znaczy, że jutro będzie cieplej).
  • #36
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #37
    pidpawel
    Poziom 26  
    W jaki sposób przekazujesz dane do sieci neuronowej? W zastosowaniach bardziej statycznych (rozpoznawanie języka po analizie częstotliwości występowania liter) można przypisać konkretnym neuronom konkretne literki. A tutaj, gdzie zmienia się czas i całość, jakby, się "przesuwa"?
  • #38
    miono
    Poziom 15  
    Na wyświetlaczu powinna się wyświetlać historia prognozy tak żeby można porównać rzeczywiste wskazania z prognozą w ten sposób można by ocenić na ile wiarygodna jest ta prognoza. Po za tym na podstawie samej temperatury to nie da się zrobić prognozy. Sieć neuronowa się nauczy żeby prognozować pogodę taką samą jak była dnia poprzedniego :) Trzeba dodać inne czujniki żeby to miało jakikolwiek sens.
  • #39
    drzasiek
    Specjalista - Mikrokontrolery
    Skoro "naumiane" to zostało wcześniej i wgrane na sztywno do flash'a, dodatkowo sieć się nie doucza to to jest raczej tylko inteligentny program, który z każdym kolejnym dniem staje się mniej inteligentny a nie sztuczna inteligencja ;/
  • #41
    Brutus_gsm
    Poziom 25  
    Ja po prostu proponuje zrobić zdjęcie, na którym widać prognozowaną temperaturę, a po 24h zrobić zdjęcie, na którym będzie widać temperaturę ostatniej doby. Zobaczmy na ile (chociaż "na oko") się pokrywają. Tak będzie najprościej ;)

    Mi się podoba, to nie ma zastąpić dziesiątek superkomputerów, które prognozują pogodę, po prostu ma robić więcej niż większość stacji pogodowych za 20zł z bazaru.

    Pozdrawiam i czekam na zdjęcia ;)
  • #42
    dondu
    Moderator Mikrokontrolery Projektowanie
    Projekt OK, itd. itp, ale przewidywanie pogody, za pomocą tak niewielkiej ilości danych jakie ma ta stacja do wykorzystania, nie da żadnych podstaw do jej przewidywania. Ale oczywiście dla celów samorozwojowych taka próba jak najbardziej super :)
  • #43
    marek1846
    Poziom 14  
    Mnie zastanawia jeszcze jedna sprawa. Sposób pomiaru aktualnej temperatury. Z dołączonych zdjęć widać, że od minimum temperatura gwałtownie rośnie a po okresie względnej stabilności gwałtownie opada by w nocy być znowu w miarę stabilna. To sugeruje, że czujnik jest wystawione na bezpośrednie działanie promieni słonecznych.
    Wracając do głównego nurtu dyskusji dodam, że wybranie prognozowania temperatury dla testowania działania sieci neuronowej uważam za niezbyt trafione. Wydaje mi się, że lepsze byłoby prognozowanie indeksów giełdowych, lepsze i bardziej opłacalne. Dostępność wszystkich wskażników, teoretycznie wpływających na prognzę bez porównania większa
  • #44
    ikko
    Poziom 12  
    lukkk napisał:
    Czytając wypowiedzi ciekawi mnie jak by wypadała prognoza oparta o "pełniejszy" zestaw parametrów. Chodzi o ciśnienie, wilgotność,opady, wiatr, księżyc (faza, itd.), data (pora roku, itd.), zapylenie, nasłonecznienie. Jak
    dobrze zrozumiałem można zwiększyć ilość parametrów wejściowych (oczywiście jest problem z dostępem do danych). Czy myślisz o takim rozbudowaniu sieci :?:

    Myślę o rozbudowaniu sieci i dodaniu kolejnych czujników. Wtedy możliwa byłaby
    prognoza nie tylko temperatury, ale też np. ciśnienia czy wilgotności. Ciekawi mnie w jakim stopniu podniesie się wtedy sprawdzalność prognozy. Ewentualna rozbudowa zależy od czasu i zgromadzenia odpowiednich baz danych. Chciałbym też w przyszłości dodać systemowi "oko" (jakiś system z kamerą fotografującą całe niebo co jakiś czas), czyli oprzeć się na analizie fotografii nieba. Chodzi o jakąś metodę klasyfikacji chmur mającą na celu np. wykrywanie nadchodzących frontów. Do tego celu musiałbym najpierw przygotować spory katalog chmur. Skoro dobry meteorolog spoglądając co jakiś czas w niebo, wie co będzie jutro, to taki pomysł ma szansę na powodzenie.

    pidpawel napisał:
    W jaki sposób przekazujesz dane do sieci neuronowej? W
    zastosowaniach bardziej statycznych (rozpoznawanie języka po analizie
    częstotliwości występowania liter) można przypisać konkretnym neuronom konkretne literki. A tutaj, gdzie zmienia się czas i całość, jakby, się "przesuwa"?

    Neurony sensoryczne są opóźnione czasowo. Do każdego neuronu dochodzą informacje z różnym opóźnieniem. Dzięki temu sieć neuronowa dysponuje pamięcią historii temperatury.

    miono napisał:
    Sieć neuronowa się nauczy żeby prognozować pogodę taką samą jak była dnia poprzedniego :)

    Na tym etapie to nie powinienem wykluczać, że tego się właśnie nauczyła. Podczas procesu uczenia, sieć sama sobie doszła do tego co daje prognozie największą sprawdzalność. Weryfikując prognozy zauważyłem jednak, że sieć często potrafi przewidzieć ochłodzenie lub ocieplenie w sytuacjach kiedy intuicja sugeruje coś innego.

    marek1846 napisał:
    Mnie zastanawia jeszcze jedna sprawa. Sposób pomiaru aktualnej temperatury. Z dołączonych zdjęć widać, że od minimum temperatura gwałtownie rośnie a po okresie względnej stabilności gwałtownie opada by w nocy być znowu w miarę stabilna. To sugeruje, że czujnik jest wystawione na bezpośrednie działanie promieni słonecznych.

    Historia temperatury na wykresie jest rysowana na podstawie wartości uśrednionych (wykres jest budowany ze średnich 20 minutowych). To zwiększa bezwładność czujnika, chroniąc pomiar przed błędami, spowodowanymi chwilowymi podmuchami wiatru lub naświetleniem słonecznym.
  • #45
    And!
    Admin grupy Projektowanie
    Np. tutaj masz dane pogodowe:
    Link

    Ciekaw jestem jak sieć odpowie na:
    sinus, prostokąt, trójkąt, i piłę,
    ciekawy byłby też przebieg sinus o zwiększającej się częstotliwości.
  • #46
    pidpawel
    Poziom 26  
    Code:
                      Temp     Hi    Low   Out    Dew  Wind  Wind   Wind    Hi    Hi   Wind   Heat    THW                Rain    Heat    Cool    In     In    In     In   Wind  Wind    ISS   Arc.
    
      Date    Time     Out   Temp   Temp   Hum    Pt. Speed   Dir    Run Speed   Dir  Chill  Index  Index   Bar    Rain  Rate    D-D     D-D    Temp   Hum    Dew   Heat  Samp   Tx   Recept  Int.
    11-12-04   0:30    1.9    1.9    1.8    91    0.6  32.2     N  16.09  57.9     N   -4.1    1.9   -4.2  1005.9  0.00   0.0   0.341   0.000   26.8    25    5.1   25.4   702    1    100.0   30

    Może ktoś przetłumaczyć na polski nazwy tych kolumn?
    Przy okazji warto skomentować, które z nich są w ogóle istotne.
  • #47
    And!
    Admin grupy Projektowanie
    Data, czas, temperatura zewnętrzna, temp max, temp min, wilgotność zewnętrzna
    nie wiem, prędkość wiatru, kierunek wiatru, nie wiem aż do Bar czyli ciśnienie.

    Które dane są ważne ? zależy do czego, zwykle trzeba to samemu ustalić.
  • #48
    damiano713
    Poziom 14  
    W jakim formacie przechowywane są wagi neuronów, float czy stałoprzecinkowe?

    Jeżeli stałoprzecinkowe, to coś dużo pamięci wyszło na sieć neuronową. To tylko zwykłe mnożenie :)
  • #49
    ikko
    Poziom 12  
    marek1846 napisał:
    wybranie prognozowania temperatury dla testowania działania sieci neuronowej uważam za niezbyt trafione. Wydaje mi się, że lepsze byłoby prognozowanie indeksów giełdowych, lepsze i bardziej opłacalne. Dostępność wszystkich wskażników, teoretycznie wpływających na prognzę bez porównania większa

    Wybór nieopłacalny nie musi być nietrafionym. Moim zdaniem, takie zastosowanie sieci neuronowej, jest dobrym przykładem edukacyjnym. Prognozowanie indeksów giełdowych nie będzie miało 100% sprawdzalności. Poza tym, trzeba by przewidzieć mniejszy margines oczekiwanych błędów i większe straty emocjonalne. O potencjalnych stratach finansowych się nie wypowiem, ponieważ inną wartość będzie miała dokładność prognozy temperatury dla kasjera a inna dla rolnika.

    szulat napisał:
    powtarzam propozycję porównania wyników NN z trywialnym algorytmem prognozującym że "jutro będzie tak jak dziś", to byłby bardzo dobry test pokazujący w jakim stopniu "inteligencja" pomaga w rozwiązaniu tego problemu.

    And! napisał:
    Ciekaw jestem jak sieć odpowie na:
    sinus, prostokąt, trójkąt, i piłę,
    ciekawy byłby też przebieg sinus o zwiększającej się częstotliwości.

    Sprawdzę to w wolnej chwili i przedstawię odpowiedź zanim powstanie rozbudowana wersja stacji.

    damiano713 napisał:
    W jakim formacie przechowywane są wagi neuronów, float czy stałoprzecinkowe?
    Jeżeli stałoprzecinkowe, to coś dużo pamięci wyszło na sieć neuronową. To tylko zwykłe mnożenie :)

    Ale działa. Szukałem rozwiązań skutecznych. Optymalizację stawiam tu na drugim miejscu. Implementacja sieci powstała na podstawie rysunku odręcznego i nie wiem na ile jest ona optymalna. Trudno mi ocenić czy sieć pochłania dużo czy mało pamięci. Nie porównywałem jej z innymi implementacjami. Mnożenie, dzielenie, dodawanie i logarytmy, też pochłaniają trochę zasobów. Dodam, że dane wejściowe zanim zostaną pokazane sieci neuronowej są poddawane procesowi normalizacji oraz procesowi denormalizacji po jej opuszczeniu.
  • #50
    bipolunipol
    Poziom 19  
    czy można prosić o algorytm sieci neuronowej napisany w Bascomie? Jaka jest jego budowa, jak jest zrealizowana funkcja nauki - ustawiania wag - tj algorytm, jak i całej sieci?
  • #51
    Brutus_gsm
    Poziom 25  
    Sieć uczy się na komputerze, bo ma dużo większe możliwości obliczeniowe. Do mikrokontrolera wrzuca się tylko gotowe wagi neuronów.
  • #52
    bipolunipol
    Poziom 19  
    a w jakim programie do symulacji SN taką naukę można przeprowadzić?
  • #54
    bipolunipol
    Poziom 19  
    Do autora: czy była by możliwość zaprezentowania tutaj kodu sieci neuronowej - jej nauki i mechanizmu wstecznej propagacji błędu w Bascomie? Czy wagi są przechowywane w zmiennych zmiennoprzecinkowych - tj. Single?Jak jest realizowana funkcja przeliczania wag dla aż tylu - 512 - zmiennych? Jak wygląda algorytm owej sieci (w Bascomie pewnie trzeba było mocno działania rozbijać, bowiem Bascom w jednej linii toleruje tylko 2 działania..,. ?
  • #56
    ikko
    Poziom 12  
    bipolunipol napisał:
    czy była by możliwość zaprezentowania tutaj kodu sieci neuronowej - jej nauki i mechanizmu wstecznej propagacji błędu w Bascomie?

    Algorytmu uczenia sieci nie implementowałem w Bascomie. Model sieci powstał w całości na komputerze (PC) i na nim też był uczony. Proces uczenia sieci dla tak dużego zbioru uczącego trwałby zbyt długo na mikrokontrolerze.

    bipolunipol napisał:
    Czy wagi są przechowywane w zmiennych zmiennoprzecinkowych - tj. Single?

    Tak. Wagi synaptyczne są przechowywane w zmiennych typu single.

    bipolunipol napisał:
    Jak jest realizowana funkcja przeliczania wag dla aż tylu - 512 - zmiennych? Jak wygląda algorytm owej sieci (w Bascomie pewnie trzeba było mocno działania rozbijać, bowiem Bascom w jednej linii toleruje tylko 2 działania..,. ?

    Wagi synaps dla każdego z neuronów przeliczane są po kolei. Wszystkie obliczenia porozbijane są na pojedyncze działania. Elementy powtarzalne przypisałem do funkcji (np. funkcja aktywacji neuronu). Wszystkie synapsy umieściłem w różnych tablicach.
  • #57
    macsek
    Poziom 2  
    A czy jest jakieś zabezpieczenie przed błędnym zapisem na karcie pamięci w przypadku odłączenia zasilania układu w trakcie zapisywania danych ?
  • #58
    seba_x
    Poziom 31  
    ikko napisał:

    WYKRES TEMPERATURY:
    W dolnej części ekranu rysowany jest wykres temperatury. Właściwie jest on podzielony na dwa różne wykresy połączone ze sobą: wykres historyczny o zakresie 46 godzin i wykres prognozowany na kolejne 24 godziny.

    Część historyczna prezentuje wartości temperatur z dwóch ostatnich dni.
    Przewija się w miarę upływu czasu w lewo, a nowe wartości pojawiają się przy pionowej linii oddzielającej oba wykresy. Ten wykres przesuwany jest o jeden punkt w lewo co 20 minut. Wtedy dodawany jest kolejny punkt o wartości reprezentującej średnią arytmetyczną z 1200 ostatnich próbek temperatury dokonywanych co jedną sekundę (średnia 20-minutowa). Wykres jest rysowany metodą wielu połączonych ze sobą odcinków (dokładnie 138).
    Podczas każdej aktualizacji wykresu wykonywane jest autoskalowanie. Ustalane są wtedy wartości górnych i dolnych podziałek, a rozdzielczość pionowa ulega zmianie.
    Wykresy są rysowane poprawnie dla wartości temperatur od -40C do +100C.


    Możesz mi wytłumaczyć jak wyliczasz pozycję piksela na wykresie ? Powiedzmy np. że temperatura max to 30 stopni a min 21 stopni aktualna 25 .

    W moim projekcie kombinuję ale wychodzą mi bzdury . W pionie mam do dyspozycji 46 pikseli , skala mi się zmienia w dość dużym zakresie od 0 do 1 stopnia a czasami nawet od -10 do 20 stopnia.
  • #59
    ikko
    Poziom 12  
    macsek napisał:
    A czy jest jakieś zabezpieczenie przed błędnym zapisem na karcie pamięci w przypadku odłączenia zasilania układu w trakcie zapisywania danych ?

    Całość jest zasilana zasilaczem sieciowym, ale na wypadek utraty energii lub jego odłączenia, przełączałaby się na akumulator (jeszcze niezrealizowane).
    Sesja zapisu na kartę jest każdorazowo otwierana przed zapisaniem danych i zamykana po zapisie. Sam zapis trwa względnie krótko więc nie zabezpieczałem go.
    seba_x napisał:
    Możesz mi wytłumaczyć jak wyliczasz pozycję piksela na wykresie ? Powiedzmy np. że temperatura max to 30 stopni a min 21 stopni aktualna 25 .

    W moim projekcie kombinuję ale wychodzą mi bzdury . W pionie mam do dyspozycji 46 pikseli , skala mi się zmienia w dość dużym zakresie od 0 do 1 stopnia a czasami nawet od -10 do 20 stopnia.


    Dla podanego przykładu liczę to mniej więcej tak:
    Liczę rozpiętość temperatury: 30 - 21 = 9 (stopni na wykres)
    Liczę rozdzielczość wykresu: 46 / 9 = 5,11 (pikseli na stopień)
    Liczę współrzędne piksela: 25 - 21 = 4 (ile stopni od początku skali),
    i 4 * 5,11 = 20,44 (zaokrąglam i zapalam 20 piksel od początku skali).
    Teraz wykres będzie odwrócony "do góry nogami".
    Jako, że punkt (0,0) to lewy górny róg, odwracam wykres: 46 - 20 = 26 (zapalam więc piksel 26).
    Chyba nic nie pominąłem.
  • #60
    finger6
    Poziom 11  
    Czy mógłbyś pokazać, algorytmy do obliczania faz księżyca i wschodów/zachodów słońca ?