Sisukord:
Video: Arduino ajastusmeetodid millidega (): 4 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
Selles artiklis tutvustame millis (); funktsiooni ja kasuta seda erinevate ajastamisnäidete loomiseks.
Millis? Mitte midagi pistmist huulepulgadega … loodetavasti tundsite milli kui tuhandiku kümnendiku numbrilist eesliidet; see on mõõtühiku korrutamine 0,001 -ga (või kümnega negatiivse 3 astmeni).
Huvitav on see, et meie Arduino süsteemid loevad millisekundeid (tuhandeid sekundeid) jooksva visandi algusest kuni loenduse maksimaalse arvuni, mida saab salvestada muutujatüüpi allkirjata pikkusega (32-bitine [nelja baidi] täisarv -mis jääb vahemikku null kuni (2^32) -1. (2^32) -1 ehk 4294967295 millisekundit teisendatakse 49.71027 paaritu päevaks.
Loendur lähtestatakse, kui Arduino lähtestatakse, see saavutab maksimaalse väärtuse või laaditakse üles uus visand. Loenduri väärtuse saamiseks konkreetsel hetkel helistage lihtsalt funktsioonile, näiteks:
algus = millis ();
Kus algus on allkirjastamata pikk muutuja. Siin on väga lihtne näide, mis näitab millis () toimimist:
/ * millis () demonstratsioon */
allkirjata pikk algus, lõpetatud, möödunud;
tühine seadistus ()
{Serial.begin (9600); }
tühine tsükkel ()
{Serial.println ("Alusta…"); algus = millis (); viivitus (1000); valmis = millis (); Serial.println ("Valmis"); möödunud = lõpetatud-algus; Serial.print (möödunud); Serial.println ("millisekundit möödas"); Serial.println (); viivitus (500); }
Visand salvestab alguses praeguse millisekundi, seejärel ootab sekundi, seejärel salvestab uuesti millisektsiooni väärtuse. Lõpuks arvutab see viivituse aja. Järgmisel jadamonitori ekraanipildil näete, et kestus ei olnud alati täpselt 1000 millisekundit, nagu on näidatud pildil.
Samm 1:
Lihtsamalt öeldes kasutab millisfunktsioon teie Arduino südames ATmega mikrokontrolleri sisemist loendurit. See loendur suurendab iga taktsüklit - mis juhtub (tavalises Arduino ja ühilduvates seadmetes) taktsagedusel 16 Mhz. Seda kiirust kontrollib kristall Arduino tahvlil (hõbedane asi, millele on tembeldatud T16.000).
2. samm:
Kristalli täpsus võib varieeruda sõltuvalt välistemperatuurist ja kristalli enda taluvusest. See omakorda mõjutab millimeetritulemuse täpsust. Anekdootne kogemus on näidanud, et aja täpsuse nihkumine võib olla umbes kolm või neli sekundit kahekümne nelja tunni jooksul.
Kui kasutate tahvlit või oma versiooni, mis kasutab kristalli asemel keraamilist resonaatorit, pange tähele, et need pole nii täpsed ja toovad kaasa kõrgema triivitase. Kui vajate ajastuse täpsust palju kõrgemal tasemel, kaaluge konkreetseid taimeriga IC -sid, näiteks Maxim DS3231.
Nüüd saame milliseid kasutada erinevate ajastusfunktsioonide jaoks. Nagu eelmises visandis näidatud, saame kulunud aega arvutada. Selle idee edasiviimiseks teeme lihtsa stopperi. See võib olla nii lihtne või keeruline kui vajalik, kuid sel juhul läheme lihtsa poole.
Riistvara vaatenurgast on meil kaks nuppu-Start ja Stop-koos 10k oomiste allatõmmatavate takistitega, mis on ühendatud vastavalt digitaalsete kontaktidega 2 ja 3. Kui kasutaja vajutab käivitamist, märgib eskiis millisektsiooni väärtuse - siis pärast stopp -nupu vajutamist märgib visand uuesti millisektsiooni väärtuse, arvutab ja kuvab kulunud aja. Seejärel saab kasutaja protsessi kordamiseks vajutada nuppu Start või värskendatud andmete saamiseks peatada. Siin on visand:
/* Super-lihtne stopper, kasutades millis (); */
allkirjata pikk algus, lõpetatud, möödunud;
tühine seadistus ()
{Serial.begin (9600); pinMode (2, INPUT); // stardinupp pinMode (3, INPUT); // stopp -nupp Serial.println ("Start/reset jaoks vajutage 1, möödunud aega 2"); }
tühi kuvaResult ()
{ujuk h, m, s, ms; allkirjastamata kaua; möödunud = lõpetatud-algus; h = int (möödunud/3600000); üle = möödunud%3600000; m = int (üle/60000); üle = üle%60000; s = int (üle/1000); ms = üle%1000; Serial.print ("Toores kulunud aeg:"); Serial.println (möödunud); Serial.print ("Kulunud aeg:"); Seeriatrükk (h, 0); Serial.print ("h"); Seeriaprint (m, 0); Serial.print ("m"); Seeriatrükk (s, 0); Serial.print ("s"); Seeriatrükk (ms, 0); Serial.println ("ms"); Serial.println (); }
tühine tsükkel ()
{if (digitalRead (2) == HIGH) {start = millis (); viivitus (200); // debounce jaoks Serial.println ("Alustatud …"); } if (digitalRead (3) == HIGH) {valmis = millis (); viivitus (200); // debounce displayResult (); }}
Kõnesid viivitamiseks () kasutatakse lülitite väljalülitamiseks - need on valikulised ja nende kasutamine sõltub teie riistvarast. Pilt on näide visandi seeriamonitooriumi väljundist - stopper on käivitunud ja seejärel nuppu kaks vajutatakse kuue korra jooksul.
Samm: spidomeeter…
Kui teil oleks andur kindla vahemaa alguses ja lõpus, saaks kiirust arvutada: kiirus = vahemaa ÷ aeg.
Spidomeetri saate teha ka ratastega liikumisvormi jaoks, näiteks jalgratta jaoks. Praegu pole meil jalgratast, millega segi ajada, kuid selle protsessi kirjeldame siiski - see on üsna lihtne. (Vastutusest loobumine - tehke seda omal vastutusel jne.)
Kõigepealt vaatame läbi vajaliku matemaatika. Peate teadma ratta ümbermõõtu. Riistvara - vajate andurit. Näiteks - pilliroo lüliti ja magnet. Pidage pilliroo lülitit tavapäraselt avatavaks nupuks ja ühendage nagu tavaliselt 10k oomise tõmbetakistiga.
Teised võivad kasutada saaliefekti andurit-igaüks ise). Meenutage matemaatikaklassist ümbermõõdu arvutamiseks - kasutage valemit: ümbermõõt = 2πr, kus r on ringi raadius.
Nüüd, kui teil on ratta ümbermõõt, saab seda väärtust pidada meie fikseeritud vahemaaks ja seetõttu saab kiirust arvutada täispöörde vahel kulunud aja mõõtmisega.
Teie andur-kui see on paigaldatud-peaks toimima samal viisil nagu tavaliselt avatud nupp, mida vajutatakse iga pöörlemise ajal. Meie visand mõõdab iga andurilt saadud impulsi vahel kulunud aega.
Selleks on meie näites anduri väljund ühendatud digitaalse tihvtiga 2 - see käivitab kiiruse arvutamiseks katkestuse. Joonisel kuvatakse kiirus tavalisel I2C-liidese LCD-moodulil. Soovitatav on I2C liides, kuna selleks on vaja ainult 4 juhtmest Arduino plaadilt LCD -ekraanile - mida vähem juhtmeid, seda parem.
Siin on teie tutvumiseks visand:
/*Põhikiirusmõõtur milliste abil (); */
#include "Wire.h" // I2C siinide LCD jaoks
#include "LiquidCrystal_I2C.h" // I2C siinide LCD -mooduli jaoks - https://bit.ly/m7K5wt LiquidCrystal_I2C lcd (0x27, 16, 2); // määrake 16 -märgilise ja kaherealise ekraani jaoks LCD -aadressiks 0x27
ujuk start, lõpetatud;
ujuk möödas, aeg; float circMetric = 1,2; // ratta ümbermõõt anduri asendi suhtes (meetrites) float circImperial; // kasutades 1 kilomeetrit = 0,621371192 miili ujuk speedk, speedm; // hoiab arvutatud kiirusväärtusi meetermõõdustikus ja keiserlikus
tühine seadistus ()
{attachInterrupt (0, speedCalc, RISING); // katkestus kutsutud, kui andurid saadavad digitaalse 2 kõrge (iga ratta pöörlemine) start = millis (); // LCD seadistamine lcd.init (); // initsialiseeri lcd lcd.backlight (); // LCD taustvalgustuse sisselülitamine lcd.clear (); lcd.println ("Kanna kiivrit!"); viivitus (3000); lcd.clear (); Seriaalne algus (115200); circImperial = circMetric*.62137; // teisendage mõõdik MPH arvutuste jaoks imperiaalseks}
tühine kiirusCalc ()
{möödunud = millis ()-algus; algus = millis (); speedk = (3600*circMetric)/möödas; // km/h speedm = (3600*circImperial)/möödunud; // Miili tunnis }
tühine tsükkel ()
{lcd.setCursor (0, 0); lcd.print (int (speedk)); lcd.print ("km/h"); lcd.print (int (kiirusm)); lcd.print ("MPH"); lcd.setCursor (0, 1); lcd.print (int (möödunud)); lcd.print ("ms/rev"); viivitus (1000); // kohandage oma eelistuste järgi värelemise minimeerimiseks}
Ei toimu nii palju - iga kord, kui ratas lõpetab ühe pöörde, läheb anduri signaal madalalt kõrgele - vallandab katkestuse, mis kutsub funktsiooni speedCalc ().
See võtab lugemise millis (float circMetric = 1,2;
ja seda mõõdetakse meetrites). Lõpuks arvutab see kiiruse km/h ja MPH. Katkestuste vahel kuvab visand LCD -ekraanil värskendatud kiiruse andmed ja iga pöörde töötlemata aja väärtuse. Reaalses elus ei usu ma, et keegi paigaldaks jalgrattale LCD -ekraani, võib -olla oleks LED -ekraan asjakohasem.
Vahepeal näete selle näite toimimist järgmises lühikeses videoklipis. Jalgrattaratta ja pilliroo lüliti/magneti kombinatsiooni asemel olen ühendanud funktsioonigeneraatori ruutlaine väljundi katkestusnõelaga, et simuleerida anduri impulsse, nii et saate aimu selle toimimisest.
4. samm:
See võtab peaaegu millise () kasutamise esialgu kokku. Seal on ka micros (); funktsioon, mis loeb mikrosekundeid.
Nii et teil on see - veel üks praktiline funktsioon, mis võimaldab Arduino maailma kaudu lahendada rohkem probleeme. Nagu alati, on nüüd teie ja teie kujutlusvõime otsustada leida midagi, mida kontrollida või teiste häbipostide juurde asuda.
Selle postituse tõi teile pmdway.com - kõik tegijatele ja elektroonikahuvilistele, tasuta kohaletoimetamine kogu maailmas.
Soovitan:
Atari punkkonsool beebiga 8 sammu järjestus: 7 sammu (piltidega)
Atari punkkonsool koos beebi 8-astmelise sekveneerijaga: see vaheehitus on kõik-ühes Atari punk-konsool ja beebi 8-astmeline järjestus, mida saate freesida Bantam Tools töölaua PCB-freespingis. See koosneb kahest trükkplaadist: üks on kasutajaliidese (UI) plaat ja teine on utiliit
Akustiline levitatsioon Arduino Unoga samm-sammult (8 sammu): 8 sammu
Akustiline levitatsioon Arduino Uno abil samm-sammult (8 sammu): ultraheliheli muundurid L298N DC-naissoost adapteri toiteallikas isase alalisvoolupistikuga Arduino UNOBreadboard ja analoogpordid koodi teisendamiseks (C ++)
4G/5G HD -video otseülekanne DJI droonilt madala latentsusega [3 sammu]: 3 sammu
4G/5G HD-video otseülekanne DJI droonilt madala latentsusega [3 sammu]: Järgnev juhend aitab teil saada HD-kvaliteediga otseülekandeid peaaegu igalt DJI droonilt. FlytOSi mobiilirakenduse ja veebirakenduse FlytNow abil saate alustada drooni video voogesitust
Tulekahjusignalisatsioon Arduino abil [paar lihtsat sammu]: 3 sammu
Arduino kasutav tulekahjusignalisatsioon [paar lihtsat sammu]: Kas soovite Arduinoga teha lihtsa ja huvitava projekti, mis võiks samal ajal olla tõesti kasulik ja potentsiaalselt elupäästev? Kui jah, siis olete jõudnud õigesse kohta õppima midagi uut ja uuenduslikku. Selles postituses läheme
Odavaim Arduino -- Väikseim Arduino -- Arduino Pro Mini -- Programmeerimine -- Arduino Neno: 6 sammu (piltidega)
Odavaim Arduino || Väikseim Arduino || Arduino Pro Mini || Programmeerimine || Arduino Neno: …………………………. Palun TELLI minu YouTube'i kanalile, et saada rohkem videoid ……. .See projekt käsitleb kõigi aegade väikseima ja odavaima arduino liidestamist. Väikseim ja odavaim arduino on arduino pro mini. See sarnaneb arduinoga