www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Ultrasonic senzor in senzor dotika

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Arduino sekcija
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
programming
Član
Član



Pridružen-a: Sre 09 Jan 2013 19:58
Prispevkov: 33
Aktiv.: 0.24

PrispevekObjavljeno: Pon Sep 20, 2021 12:09 pm    Naslov sporočila:  Ultrasonic senzor in senzor dotika Odgovori s citatom

Pozdravljeni, prosim za pomoč pri pisanju programa v katerem imam vključena senzor dotika in ultrasonic senzor razdalje. Program naj deluje tako, da ko je pritisnjena tipka oziroma, ko je aktiviran senzor dotika in ta ostane pritisnjen/aktiviran se prižge modra led, ki ostane prižgana dve sekundi, nato se modra led ugasne in hkrati prižge zelena led takrat spustimo pritisnjeno tipko oziroma senzor dotika in se istočasno ob spustu tipke/senzorja dotika prične merjenje časa, ki je aktivno dokler se ne aktivira ultrasonic senzor razdalje za vrednost zaznavanja do 1m, nato se merjenje časa ustavi in izmerjeni čas izpiše na zaslonu. Ob ponovnem pritisku tipke oziroma aktiviranju senzorja dotika se postopek ponovi.

Pri senzorju dotika je problem predvsem, da ko je pritisnjen in ostane pritisnjen program ostane na začetku in ne nadaljuje do preostalih ukazov.

Pri ultrasonic senzorju razdalje me zanima ali ga je mogoče uporabit za zaznavanje objektov/predmetov in da je ob tem mogoče natančno merjenje časa.

Prosim za pomoč in kakšne popravke bi potreboval pri spodnjem programu za pravilno delovanje. Pray

Koda:

int trigPin = 12;   
int echoPin = 11;   
int modra= 3;
int zelena= 8;
int touch = 9;
int Buzzer = 4;
long duration, distance;
int startTime = 0;                                         
int endTime = 0;

void setup() {       
    Serial.begin(9600);
    pinMode(Buzzer, OUTPUT);
    pinMode(trigPin, OUTPUT); 
    pinMode(echoPin, INPUT); 
    pinMode(touch, INPUT);
    pinMode(modra, OUTPUT);
    pinMode(zelena, OUTPUT);
}

void loop() {
  digitalWrite(trigPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration=pulseIn(echoPin, HIGH);
  distance =(duration/1)/29.1;
  duration=pulseIn(echoPin, LOW);
  delay(10);
 
if(digitalRead(touch) == HIGH) {
  digitalWrite(modra,HIGH);
  delay(2000);
  digitalWrite(modra,LOW);
  digitalWrite(zelena,HIGH);
     while (digitalRead(touch) == LOW)
     {
     
     }
    startTime = millis();
   
  }

 if((distance<=100))
  {
    digitalWrite(zelena,LOW);
}
  endTime = millis();
  int totalTime = endTime - startTime;
  Serial.print(totalTime);
  Serial.println("ms");
 
}
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Jaka57
Moderator
Moderator



Pridružen-a: Ned 12 Dec 2004 21:47
Prispevkov: 5766
Aktiv.: 25.96
Kraj: Grosuplje

PrispevekObjavljeno: Pon Sep 20, 2021 7:50 pm    Naslov sporočila:   Odgovori s citatom

Kakšen oz. kateri senzor pritiska imaš in kako je povezan na Arduina?
_________________
Lp, Jaka
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
programming
Član
Član



Pridružen-a: Sre 09 Jan 2013 19:58
Prispevkov: 33
Aktiv.: 0.24

PrispevekObjavljeno: Tor Sep 21, 2021 1:15 am    Naslov sporočila:   Odgovori s citatom

Jaka57 je napisal/a:
Kakšen oz. kateri senzor pritiska imaš in kako je povezan na Arduina?


Senzor dotika:
https://www.aliexpress.com/item/1774130959.html

Povezan je na D9 arduino NANO ploščo.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Jaka57
Moderator
Moderator



Pridružen-a: Ned 12 Dec 2004 21:47
Prispevkov: 5766
Aktiv.: 25.96
Kraj: Grosuplje

PrispevekObjavljeno: Tor Sep 21, 2021 8:09 pm    Naslov sporočila:   Odgovori s citatom

Ali ti tudi ne izpiše nič v oknu terminala?
_________________
Lp, Jaka
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
programming
Član
Član



Pridružen-a: Sre 09 Jan 2013 19:58
Prispevkov: 33
Aktiv.: 0.24

PrispevekObjavljeno: Tor Sep 21, 2021 10:20 pm    Naslov sporočila:   Odgovori s citatom

Izpisuje čas v ms približno vsako sekundo, ko pritisnem touch (senzor dotika), ultrasonic senzor nato ne ustavi časa, niti ne izklopi led, pri touch je problem ker je ob pritisku pritisnjena več časa (min 2s) do prižiga zelene led in zato program ves čas skače na začetek ukaza in na nadaljuje do ostalih ukazov v programu?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Jaka57
Moderator
Moderator



Pridružen-a: Ned 12 Dec 2004 21:47
Prispevkov: 5766
Aktiv.: 25.96
Kraj: Grosuplje

PrispevekObjavljeno: Tor Sep 21, 2021 10:31 pm    Naslov sporočila:   Odgovori s citatom

Še enkrat sem šel prebrat, kaj počenjaš. Problem je, ko se prižge zelena LED nisi dovolj hiter, pri spuščanju senzorja dotika (mikrosekunde)
programming je napisal/a:
..... da ko je pritisnjena tipka oziroma, ko je aktiviran senzor dotika in ta ostane pritisnjen/aktiviran se prižge modra led, ki ostane prižgana dve sekundi,
nato se modra led ugasne in hkrati prižge zelena led takrat spustimo pritisnjeno tipko oziroma senzor dotika in se istočasno ob spustu tipke/senzorja dotika prične merjenje časa,.........


Ker nisi dovolj hiter, program enostavno preskoči zanko, izvede vse kar je potem in gre ponovno v void Loop():
Koda:
while (digitalRead(touch) == LOW)
     {
     
     }

Probaj:
Koda:
while (digitalRead(touch) == HIGH)

V tem primeru bo čakal, da spustiš tipko, ko se prižge zelena LED.

_________________
Lp, Jaka
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
programming
Član
Član



Pridružen-a: Sre 09 Jan 2013 19:58
Prispevkov: 33
Aktiv.: 0.24

PrispevekObjavljeno: Tor Sep 21, 2021 11:41 pm    Naslov sporočila:   Odgovori s citatom

Sem popravil, sedaj deluje ampak se pojavi nov problem pri ultrasonic senzorju, saj ne zazna takoj predmeta,ovire ampak šele po določenem času, to je verjetno zaradi delay, saj tudi čas izpisuje v preslednkih na minuto in ko se zelena led izklopi čas še vedno teče naprej na serijskem vmesniku. Je sploh mogoče natančno merjenje časa v kombinaciji z ultrasonic senzorjem za prekinitev (ob zaznanju predmeta)?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Jaka57
Moderator
Moderator



Pridružen-a: Ned 12 Dec 2004 21:47
Prispevkov: 5766
Aktiv.: 25.96
Kraj: Grosuplje

PrispevekObjavljeno: Sre Sep 22, 2021 12:06 am    Naslov sporočila:   Odgovori s citatom

Saj nimaš nikjer v programu zapisano, da si zapomni čas, ko zazna predmet!
Tudi tvoja formula za izračun razdalje je malo čudna, razen, če računaš razdaljo v nekem mediju drugačnem od zraka(voda, olje,........):
Koda:
distance =(duration/1)/29.1;

Najprej nekaj deliš z 1 nato pa še z 29.1!?
Kako natančno bi rad meril čas?

_________________
Lp, Jaka
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
programming
Član
Član



Pridružen-a: Sre 09 Jan 2013 19:58
Prispevkov: 33
Aktiv.: 0.24

PrispevekObjavljeno: Sre Sep 22, 2021 9:34 am    Naslov sporočila:   Odgovori s citatom

Očitno bo potrebnih nekaj popravkov programa, čas bi meril v sekundah, do stotinke natančno.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Jaka57
Moderator
Moderator



Pridružen-a: Ned 12 Dec 2004 21:47
Prispevkov: 5766
Aktiv.: 25.96
Kraj: Grosuplje

PrispevekObjavljeno: Sre Sep 22, 2021 7:37 pm    Naslov sporočila:   Odgovori s citatom

Ja, kar nekaj popravkov bo treba in merjenje do storinke natančno naj ne bi bil problem.
Lahko bi pa opisal bolj natančno ta tvoj projekt, ker takole na pamet enostavno ne gre, iz svojega opisa izpustiš samo en detalj in je lahko program popolnoma drugačen.

Recimo, nekaj se približuje tvojemu UZ senzorju ali je potrebno merit čas od začetka prižgane zelene LED diode do trenutka, ko se predmet približa na razdaljo <1m ali kako?

Če je temu tako, potem je potrebno krepko spremeniti program, kajti tako kot je napisan sedaj, je potrebno za vsako merjenje razdalje ponovno pritisnit tipko.

_________________
Lp, Jaka
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
programming
Član
Član



Pridružen-a: Sre 09 Jan 2013 19:58
Prispevkov: 33
Aktiv.: 0.24

PrispevekObjavljeno: Pon Sep 27, 2021 6:35 pm    Naslov sporočila:   Odgovori s citatom

Jaka57 je napisal/a:
Ja, kar nekaj popravkov bo treba in merjenje do storinke natančno naj ne bi bil problem.
Lahko bi pa opisal bolj natančno ta tvoj projekt, ker takole na pamet enostavno ne gre, iz svojega opisa izpustiš samo en detalj in je lahko program popolnoma drugačen.

Recimo, nekaj se približuje tvojemu UZ senzorju ali je potrebno merit čas od začetka prižgane zelene LED diode do trenutka, ko se predmet približa na razdaljo <1m ali kako?

Če je temu tako, potem je potrebno krepko spremeniti program, kajti tako kot je napisan sedaj, je potrebno za vsako merjenje razdalje ponovno pritisnit tipko.


Hvala za pomoč sem rešil problem, niti ni bilo tako težko samo nekaj volje je bilo potrebno in vse deluje kot švicarska ura! Very Happy

Me pa zanima s katerim ukazom lahko pretvorim milisekunde v sekunde na tri decimalke natančno, za pretvorbo na dve decimalni mesti natačno sem uporabil ukaz:
Koda:

  Serial.println((double)totalTime/1000);
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Arduino sekcija Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group