Skocz do zawartości

opp34

Użytkownicy
  • Zawartość

    24
  • Rejestracja

  • Ostatnio

Reputacja

16 Dobra

O opp34

  • Ranga
    2/10

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. Projekt powoli idzie do przodu. Od ostatniego wpisu zacząłem przepisywać tryb czasowy, w którym użytkownik podaje terminy podlewania, czas podlewania oraz limity temperatury powietrza i wilgotności ziemi, po przekroczeniu których zadany czas podlewania jest stosownie obniżany lub podwyższany. Od teraz użytkownik wprowadzając termin podlewania podaje też dzień podlewania - cały tydzień, jeden dzień tygodnia, tylko dni robocze lub tylko sobota i niedziela. W tym celu poprawiłem stronę główną aplikacji oraz pop-up służący do definiowania terminów podlewania. Niebiesko-żółte przyciski d
  2. Informację o małych marginesach dopiszę do listy z punktami do zrobienia. Nie jest to aż tak prosta poprawka do wprowadzenia, ponieważ wymagałoby to też przesunięcia innych elementów - na załączonych zrzutach tego nie zaobserwujecie, w rzeczywistości jest jeszcze jedna opcjonalna kolumna, w której pojawiają się wartości, które zostały wprowadzone przez użytkownika, a nie zostały jeszcze odczytane przez procesor (jako informacja, że program wciąż pracuje w oparciu o stare ustawienia. W bazie danych są dwie identycznie struktury - wejściowa, do której trafiają wartości wpisane przez operatora, o
  3. Po prawdzie to poprzednia wersja projektu była oparta o elementy do montażu powierzchniowego. Ich lutowanie przyszło mi z trudem - nie posiadam odpowiedniego sprzętu, odpowiedniej praktyki w samym lutowaniu a do tego te elementy są tak małe, że w tej wersji przeszedłem z powrotem na elementy przewlekane. Z przyjemnością zapoznam się z opiniami na temat aplikacji - jest to pierwsza aplikacja na Androida, którą sam stworzyłem, posiadam też niewielkie obycie z projektowaniem interfejsu użytkownika. W przypadku trójkąta, jest to Floating Action Button, który jest scalony z Action Bar (paskie
  4. Pozwolę sobie na przedstawienie postępu prac w tym temacie – założyłem go, licząc na opinie i uwagi od społeczności, a ten strumyk stosunkowo szybko wysechł. Tak czy inaczej, dziękuję za udzielone odpowiedzi, obserwacje i podpowiedzi. Od ostatniego wpisu pracowałem nad poprawieniem stabilności programu, zmniejszeniem zajętości pamięci oraz testowałem przełączanie pomiędzy pracą online i offline (serwerem NTP i bazą Firebase a zegarem RTC i pamięcią wewnętrzną SPIFFS). Starałem się też ustabilizować czas cyklu (postawiłem Firebase’a na serwerze europejskim, uporządkowałem program, aby posz
  5. Pewnie nie takiej odpowiedzi oczekiwałeś - uczysz się nie tyle samego sprzętu, co programowania, podejścia i sposobu myślenia. Jak uczysz się jeździć autem, to nie uczysz się jeździć precyzyjnie fiatem 126p, a generalnie poznajesz przepisy i obsługę pojazdów silnikowych. Z tej perspektywy patrząc, płytka, którą zastosujesz, jest prawie bez znaczenia. Jednocześnie bez sensu jest stosowanie złożonych płytek, których taktowanie idzie w GHz, a pamięć jest liczona w setkach MB do przeprowadzenia prostych projektów - dużo za nie zapłacisz, posiadają dziesiątki złączy, opcji i bajerów, których i tak
  6. Powodem jest to, że po pierwszym przyciśnięciu przycisku wpadasz w pętlę while, która jest wykonywana dotąd aż wypełniony jest warunek podany w nawiasie. W Twoim przypadku jest to true. Stąd też program nie jest w stanie opuścić pętli. Proponuję, żebyś poczytał sobie o instrukcji switch lub zastosował proste if. Poniżej przykład z zastosowaniem switcha. switch(buttonState) { case 0: // jeśli buttonState = 0 { Serial.println(“1”); break; // bez tego, jeśli buttonState = 0, wykonałby się też kod przypisany do wartości 1 } case 1: // jeśli buttonState = 1 { Serial.println(“0”);
  7. Chylę czoła przed autorem, że doprowadziłeś projekt do końca, że nie przerwałeś po napotkaniu pierwszych trudności. Czytając opis, powiedziałbym, że ten projekt jest dobrym przykładem, że rzeczywistość jest znacznie bardziej złożona niż się ją prezentuje. Doceniam, że opisałeś nieprawidłowe założenia, popełnione błędy i inne potknięcia – szczególnie, że powszechne jest prezentowanie się jako perfekcyjnych, unikatowych, nieskalanych żadną porażką. Wspomniałeś, że to Twój pierwszy poważny projekt. Przypomniało mi się, jak jednego dnia znalazłem opis innego Pierwszego Projektu, w którym au
  8. Ponownie o sobie przypomnę, odświeżając stan projektu. Od ostatniego czasu testowałem podłączenia czujników analogowych - podłączenie bezpośrednio pod jedyne wejście analogowe, poprzez 74HC4051 oraz za pośrednictwem zewnętrznego przetwornika ADS1015. Było to powodowane tym, że przeczytałem opinię, że działające połączenie WiFi potrafi przeszkadzać w prawidłowej pracy wbudowanego przetwornika. Ostatecznie w trakcie testów się to nie przydarzyło, a pomiar z zastosowaniem ADS1015 nie usprawiedliwia jego ceny, toteż pozostałem przy poczciwym 74HC4051. Zastanawiałem się też nad pracą przy brak
  9. opp34

    DS18b20 z ILI9341 SPI 240x320

    Żeby przesłać informacje do monitora, w setup trzeba zainicjować wymianę danych poprzez Serial.begin(9600). W nawiasie podajesz prędkość transmisji, ważne, żeby po otwarciu monitora w Arduino IDE ustawić tę samą wartość. Do wyświetlania zarówno statycznego tekstu, jak i wartości zmiennych stosuje się funkcje print (wypisuje wartość i nie przechodzi do nowej linii) i println (wyświetla wartość i przechodzi do następnej linii). Przykładowo: Serial.print("tekst"); // w monitorze wyświetli się statyczny tekst, który został podany w nawiasie w cudzysłowie, tj. tekst, program nie przyjdzie
  10. opp34

    DS18b20 z ILI9341 SPI 240x320

    Daj znać, jeśli będą trudności z DS18B20 lub na przykład będziesz potrzebował obsłużyć więcej niż jeden czujnik. Na temat wyświetlacza się nie wypowiem, bo tego typu sprzęt nie stosowałem od dawien dawna i mógłbym tylko wprowadzić w błąd. Jedynie znalazłem ten opis. Wynika z niego, że wyświetlacz pracuje z logiką 3.3V (nie tylko zasilanie, ale też przesyłane sygnały) a arduino z logiką 5V (jeśli ustawisz wyjście w stan wysoki i zmierzysz napięcie, powinno ono wynosić około 5V). Autor wpisu zastosował najprostszą technikę, to znaczy dzielniki napięcia. Innym rozwiązaniem jest konwerter poziomów
  11. opp34

    DS18b20 z ILI9341 SPI 240x320

    Poniżej znajduje się program, który odczytuje pomiar z jednego czujnika DS18B20. Program teoretycznie powinien działać, tym niemniej zaznaczam, że go nie testowałem - przeniosłem fragmenty z innego funkcjonującego projektu. Kod się kompiluje. W setupie sieć 1 wire jest inicjalizowana, odczytywany jest adres czujnika o indeksie 0 oraz ustawiana jest jego rozdzielczość. Potem w loop jest odmierzany czas od ostatniego odczytu, a jeśli przekroczył on ustawiony czas trwania konwersji, wówczas program sprawdza, czy czujnik o podanym adresie znajduje się na sieci. Jeśli tak, następuje odczyt tem
  12. opp34

    DS18b20 z ILI9341 SPI 240x320

    Wiem, że pytanie dotyczyło przede wszystkich wyświetlacza. Ja pozwolę sobie dodać informacje na temat DS18B20. Program jest identyczny, obojętnie jaki jest sposób podłączenia, tj. standardowe z trzema przewodami lub pasożytnicze z dwoma. Jesteś w stanie jedynie odczytać, co wykrywa sieć 1 wire za pomocą isParasitePowerMode(void). Adresy nadane poszczególnym czujnikom możesz odczytać za pomocą funkcji getAddress(DeviceAddress* adres, int index). Podając indeks (numerowany od 0), funkcja zapisuje w tablicy adres czujnika. Nie jest on jednak niezbędnie potrzebny, możesz posługiwać się
  13. Jeśli ja bym to projektował, to pewnie zastosowałbym jakiś stabilizowany zasilacz na 12 V 3 A, który podłączyłbym bezpośrednio do przekaźników i zaczepów oraz do przetwornicy napięcia z napięciem wyjściowym ustawionym na 3.3 V. Przetwornica zasilałaby samo NodeMcu (i zegar RTC, jeśli jest on Tobie potrzebny). Potem łączysz masę obwodu 12 V z 3.3 V. Ogólnie proponuję, żebyś zaczął od narysowania schematu elektrycznego układu, np. w programie Eagle lub KiCad. Będzie znacznie prościej wyłapać ewentualne błędy, a Tobie potem będzie prościej złożyć układ. Natomiast od strony programisty
  14. Na temat przekaźnika przeczytaj sobie tutaj. Jest tam przykład pokazujący, co to znaczy, że przekaźnik jest sterowany stanem niskim. Uproszczając, podajesz zasilanie, które trafia na transoptory poszczególnych przekaźników. Wystawienie sygnału niskiego powoduje przepływ prądu i załączenie przekaźnika. Poza tym przypatrz się, że optoizolacja w przypadku Twojego przekaźnika jest połowicza, ponieważ zasilanie transoptora i obwodu cewki jest zwarte. Tutaj jest przykład przekaźnika, w którym zasilanie transoptora VCC i cewki JD-VCC są odseparowane. Lepszym rozwiązaniem jest, jeśli mikrokontroler i
  15. Trudno jest odpowiedzieć jednoznacznie, ponieważ podanie prostej dyrektywy include z nazwą pliku nagłówkowego nie precyzuje, jaka biblioteka jest potrzebna. Bywa, że nazwy plików w poszczególnych bibliotekach pokrywają się (zazwyczaj są to biblioteki do tych samych zadań, stąd też nie załączasz ich jednocześnie i nie stanowi to problemu). W przypadku tego artykułu zrobiłbym założenie, że chodzi o standardowe biblioteki ESP32 od producenta płytek, firmy Espressif. Pobierz je sobie stąd. Jest to paczka bibliotek, w której znajdziesz SPIFFS (biblioteka do obsługi SPI Flash File System, tj.
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.