Arduino Polska Forum

Pełna wersja: Pomocy w napisaniu programu
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Stron: 1 2
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".
Brawo, a tu jest o tym artykuł. polecam cały kurs: https://forbot.pl/blog/kurs-arduino-ii-w...is-id18418 .
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
Warto przebrnąć przez kurs Forbota. Co do układu z triakiem tu masz link do opisu i sxhematu http://elektro--hobby.blogspot.com/2016/...m.html?m=1

Wysłane z mojego Redmi Note 4 przy użyciu Tapatalka
(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.
Stron: 1 2