Povezivanje alarma s Arduinom. Kućni alarm ili korištenje senzora pokreta i LCD monitora s Arduinom


To su posebne hardverske platforme na temelju kojih možete kreirati razne elektronički uređaji, uključujući i . Uređaji ove vrste razlikuju se po jednostavnom dizajnu i mogućnosti programiranja svojih radnih algoritama. Zahvaljujući tome, alarmni sustav stvoren pomoću Arduina , može se maksimalno prilagoditi objektu koji će štititi.

Što je Arduino modul?

Arduino su implementirani u obliku malih pločica koje imaju vlastiti mikroprocesor i memoriju. Ploča također sadrži set funkcionalnih kontakata na koje možete spojiti razne elektrificirane uređaje, uključujući senzore koji se koriste za sigurnosne sustave.

Arduino procesor omogućuje učitavanje programa koji je sam napisao korisnik. Stvaranjem vlastitog jedinstvenog algoritma možete osigurati optimalne načine rada sigurnosnih alarma za različite objekte i za različitim uvjetima upotrebe i zadatke koje treba riješiti.

Je li teško raditi s Arduinom?

Arduino moduli vrlo su popularni među mnogim korisnicima. To je postalo moguće zbog svoje jednostavnosti i pristupačnosti.

Programi za upravljanje modulima napisani su korištenjem uobičajenog jezika C++ i dodataka u obliku jednostavnih funkcija za upravljanje I/O procesima na pinovima modula. Osim toga, za programiranje se može koristiti besplatni Arduino IDE softver koji radi pod Windows, Linux ili Mac OS.

S Arduino modulima procedura sastavljanja uređaja znatno je pojednostavljena. GSM alarmni sustav na Arduinu može se stvoriti bez potrebe za lemilom - montaža se odvija pomoću matične ploče, skakača i žica.

Kako napraviti alarm pomoću Arduina?

Osnovni zahtjevi koje mora zadovoljiti DIY gsm alarmni sustav kreiran na Arduinu uključuju:

  • obavijestiti vlasnika objekta o provali ili ulasku u objekt;
  • podrška za vanjske sustave kao što su zvučna sirena, svjetla upozorenja;
  • kontrola alarma putem SMS-a ili poziva;
  • autonomni rad bez vanjskog napajanja.

Za izradu alarma trebat će vam:

  • Arduino modul;
  • skup funkcionalnih senzora;
  • ili modem;
  • autonomni izvor napajanja;
  • vanjski aktuatori.

Posebnost Arduino modula je korištenje posebnih ploča za proširenje. Uz njihovu pomoć, na Arduino su povezani svi dodatni uređaji koji su potrebni za sastavljanje konfiguracije sigurnosnog sustava. Takve ploče su instalirane na vrhu Arduino modula u obliku "sendviča", a odgovarajući pomoćni uređaji spojeni su na same ploče.

Kako radi?

Kada se aktivira jedan od povezanih senzora, signal se prenosi na procesor Arduino modula. Koristeći preuzeti korisnički softver, mikroprocesor ga obrađuje prema određenom algoritmu. Kao rezultat toga, može se generirati naredba za rad vanjskog aktuatora, koja mu se prenosi preko odgovarajuće ploče sučelja za proširenje.

Kako bi se osigurala mogućnost slanja signala upozorenja vlasniku kuće ili stana koji je zaštićen, poseban GSM modul povezan je s Arduino modulom preko ploče za proširenje. U njemu je instalirana SIM kartica jednog od pružatelja usluga mobilna komunikacija.

U nedostatku posebnog GSM adaptera, obični adapter može obavljati svoju ulogu. mobitel. Uz slanje SMS poruka s upozorenjem na alarm i biranje, prisutnost mobilne veze omogućit će vam daljinsko upravljanje GSM alarmnim sustavom na Arduinu, kao i praćenje stanja objekta slanjem posebnih zahtjeva.

"Bilješka!

Za komunikaciju s vlasnikom objekta, osim GSM modula, mogu se koristiti i obični modemi koji omogućuju komunikaciju putem interneta.”

U tom slučaju, kada se senzor aktivira, signal koji obrađuje procesor prenosi se putem modema na poseban portal ili web mjesto. A sa stranice se automatski generira SMS upozorenja ili poruka na povezanu e-poštu.

zaključke

Korištenje Arduino modula omogućit će korisnicima da samostalno dizajniraju GSM alarme koji mogu raditi s različitim funkcionalnim senzorima i kontrolama vanjski uređaji. Zahvaljujući mogućnosti korištenja različitih senzora, funkcije alarma mogu se značajno proširiti i stvoriti kompleks koji će pratiti ne samo sigurnost objekta, već i njegovo stanje. Na primjer, bit će moguće kontrolirati temperaturu u objektu, otkriti curenje vode i plina, isključiti njihovu opskrbu u slučaju nužde i još mnogo toga.

Infracrveni (IR) senzori obično se koriste za mjerenje udaljenosti, ali se mogu koristiti i za otkrivanje objekata. Spajanjem nekoliko IR senzora na Arduino možemo kreirati sigurnosni alarm.

Pregled

Infracrveni (IR) senzori obično se koriste za mjerenje udaljenosti, ali se mogu koristiti i za otkrivanje objekata. IR senzori se sastoje od infracrvenog odašiljača i infracrvenog prijemnika. Odašiljač emitira impulse infracrveno zračenje dok prijemnik detektira bilo kakve refleksije. Ako prijemnik detektira refleksiju, to znači da postoji neki objekt na određenoj udaljenosti ispred senzora. Ako nema odraza, nema ni objekta.

IR senzor koji ćemo koristiti u ovom projektu detektira refleksiju unutar određenog raspona. Ovi senzori imaju mali linearni uređaj uređaj s spregnutim nabojem (CCD), koji detektira kut pod kojim se IR zračenje vraća na senzor. Kao što je prikazano na donjoj slici, senzor odašilje infracrveni puls u prostor, a kada se objekt pojavi ispred senzora, puls se reflektira natrag na senzor pod kutom proporcionalnim udaljenosti između objekta i senzora. Prijemnik senzora detektira i šalje kut, a pomoću te vrijednosti možete izračunati udaljenost.

Spajanjem nekoliko IR senzora na Arduino, možemo napraviti jednostavan sigurnosni alarm. Ugradit ćemo senzore na okvir vrata i pravilnim postavljanjem senzora moći ćemo detektirati kada netko prođe kroz vrata. Kada se to dogodi, izlaz IR senzora će se promijeniti, a mi ćemo otkriti tu promjenu kontinuiranim očitavanjem izlaza senzora pomoću Arduina. U u ovom primjeru znamo da objekt prolazi kroz vrata kada očitanje IR senzora premaši 400. Kada se to dogodi, Arduino će aktivirati alarm. Za resetiranje alarma korisnik može pritisnuti gumb.

Pribor

  • 2 x IR senzor udaljenosti;
  • 1 x Arduino Mega 2560;
  • 1 x zujalica;
  • 1 x gumb;
  • 1 x 470 Ohm otpornik;
  • 1 x NPN tranzistor;
  • skakači.

Dijagram povezivanja

Dijagram za ovaj projekt prikazan je na donjoj slici. Izlazi dvaju IR senzora spojeni su na pinove A0 i A1. Druga dva pina spojena su na 5V i GND pinove. Zujalica od 12 volti spojena je na pin 3 preko tranzistora, a tipka koja se koristi za utišavanje alarma spojena je na pin 4.


Slika ispod pokazuje kako smo zalijepili senzore na okvir vrata za ovaj eksperiment. Naravno, da ga redovito koristite, drugačije biste ugradili senzore.


Montaža

  1. Spojite 5V i GND pinove Arduino ploče na napajanje i GND pinove senzora. Također ih možete opskrbiti vanjskim napajanjem.
  2. Spojite izlazne pinove senzora na pinove A0 i A1 Arduino ploče.
  3. Spojite pin 3 Arduina na bazu tranzistora preko otpornika od 1 k ohma.
  4. Primijenite 12V na kolektor tranzistora.
  5. Spojite pozitivni kabel zujalice od 12 volti na emiter, a negativni kabel na sabirnicu za uzemljenje.
  6. Spojite pin 4 na pin 5V preko gumba. Iz sigurnosnih razloga, kako bi se izbjegao veliki protok struje, uvijek je bolje to učiniti kroz dodatni mali otpornik.
  7. Spojite Arduino ploču na svoje računalo putem USB kabela i učitajte program u mikrokontroler koristeći Arduino IDE.
  8. Napajanje Arduino ploče pomoću napajanja, baterije ili USB kabela/

Kodirati

const int zujalica=3; // pin 3 je izlaz za zujalicu const int pushbutton=4; // pin 4 je ulaz za gumb void setup() ( pinMode(buzzer,OUTPUT); // postavi pin 3 na izlaz pinMode(pushbutton,INPUT); // postavi pin 4 na ulaz) void loop() ( / / očitajte izlaz oba senzora i usporedite rezultat s vrijednošću praga int sensor1_value = analogRead(A0); int sensor2_value = analogRead(A1); if (sensor1_value > 400 || sensor2_value > 400) ( while(true) ( ​​​​digitalWrite(buzzer,HIGH) ; // uključi alarm if(digitalRead(pushbutton) == HIGH) break; ) ) else ( digitalWrite(buzzer,LOW); // isključi alarm ) )

Video


Kako napraviti jednostavan GSM alarmni sustav koristeći SIM800L i Arduino za garažu ili vikendicu. Izrađujemo ga sami koristeći gotove module iz Aliexpressa. Glavni moduli– GSM modul SIM800L, Arduino Nano (možete koristiti bilo koji Uno itd.), padajuća ploča, baterija od mobitel.

Riža. 1. Izgled modula protuprovalni alarm na Arduinu

Proizvodnja alarma

Montiramo na maketa kroz jastučiće, što će vam omogućiti zamjenu modula ako je potrebno. Uključite alarm napajanjem od 4,2 volta preko prekidača na SIM800L i Arduino Nano.



Kada se pokrene prva petlja, sustav prvo poziva prvi broj, zatim odustaje od poziva i ponovno poziva drugi broj. Drugi broj je dodan samo u slučaju da se prvi iznenada prekine itd. Kada se aktivira druga, treća, četvrta i peta petlja, šalje se SMS s brojem aktivirane zone, također na dva broja. Shema i skica za zainteresirane su u opisu ispod videa.
Svu elektroniku postavljamo u odgovarajuće kućište.



Ako vam nije potrebno 5 kabela, spojite 5V Arduino pin na br potrebne inpute. GSM alarmni sustav s 5 petlji i baterijom, koji će omogućiti autonomni rad uređaja nekoliko dana, čak i pri nestanku struje. Na njih možete spojiti bilo koje sigurnosne kontaktne senzore, relejne kontakte itd. Kao rezultat toga dobivamo jednostavan, jeftin, kompaktan sigurnosni uređaj za slanje SMS-a i biranje na 2 broja. Može se koristiti za zaštitu vikendice, stana, garaže itd.

Više detalja u videu

Danas ćemo razgovarati o tome kako ga koristiti Arduino prikupiti sigurnosni sustav. Naše “osiguranje” će čuvati jedan krug i kontrolirati jednu sirenu.

Za Arduino to nije problem, a kao što ćete vidjeti iz programskog koda i dijagrama uređaja, lako možete povećati broj zaštićenih pristupnih točaka i broj uređaja za obavještavanje ili indikaciju.
Sigurnosni sustav može se koristiti za zaštitu i velikih objekata (zgrada i objekata), i malih predmeta (kutije, sefovi), pa čak i prijenosnih torbi i kofera. Iako s ovim potonjim morate biti oprezni, ako instalirate sigurnosni sustav, primjerice, na kofer s kojim ste odlučili putovati, a sustav za upozorenje vam se upali na nekom aerodromu, onda mislim da ćete imati ozbiljan razgovor s lokalna zaštitarska služba :-)

Pojednostavljeni princip rada uređaja je sljedeći (slika 1). Nakon uključivanja napajanja, uređaj prelazi u način rada i čeka na aktiviranje. Aktiviranje i deaktiviranje vrši se jednim gumbom. Za povećanje sigurnosti, bolje je staviti ovaj gumb unutar zaštićenog prostora (sef ili kutija). Prije uključivanja sigurnosnog načina, vrata se moraju lagano otvoriti. Kada uključite sigurnosni način (pritisnite gumb) elektronički sklopčeka dok zatvorite vrata sobe (vrata sefa, poklopac kutije itd.).

Granični prekidač bilo koje vrste mora biti instaliran na vratima (ili vratima), više o tome kasnije. Zatvaranjem (ili otvaranjem), granična sklopka će obavijestiti uređaj da je zaštićeni krug zatvoren, a uređaj će prijeći u sigurnosni način rada. Sustav će vas obavijestiti o ulasku u sigurnosni način s dva kratka signala (kao u auto alarmi). U ovom načinu rada uređaj "hvata" otvaranje vrata. Nakon otvaranja vrata sustav čeka nekoliko sekundi (to je podesiva vrijednost, oko deset sekundi za sobe, jedna ili dvije za boks) da se sigurnosni način isključi; ako se to ne dogodi, uključuje se sirena. Algoritam i krug su dizajnirani na takav način da možete isključiti sirenu samo potpunim rastavljanjem kućišta i isključivanjem napajanja.

Uređaj sigurnosni sustav vrlo jednostavno (slika 2). Na temelju ploče Arduino. Krajnje sklopke spojene su poput obične tipke, preko pull-up otpornika. Zasebno ću se zadržati na krajnjim prekidačima. Oni su ili normalno zatvoreni ili normalno otvoreni. Obični gumb možete uključiti kao granični prekidač, samo što je hod običnog gumba vrlo velik, zazor vrata je obično veći. Stoga je potrebno smisliti neku vrstu potiskivača za gumb i oprugu kako ne bi slomio gumb s vratima. Pa, ako niste previše lijeni, možete otići u trgovinu i kupiti magnetski prekidač (reed prekidač) (slika 3), ne boji se prašine i prljavštine.

Prikladan je i granični prekidač za auto alarme (slika 4). Treba napomenuti da je program napisan za reed prekidač. Na zatvorena vrata njegov kontakt je zatvoren. Ako koristite prekidač za alarm automobila, onda kada su vrata zatvorena, najvjerojatnije će biti otvorena, a na odgovarajućim mjestima u kodu morat ćete promijeniti 0 u 1 i obrnuto.

Kao sirena predlažem korištenje zvučne sirene PKI-1 IVOLGA, proizvedene u Bjelorusiji (slika 5). Napon napajanja 9 - 15 V, radna struja 20 - 30 mA. To mu omogućuje da se koristi s baterijskim napajanjem. Istovremeno, "proizvodi" 95 - 105 dB.

S takvim karakteristikama zvučat će nekoliko desetaka minuta iz baterije Krona. Našao sam ga na internetu za 110 rubalja. Tamo reed prekidač s magnetom košta oko 30 rubalja. Prekidač auto alarma kupljen je u autodijelovima za 28 rubalja. Tranzistor KT315 može se uzeti bilo kojim slovom ili zamijeniti bilo kojim modernim silicijskim tranzistorom male snage odgovarajuće vodljivosti. Ako vam jačina jedne sirene nije dovoljna (tko zna, možda želite da se čuje s mnogo kilometara udaljenosti), možete spojiti nekoliko sirena paralelno ili uzeti jaču, samo u tom slučaju tranzistor morate zamijeniti moćniji (na primjer, poznati sklop tranzistora ULN2003). Kao konektore za spajanje reed prekidača i sirene koristio sam najjednostavnije konektore za audio/video uređaje - cijena na radio tržištu je 5 rubalja. za par.

Tijelo uređaja može se lijepiti zajedno od plastike ili šperploče; ako se štiti ozbiljan objekt, onda je bolje da bude metalni. Za povećanje pouzdanosti i sigurnosti, preporučljivo je staviti baterije ili akumulatore unutar kućišta.

Kako bismo pojednostavili programski kod, nisu korišteni elementi za uštedu energije, a baterije ne traju dugo. Možete optimizirati kod, ili još bolje, radikalno ga preraditi korištenjem obrade događaja prekida i MK mirovanja. U ovom slučaju, snaga iz dvije četvrtaste baterije spojene u seriju (9 V) trebala bi biti dovoljna za nekoliko mjeseci.

Sada kod

// konstante
gumb const int = 12; // pribadača za gumb
const int gerkon = 3; // igla za reed prekidač
const int sirena = 2; // kontrolni pin sirene
const int led = 13; // indikatorska igla
// varijable
int buttonState = 0; // stanje gumba
int gerkonState = 0; // stanje reed prekidača
int N = 0; // deaktiviraj brojač gumba
void setup() (
// upravljačka sirena i indikator - izlaz
pinMode(sirena, IZLAZ);
pinMode(led, IZLAZ); // gumb i reed prekidač - ulazi
pinMode(gerkon, INPUT);
pinMode(gumb, INPUT);
}
void petlja()
digitalWrite(led, HIGH);
while(buttonState= =0)( // petlja čekanja dok ne pritisnemo gumb
buttonState = digitalRead(gumb); // za prebacivanje u sigurnosni način rada
}
digitalWrite(led, LOW);
buttonState = 0; // resetiraj vrijednost gumba
while(gerkonState= =0)( // petlja dok ne zatvorimo vrata

}
kašnjenje (500); // :-)
digitalWrite(sirena, HIGH); // Kod
kašnjenje (100); // indikacije
digitalWrite(sirena, LOW); // omogućiti
kašnjenje(70); // način rada
digitalWrite(sirena, HIGH); // sigurnost
kašnjenje (100); // upozorenje
digitalWrite(sirena, LOW); // zvuk
while(gerkonState= =1)( // pričekajte da se vrata otvore
gerkonState = digitalRead(gerkon);
}
za (int i=0; i<= 5; i++){ // 7,5 секунды на нажатие
buttonState = digitalRead(gumb); // tajni gumb
if (buttonState = = HIGH) ( // pratimo naše - tuđe
N=N+1;
}
kašnjenje (1500); // tajna karakteristika :-)))
}
if (N > 0) ( // najvažnija stvar
digitalWrite(sirena, LOW); // ne pali sirenu
}
drugo(
digitalWrite(sirena, HIGH); // ili uključiti sirenu
}
digitalWrite(led, HIGH); // uključi indikator N = 0;
buttonState = 0;
kašnjenje (15000); // podsjetnik za glupane koji vole
digitalWrite(led, LOW); // pritisnite tipke bez prekida odgode (1000);

Pozdrav svima, danas ćemo pogledati uređaj koji se zove senzor pokreta. Mnogi od nas su čuli za ovu stvar, neki su čak imali posla s ovim uređajem. Što je senzor pokreta? Pokušajmo to shvatiti, pa:

Senzor pokreta ili senzor pomaka - uređaj (uređaj) koji otkriva kretanje bilo kakvih predmeta. Vrlo često se ovi uređaji koriste u sigurnosnim, alarmnim i nadzornim sustavima. Postoji mnogo oblika čimbenika ovih senzora, ali mi ćemo razmotriti modul senzora kretanja za spajanje na ploče Arduino,a konkretno od tvrtke RobotDyn. Zašto ova tvrtka? Ne želim reklamirati ovu trgovinu i njezine proizvode, ali upravo su proizvodi ove trgovine odabrani kao laboratorijski uzorci zbog kvalitetne prezentacije proizvoda krajnjem potrošaču. Dakle, upoznali smo - senzor pokreta(PIR senzor) iz RobotDyn-a:


Ovi senzori su male veličine, troše malo energije i jednostavni su za korištenje. Osim toga, senzori kretanja RobotDyn također imaju kontakte sa sito ekranom, to je naravno mala stvar, ali vrlo ugodna. Pa, oni koji koriste iste senzore, ali samo od drugih tvrtki, ne bi trebali brinuti - svi imaju istu funkcionalnost, pa čak i ako kontakti nisu označeni, pinout takvih senzora lako je pronaći na internetu.

Osnovni, temeljni tehnički podaci senzor pokreta (PIR senzor):

Područje rada senzora: od 3 do 7 metara

Kut praćenja: do 110 o

Radni napon: 4,5...6 Volti

Potrošnja struje: do 50 µA

Bilješka: Standardna funkcionalnost senzora može se proširiti spajanjem svjetlosnog senzora na IN i GND pinove i tada će senzor pokreta raditi samo u mraku.

Inicijalizacija uređaja.

Kada je uključen, senzoru treba gotovo jedna minuta da se inicijalizira. Tijekom tog razdoblja senzor može davati lažne signale; to treba uzeti u obzir pri programiranju mikrokontrolera s senzorom spojenim na njega ili u krugovima aktuatora ako se veza izvodi bez upotrebe mikrokontrolera.

Kut i područje detekcije.

Kut detekcije (praćenja) je 110 stupnjeva, raspon udaljenosti detekcije je od 3 do 7 metara, ilustracija ispod pokazuje sve:

Podešavanje osjetljivosti (udaljenost detekcije) i vremenske odgode.

Donja tablica prikazuje glavne prilagodbe senzora kretanja; s lijeve strane nalazi se regulator vremenske odgode, odnosno u lijevom stupcu nalazi se opis mogućih postavki. Desni stupac opisuje prilagodbe udaljenosti detekcije.


Spajanje senzora:

  • PIR senzor - Arduino Nano
  • PIR senzor - Arduino Nano
  • PIR senzor - Arduino Nano
  • PIR senzor - za svjetlosni senzor
  • PIR senzor - za svjetlosni senzor

Tipični dijagram povezivanja prikazan je na dijagramu ispod; u našem slučaju senzor je prikazan konvencionalno sa stražnje strane i spojen na Arduino Nano ploču.

Skica koja prikazuje rad senzora pokreta (koristimo program):

/* * PIR senzor -> Arduino Nano * PIR senzor -> Arduino Nano * PIR senzor -> Arduino Nano */ void setup() ( //Uspostavite vezu s monitorom priključka Serial.begin(9600); ) void loop( ) ( //Očitajte vrijednost praga s priključka A0 //obično je veća od 500 ako postoji signal if(analogRead(A0) > 500) ( //Signal sa senzora kretanja Serial.println("Postoji kretanje! !!"); ) else ( / /Nema signala Serial.println("Sve je tiho..."); ) )

Skica je uobičajeni test rada senzora pokreta; ima mnogo nedostataka, kao što su:

  1. Mogući lažni alarmi, senzor zahtijeva samoinicijalizaciju unutar jedne minute.
  2. Čvrsto vezanje na port monitor, bez izlaznih pokretača (relej, sirena, LED indikator)
  3. Vrijeme signala na izlazu senzora je prekratko, kod detekcije pokreta potrebno je programski odgoditi signal na duže vrijeme.

Kompliciranjem kruga i proširenjem funkcionalnosti senzora možete izbjeći gore opisane nedostatke. Da biste to učinili, morat ćete nadopuniti krug relejnim modulom i spojiti običnu 220-voltnu svjetiljku kroz ovaj modul. Sam relejni modul bit će spojen na pin 3 na Arduino Nano ploči. Dakle, shematski dijagram:

Sada je vrijeme da malo poboljšamo skicu koja je testirala senzor pokreta. Na skici će biti implementirana odgoda isključivanja releja, jer sam senzor kretanja ima prekratko vrijeme signala na izlazu kada se aktivira. Program implementira odgodu od 10 sekundi kada se senzor aktivira. Ako želite, ovo vrijeme se može povećati ili smanjiti promjenom vrijednosti varijable DelayValue. Ispod je skica i video cijelog rada sklopljeni sklop:

/* * PIR senzor -> Arduino Nano * PIR senzor -> Arduino Nano * PIR senzor -> Arduino Nano * Relejni modul -> Arduino Nano */ //relout - pin (izlazni signal) za relejni modul const int relout = 3 ; //prevMillis - varijabla za pohranu vremena prethodnog ciklusa skeniranja programa //interval - vremenski interval za brojanje sekundi prije gašenja releja unsigned long prevMillis = 0; int interval = 1000; //DelayValue - period tijekom kojeg se relej drži u uključenom stanju int DelayValue = 10; //initSecond - varijabla iteracije petlje inicijalizacije int initSecond = 60; //countDelayOff - brojač vremenskog intervala static int countDelayOff = 0; //okidač - zastavica okidača senzora kretanja static bool okidač = false; void setup() ( // Standardni postupak inicijaliziranje priključka na koji je spojen relejni modul //VAŽNO!!! - kako bi relejni modul ostao u inicijalno isključenom stanju //i ne bi se aktivirao tijekom inicijalizacije, morate upisati VISOKU vrijednost na ulazno/izlazni port //, time ćete izbjeći lažno "klikanje" i // zadržati stanje releja kakvo je bilo prije uključivanja cijelog kruga u rad pinMode(relout, OUTPUT); digitalWrite(reout, HIGH); //Ovdje je sve jednostavno - čekamo da završi 60 ciklusa (varijabla initSecond) //u trajanju od 1 sekunde, za koje vrijeme se senzor "samoinicijalizira" za (int i = 0; i< initSecond; i ++) { delay(1000); } } void loop() { //Считать значение с аналогового порта А0 //Если значение выше 500 if(analogRead(A0) >500) ( //Postavi zastavicu okidača senzora kretanja if(!trigger) ( trigger = true; ) ) //Dok je zastavica okidača senzora kretanja postavljena while(okidač) ( //Izvrši slijedeći upute//Spremi u varijablu currMillis //vrijednost milisekundi koje su prošle od početka //izvršenja programa unsigned long currMillis = millis(); //Usporedi s prethodnom vrijednošću milisekundi //ako je razlika veća od navedenog intervala, tada: if(currMillis - prevMillis > interval) ( //Spremi trenutnu vrijednost milisekundi u varijablu prevMillis prevMillis = currMillis; // Provjerite brojač kašnjenja uspoređujući ga s vrijednošću razdoblja / /tijekom kojeg relej treba držati u UKLJUČENOM stanju if(countDelayOff >= DelayValue) ( ​​​​//Ako je vrijednost jednaka, tada: //resetirajte zastavica okidača senzora kretanja trigger = false; //Poništi brojač kašnjenja countDelayOff = 0; // Isključi relej digitalWrite(relout, HIGH); //Prekini prekid petlje; ) else ( //Ako je vrijednost i dalje manja, zatim //Povećajte brojač kašnjenja za jedan countDelayOff ++; //Držite relej u uključenom stanju digitalWrite(relout, LOW ); ) ) ) )

Program sadrži sljedeću strukturu:

unsigned long prevMillis = 0;

int interval = 1000;

...

unsigned long currMillis = millis();

if(currMillis - prevMillis > interval)

{

prevMillis = currMillis;

....

// Naše operacije su zatvorene u tijelu strukture

....

}

Da pojasnimo, odlučeno je zasebno komentirati ovaj dizajn. Tako, ovaj dizajn omogućuje izvođenje paralelnog zadatka u programu. Tijelo strukture radi otprilike jednom u sekundi, što je olakšano varijablom interval. Prvo, varijabla currMillis dodjeljuje se vrijednost vraćena prilikom pozivanja funkcije millis(). Funkcija millis() vraća broj milisekundi koje su prošle od početka programa. Ako razlika currMillis - prevMillis veća od vrijednosti varijable interval onda to znači da je već prošlo više od jedne sekunde od početka izvođenja programa, te trebate spremiti vrijednost varijable currMillis u varijablu prevMillis zatim izvršite operacije sadržane u tijelu strukture. Ako razlika currMillis - prevMillis manje od varijabilne vrijednosti interval, tada još nije prošla sekunda između ciklusa skeniranja programa, a operacije sadržane u tijelu strukture su preskočene.

Pa, na kraju članka, video od autora:

Omogućite javascript kako bi komentari radili.