Przeszukaj forum
Pokazywanie wyników dla tagów 'pogody'.
Znaleziono 1 wynik
-
Witam, jak to często bywa, początkujący porywa się na gruby projekt 🙂 w tym przypadku też ale ambicje są, gorzej z praktyką i wiedzą 😉 Projekt jaki chcę stworzyć to mikro kontroler z zastosowaniem Mega 2560 do którego podłączone są dwa czujniki DS18B20 na osobnych pinach (by w przypadku uszkodzenia jednego z nich uniknąć ponownego programowania układu, a tutaj akurat znaczenie ma kolejność czujników) dwa wyświetlacze LED 7-segmentowe moduły komunikujące się na 1-wire( układ TM1637); Wyświetlacze na bieżąco podają temperaturę z czujników, przy czym po przekroczeniu nastawnej granicy temperatury dla czujnik drugiego uruchamia się przekaźnik dla lampy sygnalizacyjnej, Od włączenia układu następuje odliczanie od 0 do około 5 minut (300000ms) pod WARUNKIEM że na jednym z pinów jest stan niski (zwarcie z masą poprzez przekaźnik dostający sygnał z zewnętrznego urządzenia) gdy odliczanie dobiegnie do końca poprzez Ethernet shield wysyłane są dane pomiarów do bazy danych gdzieś w sieci lokalnej. po wysłaniu wszystko zaczyna się od początku, czyli zliczanie i kolejne wysyłanie danych. Tak na brudno w notatniku wypisałem sobie: po uruchomieniu programu: -wykrycie czujników ds18b20 na PIN 2 ("temp_in" -temp. wejścia powietrza do chłodzenia) i PIN 3 ("temp_out" -temp.powietrza po schłodzeniu obszaru/produktu); -wyświetlenie wartości "temp_in" na TM1637 wyświetlacz pierwszy jako "DisplayTin" oraz "temp_out" na "DisplayTout" - wyświetlacz drugi. Ze względu na brak znaku kropki wyświetlacza i 9-bit rozdzielczość pomiaru zamiast kropki wyświetlany znak stopni, np dla wartości temperatury 17.0 i 24.5: ---- ---- ---- | | | | | | | | | | | | ---- | | | | | | | | ---- ---- ---- ---- | | | | | | | | | | | | ---- ---- ---- ---- | | | | | | ---- ---- -sprawdzenie warunku jeśli temp_out >= tempALARM (wartość ustawiana i zapamietywana po zaniku zasilania) to na pinie alarmu stan wysoki wyzwalający przekaźnik; -sprawdzenie wciśnięcia przycisku (PINy 30-33) zmiany wartości maksymalnej temperatury na wyjsciu "tempALARM", lub numeru linii produkcyjnej "liniaNr"; -sprawdzenie wartości na wejściu pinu NARAwAuto (aktywne schladzanie w trybie automatycznym) jesli prawda uaktywniene zliczania licznika do 4.5-5min (300000 ms); --po osiąnięciu wartości max licznika 300000 ms uruchomienie funkcji dla EthShield wysyłającej dane pomiaru "temp_in" "temp_out" numer linii produkcyjnej "liniaNr" (ustawiany recznie i zapamietywany) oraz stan wyjscia pinu ALARMtemp; -podczas zmian nastawy tempALARM na wyświetlaczu pojawia się na 5 sekund wartość w postaci: ---- ---- ---- | | | | | | | | O | | ---- ---- ---- | | | O | | | | | | | ---- ---- ---- skok o 1 stopień celciusza, zakres 1 do 50 Dla zmiany numeru linii przykładowo wyświetla: ---- ---- | | | | O | | ---- | O | | | | | ---- ---- skok o 1, zakres od 1 do 63, obie wartości muszą być zapamiętane po zaniku zasilania; a podłączenie pinów mniej więcej tak rozmieszczone: /* informacje pinologii pin 0 pin 1 pin 2 DS18B20data temp_in //wejsciowa temp powietrza nr.1 pin 3 DS18B20data temp_out //temp po wyjsciu nr.2 pin 4 SDCardShield SS //SlaveSelect pin 5 CLK1 out //zegar dla wyswietlacza 1 na tm1637 pin 6 DIO1 out //dane dla wysw.1 pin 7 CLK2 out //zegar dla wyswietlacza 2 na tm1637 pin 8 DIO2 out //dane dla wysw.2 pin 9 ALARMtemp out relay //po przekroczeniu nastawionej temp alarm na buzzer/sygnalizator swietlny przez przekaznik pin 10 ETH SS Mega2560 pin 53 //SlaveSelect wybrannie ukladu perferyjnego eth/sd pin 11 ETH MOSI Mega2560 pin 50 //dane do ukladu pin 12 ETH MISO Mega2560 pin 51 //dane z ukladu pin 13 ETH SCK Mega2560 pin 52 //sygnal zegara pin 25 NARAwAuto in zRelay //zwarcie do masy po zapodaniu 24V z Nary do przekaznika pin 27 SendTemp_LED (Mega2560) //wyslanie danych do bazy danych info LED pin 30 keyENT lub keyAL_down pin 31 keyEXIT lub keyAL_up pin 32 keyDN lub keyLN_down pin 33 keyUP luk keyLN_up */ Dla pin 30-33 nie jestem pewien rozwiązania, czyli czy zrobić menu, i przeskakiwanie po wartościach nastawianych czyli temp. maxymalna i wyzwalanie alarmu plus numer linii/urządzenia pomiarowego. Czy na sztywno przyporządkować dany przycisk pod zwiększanie/zmniejszanie parametru pierwszego i drugiego. Co będzie lepszym rozwiązaniem? Znalazłem na forum temat myślę że nada się idealnie ta biblioteka dla mnie, jeden wątek na rozpoznanie czujników i wyświetlenie ich na wyświetlaczach + sprawdzenie wartości temp alarmu, drugi watek sprawdzający wciśnięcie jednego z przycisków i ewentualną zmianę wartości i jej zapisanie do pamięci, trzeci wątek odliczający ten czas 5 min (+czas na wykonanie pozostałych wątków) i po zakończeniu wysłania danych zresetowanie licznika. W obecnej chwili udało mi się ujarzmić wyświetlanie dwóch wyświetlaczy na bibliotece TM1637Display.h , kolejny krok którym się zajmuje to wyświetlanie wartości czujników na osobnych modułach. Następnie dodanie możliwości zmiany parametrów z przycisków. Jak się to uda to jestem w 1/3 drogi do sukcesu. Czy jakieś porady na początek, na co uważać, lub do samego zamysłu działania?