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 

Zakasnitev brez delay

 
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: Tor Jan 26, 2021 10:06 pm    Naslov sporočila:  Zakasnitev brez delay Odgovori s citatom

Zdravo, lepo bi prosil za malo pomoči in sicer s katerim ukazom bi lahko zamenjal funkcijo delay(1000), da bi program čakal 1s brez da bi se izklopil kot to stori pri ukazu delay. Ostali procesi pa bi se med čakanjem izvajali nemoteno (želim merit čas brez prekinitve). Hvala
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
tlogar
Član
Član



Pridružen-a: Pon 23 Mar 2015 16:57
Prispevkov: 186
Aktiv.: 1.69

PrispevekObjavljeno: Tor Jan 26, 2021 10:56 pm    Naslov sporočila:   Odgovori s citatom

Lahko si zabeležiš čas nekega dogodka preko sistemske ure (čas od zagona krmilnika) in nato v vsakem ciklu programa preveriš, če je že minil nek določen čas. Pri arduinu uporabiš ukaz millis(). Drugače pa še malo pogooglaj in boš hitro dobil kak primer.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
tlogar
Član
Član



Pridružen-a: Pon 23 Mar 2015 16:57
Prispevkov: 186
Aktiv.: 1.69

PrispevekObjavljeno: Tor Jan 26, 2021 10:57 pm    Naslov sporočila:   Odgovori s citatom

Lahko si zabeležiš čas nekega dogodka preko sistemske ure (čas od zagona krmilnika) in nato v vsakem ciklu programa preveriš, če je že minil nek določen čas. Pri arduinu uporabiš ukaz millis(). Drugače pa še malo pogooglaj in boš hitro dobil kak primer.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
lojzek
Član
Član



Pridružen-a: Pet 25 Jan 2008 8:00
Prispevkov: 3352
Aktiv.: 17.02

PrispevekObjavljeno: Sre Jan 27, 2021 7:13 am    Naslov sporočila:   Odgovori s citatom

Uporabiš prekinitve. In sicer časovno prekinitev TCNT1. Ta je pri arduinu lahko dolga tudi čez 4s.
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 Jan 27, 2021 9:58 am    Naslov sporočila:   Odgovori s citatom

Tole si poglej.
_________________
Lp, Jaka
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
rplink3r
Član
Član



Pridružen-a: Tor 06 Feb 2007 20:02
Prispevkov: 480
Aktiv.: 2.30
Kraj: Levec

PrispevekObjavljeno: Sre Jan 27, 2021 12:38 pm    Naslov sporočila:   Odgovori s citatom

Arduino že ima takšen primer, uporablja pa princip sistemskega časa, kateri se stalno posodablja, ter glede na razliko časa od zadnjega proženja sproži programsko rutino.

https://www.arduino.cc/en/Tutorial/BuiltInExamples/BlinkWithoutDelay

_________________
"The statement below is false."
"The statement above is true."
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
Jaka57
Moderator
Moderator



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

PrispevekObjavljeno: Sre Jan 27, 2021 2:15 pm    Naslov sporočila:   Odgovori s citatom

rplink3r je napisal/a:
Arduino že ima takšen primer, ........[/url]
Pri tem pride do problema, če želiš nekaj vkljapljat na točno določen čas, pri čemer program počne še marsikaj drugega. Ne vem, če boš ujel točno določen millis().
Pri daljših časovnih intervalih niti ni tak problem, pri kratkih in kompleksnem programu pa sigurno!

_________________
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 Jan 27, 2021 3:56 pm    Naslov sporočila:   Odgovori s citatom

Hvala za odgovore, zadeva je sledeča, izmerit želim reakcijski čas v milisekundah kar mi je sicer uspelo in deluje, problem pa nastane, ko želim dodati funkcijo, ki bo merila tudi prehitri pritisk TIPKE in čas prehitrega pritiska izpisala v milisekundah. Ob prehitrem pritisku bi mogel it čas v minus ampak se mi zdi, da to ni mogoče?

tukaj je koda:

Koda:
int TIME_START = 0;             
int TIME_X = 0;
int TIME_END = 0;

long randomNumber;

int pinButton = 7;   
int pinLED = 12;

void setup()
{
  Serial.begin(9600);
  pinMode (pinLED, OUTPUT);   
  pinMode (pinButton, INPUT);
}


void loop()
{
  if (digitalRead(pinButton) == HIGH) {                     
     delay(3000);
     TIME_START = millis();
     randomNumber = random(1000, 4000);
     delay(randomNumber);
     digitalWrite(pinLED, HIGH);
     TIME_X = millis();
     while (digitalRead(pinButton) == LOW)
     {
     
     }
     TIME_END = millis();
     digitalWrite(pinLED, LOW);
     int TIME = TIME_END - TIME_X;   
     int TIME2 = TIME_X - TIME_START;
      if (totalTime2 <= randomNumber)                   
      {
       Serial.println ("PREHITRO");
      }

      }
      else                                   
      {
        Serial.println ("cas:");
        Serial.println (TIME);
      }
    delay(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: 49 dni


Powered by phpBB © 2001, 2005 phpBB Group