Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 23 gru 2024, o 17:44


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 1 lut 2014, o 21:29 
Offline
Użytkownik

Dołączył(a): 06 lis 2013
Posty: 44
Pomógł: 0

Nie mogę sobie poradzić z załączeniem pinu na stan wysoki na czas1 i wyłączaniem go na czas2. Korzystam z funkcji milis() z forum ale ona włącza i wyłącza stan na ten sam czas a ja potrzebuje dwa rożne czasy. Nawet nie wiem po jakiej frazie mam szukać mojego rozwiązania.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lut 2014, o 21:59 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 09 kwi 2013
Posty: 22
Pomógł: 1

delay(1000);

Wartość w nawiasie w milisekundach.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lut 2014, o 22:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8589
Pomógł: 337

daj sobie delay(200); dla jednego , a dla innego delay(500); co za różnica

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lut 2014, o 22:37 
Offline
Użytkownik

Dołączył(a): 06 lis 2013
Posty: 44
Pomógł: 0

Tyle to wiem ale moje czasy to kilka minut. Dopiero zaczynam ale wydaje mi się że jak da długi delay to w tym czasie blokuje się cały kod?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lut 2014, o 22:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8589
Pomógł: 337

delay zawsze blokuje ....

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lut 2014, o 22:45 
Offline
Użytkownik

Dołączył(a): 06 lis 2013
Posty: 44
Pomógł: 0

To może mała podpowiedź jak się za to zabrać?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lut 2014, o 23:05 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

Definiujesz zmienną, dajmy na to

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
, w której będziesz zapamiętywać moment od którego trzeba zacząć odmierzać czas i stałe czasowe (np. 8 minut)

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
i np. 10 minut

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
. W punkcie czasowym zero zapisujesz timestamp

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Przy każdym obrocie pętli głównej sprawdzasz czy upłynął wymagany okres czasu

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
jeśli tak to robisz co trzeba zrobić i

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
i znów w pętli głównej sprawdzasz czy upłynął, tym razem drugi ocinek czasu

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
jeśli upłynął to robisz co innego i wpisujesz nową wartość tlapsebegin. I tak w kółko.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lut 2014, o 23:42 
Offline
Użytkownik

Dołączył(a): 06 lis 2013
Posty: 44
Pomógł: 0

Czytałem kilka razy i nie za bardzo chyba zrozumiałem. Poniżej to co wywnioskowałem i oczywiście nie działa.
Chciałbym aby mieszał wodę 5 min a przerwy było 10 min.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lut 2014, o 12:11 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

Zmienna tlapsebegin musi zachowywać wartość między wywoływaniami funkcji przerwa(). W tej chwili, jako zmienna automatyczna jest przy każdym wywołaniu funkcji tworzona, z przypadkową wartością i niszczona przy wyjściu. Nic dziwnego więc że nie działa. Zmienna musi być albo statyczna albo globalna. To jedno.
Drugie, że jak już zdefiniujesz własciwą zmienną to w obecnej postaci i tak nie zadziala. Sprawdzasz oba warunki jednocześnie, zauważ, że warunek sprawdzający krótszy interwał nigdy nie pozwoli na spełnienie drugiego warunku. Trzeba sprawdzać raz jeden raz drugi warunek. Urządzenie działa w dwóch stanach: "mieszanie wody", "przerwa w mieszaniu". Kiedy urządzenie jest w stanie "mieszanie wody" trzeba sprawdzać czy upłynęło 5 minut. Kiedy upłynie zapisuje się nową wartość tlapsebegin i zaczyna sprawdzać czy upłynęło 10 minut. I tak w kółko.


Autor postu otrzymał pochwałę

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lut 2014, o 14:43 
Offline
Użytkownik

Dołączył(a): 06 lis 2013
Posty: 44
Pomógł: 0

Dodałem jako zmienne globalne
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

a program wygląda tak
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Wygląda na to że działa tylko chciałbym się upewnić że moje rozwiązanie nie zawiera błędów logicznych na przyszłość.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lut 2014, o 09:19 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

I jeszcze jedno: jeśli urządzenie ma pracować cały czas to trzeba pamiętać, że po ok. 49 dniach licznik millis() się przekręca i jakoś to uwzględnić w programie.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO