Arduino HC-SR04 modul

Arduino HC-SR04 modul
2016-04-13T02:34:29+02:00
2016-04-13T20:28:16+02:00
2022-12-03T13:50:39+01:00
xlyer
Üdv!

Arduino UNO-val és egy/kettő HC-SR04 modullal szeretnék egy mozgásérzékelő rendszert létrehozni.
Jelenleg a programom úgy van megírva, hogy pl. van 2 egymástól 200 centire levő fal. A modul a távolságot méri és hogyha 200 cm helyett pl. csak 150 van mert odanyúlok akkor csinál valamit, jelenleg ledeket kapcsol fel. 

Viszont úgy szeretném, hogy ne kelljen beállítani konkrét távolságot hanem ha távolság változás történik akkor csináljon valamit. Ezt hogy lehetne megcsinálni?
Előre is köszönöm!


Jelenlegi kód:

const int trigPin = 12;
const int echoPin = 13;

void setup() {

Serial.begin(9600);
pinMode(7,OUTPUT);
pinMode(6,OUTPUT);
}

void loop()
{

long duration,cm;

pinMode(trigPin, OUTPUT);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);


pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);

cm = microsecondsToCentimeters(duration);

Serial.print(cm);
if (cm<200)
{
Serial.println("Lights");
digitalWrite(7,HIGH);
digitalWrite(6,HIGH);
delay(1000);
}
else
{

digitalWrite(7,LOW);
digitalWrite(6,LOW);
}
Serial.print("cm");
Serial.println();

delay(10);
}


long microsecondsToInches(long microseconds)
{
return microseconds / 74 / 2;
}

long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}
Mutasd a teljes hozzászólást!
Szia!

Nem tudom pontosan mit szeretnél, de szerintem olyasmi is jó lehet, hogy csinálsz egy változót: RegiTavolsag, meg UjTavolsag, hibahatar. Kezdetben pl a RegiTavolsag=200cm, UjTavolsag=0cm, hibahatar=1 (A setup-ban)

A loopb-an meg lekéred a távolságot, amit átadsz az UjTavolsagnak.

Utána
if abszolútérték(UjTavolsag-RegiTavolsag)>hibahatar
Csináljon valamit
Ez a megoldás, ha pl a kezedet odateszed és nem remeg akkor csak 1x fog csinálni valamit, azaz csak a változásra lesz érzékeny.

RegiTavolsag=UjTavolsag



Persze arra figyelni kell még pluszban, hogy csak akkor fusson le ez az If is, ha az uj tav mondjuk nagyobb, mint 10 cm, nehogy olyan kicsire fusson, hogy annál kisebbet már nem tudsz produkálni, amitől nem lesz használható!
Mutasd a teljes hozzászólást!

  • Definiáld, hogy mit értesz ez alatt:
    "hanem ha távolság változás történik akkor csináljon valamit."

    Mondjuk, ha erre tudnál válaszolni, akkor gondolom magadtól is letudnád implementálni. Teljesen feladat függő a dolog..
    Mutasd a teljes hozzászólást!
  • A modul amivel dolgozol eléggé pontatlan, tehát ha azt szertnéd, hogy a távolság változására  történjen valami, akkor ezt használnod kell majd:
    Arduino Playground - RunningAverage

    Én a helyedben egy ilyen feladatra, mozgás érzékelőt állítanék be, mivel a távolságot semmire nem használod.
    Infra a másik opció, aminek a fal másik oldaán van egy visszeverő. A pisuar automata lehúzásai voltak így megoldva régen.
    Mutasd a teljes hozzászólást!
  • Szia!

    Nem tudom pontosan mit szeretnél, de szerintem olyasmi is jó lehet, hogy csinálsz egy változót: RegiTavolsag, meg UjTavolsag, hibahatar. Kezdetben pl a RegiTavolsag=200cm, UjTavolsag=0cm, hibahatar=1 (A setup-ban)

    A loopb-an meg lekéred a távolságot, amit átadsz az UjTavolsagnak.

    Utána
    if abszolútérték(UjTavolsag-RegiTavolsag)>hibahatar
    Csináljon valamit
    Ez a megoldás, ha pl a kezedet odateszed és nem remeg akkor csak 1x fog csinálni valamit, azaz csak a változásra lesz érzékeny.

    RegiTavolsag=UjTavolsag



    Persze arra figyelni kell még pluszban, hogy csak akkor fusson le ez az If is, ha az uj tav mondjuk nagyobb, mint 10 cm, nehogy olyan kicsire fusson, hogy annál kisebbet már nem tudsz produkálni, amitől nem lesz használható!
    Mutasd a teljes hozzászólást!
  • A loop előtt mérj egy távolságot (én a mérést kiszervezném egy külön methodba) ennek eredményét mentsd el egy változóba és ezt a változót használd a 200 helyett.
    Mutasd a teljes hozzászólást!
  • Van itthon Arduino nano klónom,meg távolság érzékelőm, nem tudom milyen típus. Tudnál egy kapcsolási rajzot küldeni itt? Kedvem lett kipróbálni!
    Mutasd a teljes hozzászólást!
  • Ez jó lehet, kipróbálom amint tudom.
    Amit szeretnék :
    Egy projekt része de itt az a lényeg, hogy van egy szemeteskosár és ha beledobok valamit ( kis dolgokkal is működjön) akkor majd világítson egy ledsor. A kosár átmérője volt x és hogyha annál kevesebbet mért mert bele ment valami akkor világított. Csak ez valamiért nem működött elég pontosan.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd