Witam wszystkich. Jak zrobić (napisać) coś takiego: Do pinu x podłączony jest czujnik ruchu a do pinu y żarówka. Chcę aby żarówka się zapalała np. na 5 min jak czujnik wykryje ruch a gasła dopiero jak przez te 5 min. ruchu nie będzie. Dla znającego C i trochę logiki to pewnie pestka a dla kogoś kto nie ma pojęcia to schody nie do przejścia. A nie chciałbym aby program się zatrzymywał na te 5 min.
Będę bardzo wdzięczny za te kilka linijek programu.
Pozdrawiam
W arduino ide masz prosty przykład blink możesz zmodyfikować kod pod czujnik ruchu i żarówkę.pytanie tylko jak chcesz to pokleic ,żarówka jaka, jaki czujnik itd.
Wysłane z mojego Redmi Note 4 przy użyciu Tapatalka
(20-06-2018, 16:21)zbyszko125 napisał(a): [ -> ]W arduino ide masz prosty przykład blink możesz zmodyfikować kod pod czujnik ruchu i żarówkę.pytanie tylko jak chcesz to pokleic ,żarówka jaka, jaki czujnik itd.
Wysłane z mojego Redmi Note 4 przy użyciu Tapatalka
To bez znaczenia. Czujka ruchu na pinie x robi stan niski lub wysoki. Żarówka sterowana jest przekaźnikiem który ma izolację optyczną od arduino. Blink to nie to. Jak już to coś bardziej "Blink without Delay".
Kurs Forbota chyba jeden z lepszych a nie wiem czy nie najlepszy. Przekaźniki można zastąpić triakiem wraz z optiotriakiem. Przekaźnik stuka, z czasem się zużyje.triak w zasadzie będzie wieczny.
Wysłane z mojego Redmi Note 4 przy użyciu Tapatalka
Wielkie dzięki. Zaczynam analizować kurs! Jak nie ogarnę tematu mogę liczyć na pomoc i ewentualnie kilka wierszy kodu?
Pozdrawiam
(21-06-2018, 10:01)OMK napisał(a): [ -> ]mogę liczyć na pomoc i ewentualnie kilka wierszy kodu?
Pomoc, oczywiście. Umieść kod na forum, z pewnością znajdziesz pomocną dłoń. Jeśli natomiast chce, aby za ciebie napisano program, daj ogłoszenie, napisz jaki czas realizacji za jakie wynagrodzenie. Z pewnością znajda sie chętni.
W programie musisz zadeklarować wejście i wyjście. W pętli sprawdzaj czy wejście jest aktywne, jesli tak, zeruj licznik. Licznik zwiększaj co sekunde o jeden. Gdy osiągnie zadany czas, wyłączasz wyjście, jeśli licznik ma mniejszą wartość wyjście uaktywniasz. Na początek liczenie możesz zrobic najprościej jak sie da, czyli
Kod:
void loop{
licznik++;
Delay( 1000 );
}
Później jednak, lepiej użyc biblioteki "timer" lub funkcji millis ale ta ma mały błąd. Licznik przepełnia się po oo 72 dniach o ile pamiętem.
Pomóżcie mam coś takiego w tej chwili i teraz nie wiem jak zrobić aby jak na "D5" jest LOW to na "D1" przez np. 5 min jest HIGH liczone od ostatniego impulsu LOW na "D5"
Wykasowałem swoje wypociny w millis bo niestety nic mi nie udawało się. Wiem że w Blynk jest jakiś timer ale nie potrafię go też użyć .
Poprawi mi ktoś fragment od gwiazdki do gwiazdki ? Pozdraawiam
=========================================================
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "xxxxxxxxxxxxxxxxxxxx;
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "YYYYYYYYY";
char pass[] = "12345678";
int val = 0;
int val2=0;
int onoff=0;
unsigned long aktualnyCzas = 0;
unsigned long zapamietanyCzas = 0;
unsigned long zapamietanyCzas2 = 0;
void setup()
{
// Debug console
Serial.begin(9600);
//Blynk.begin(auth, ssid, pass);
// You can also specify server:
Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 8442);
pinMode(D1, OUTPUT);
pinMode(D5, INPUT);
digitalWrite(D2, LOW);
digitalWrite(D1, LOW);
}
void loop()
{
aktualnyCzas = millis();
Blynk.run();
Blynk.setProperty(V5, "color", "#8AB2FC");
onoff = digitalRead(D5);
val = digitalRead(D3);
if (val>=1) {(val=255);}
Blynk.virtualWrite(V5, val);
************************************************************************************
{ if (digitalRead(D5) == LOW) {
digitalWrite(D1, HIGH);
zapamietanyCzas2 = aktualnyCzas - zapamietanyCzas;
}
else
{digitalWrite(D1, LOW);
}
if (digitalRead(D5) == HIGH) {zapamietanyCzas = aktualnyCzas;}}
**************************************************************************
}
Wywarzasz otwarte drzwi. Wystarczy, że otworzysz przykład z blinkiem bez delay, wywalisz wszystko co jest do migania led, wstawisz w środek zmienną S, którą będziesz zwiększał o 1 (jeśli jest mniejsza równa 300, lub jakaś stała zmienna definiowana, jakbyś chciał sobie szybko zmienić ten czas), zamiast wywalonej zmiany stanu led. Jak zmienna S przekroczy 300 sekund to wyłączasz D1. Włączasz jak odczytasz stan niski (i stan nie był włączony ewentualnie) i zerujesz zmienną S. Wyzerowana S znowu zacznie się zwiększać wewnątrz tego tiku co 1s. Potem sobie doklej resztę z BLINK.