Ahogy a cím is mondja. Mi a különbség a kettő között?
analogWrite (pin, 0-255)
vs digitalWrite(pin,LOW-HIGH)
Ahogy a cím is mondja. Mi a különbség a kettő között?
analogWrite (pin, 0-255)
vs digitalWrite(pin,LOW-HIGH)
A digitalWrite a megadott tűt a két állapot egyikére állítja - HIGH / LOW, ami 5v-nek felel meg (egyes táblákon 3.3v) és földelésnek.
Az analogWrite a kimenet típusától függően változhat. .
Ha PWM csapra alkalmazzák, akkor a csapot periodikusan magas / alacsony jelre állítja, ahol a magasra fordított jel százaléka arányos az írt értékkel. Például -
analogWrite (PWMpin, 255)
Az idő 100% -a MAGAS lesz, míg
analogWrite (PWMpin, 127)
Az idő 50% -a NAGY, míg az idő 50% -a ALACSONY lesz.
Ha az AnalWrite alkalmazást egy DAC tűhöz alkalmazzuk (elérhető egyes táblákon, például a DUE vagy MEGA )) Az analogWrite hatására a megadott érintkező a megadott analóg értékkel arányos feszültségszintet ad ki.
Például az Due miatt, 3,3 V maximális feszültséggel és egy alapértelmezettel 8 bites analóg felbontás - [0: 255]
analogWrite (DACpin, 255)
A megadott tűt kimenet 3.3v, és-
analogWrite (DACpin, 127)
A megadott pin kimenetet eredményez 1.35v
analogWrite (): Az analogWrite () módszer beállítja a PWM kimeneti tű értékét. Az analogWrite () 0–255 skálán van, úgy, hogy az analogWrite (255) 100% -os munkaciklust kér (mindig be van kapcsolva), az analogWrite (127) pedig 50% -os munkaciklust (az idő felénél).
Szintaxis : analogWrite (pin, val)
Hol,
pin: a PWM kimeneti pin száma.
val: a munkaciklus int értéke 0 (mindig ki) és 255 (mindig be) között
Példa kód :
int outLed = 10; // digitális érintkezőhöz csatlakoztatott LED 10int érték = 0; // változó az olvasási érték tárolásáraintintin = 3; // input pinvoid setup () {pinMode (outLed, OUTPUT); // állítsa a PWM tűt OUTPUT-ként} void loop () {value = analogRead (analogIN); // beolvassa az analogIN értékét (0 és 1023 közötti értékek) analogWrite (outLed, érték / 4); // az outLed értékére állítja az olvasási értéket (0 és 255 közötti értékek)}
digitalWrite: A digitalWrite () módszer a digitális tű értékét állítja be MAGAS vagy ALACSONY. Itt 5 V (vagy 3,3 V 3,3 V-os táblákon) HIGH, 0 V (föld) LOW esetén.
Szintaxis: digitalWrite (pin, val)
Hol,
pin: a pin száma
val: HIGH vagy LOW
Példakód:
int ledPin = 13; // a digitális érintkezőhöz csatlakoztatott LED 13 kerülje a beállítást () {pinMode (ledPin, OUTPUT); // a digitális csapot kimenetként állítja} void loop () {digitalWrite (ledPin, HIGH); // beállítja a LED bekapcsolási késleltetését (1000); // vár egy második digitalWrite-re (ledPin, LOW); // beállítja a LED kikapcsolási késleltetését (1000); // vár egy másodpercre}
digitalWrite
a kimeneti tűt LOW vagy HIGH értékre állítja (ahol ezek a feszültségek a processzor V cc jétől függenek. Uno vagy Mega esetén 0V vagy 5 V (vagy annak közelében).
Itt található a digitalWrite (LOW) képernyőképe:
Ez az , a kimeneti tű 0 V-nál van.
Most a digitalWrite (HIGH) esetében:
A kimeneti feszültség 5 V.
Az analogWrite
-nak valóban PWMwrite nevet kellett volna adnia, mivel konfigurálja a processzor időzítőit a PWM kimenetére (impulzusszélesség moduláció).
Próbáljuk ki az analogWrite (1) -et:
Láthatja, hogy a feszültségszint legtöbbször 0V, és 5 V rövid ideig. Azt is látja, hogy a frekvencia 490 Hz, ami az analogWrite referenciaoldalán áll.
Nagyítás:
A kimenet magas 8 µs-re, ami pontosan az 2048 µs 1/256 része, ami az időzítő időszaka. Tehát van 1/256 (0. 39%).
Próbáljuk ki az analogWrite (127) -et - félúton 0 és 255 között:
Most láthatja, hogy a kimenet az idő fele pontosan HIGH, a fennmaradó idő pedig LOW.
Próbáljuk ki az analogWrite (254) -t:
Ez ellentétes az analogWrite (1) -vel. A kimenet folyamatosan magas, kivéve egy rövid időszakot. Nagyítás:
Most a kimenet ki 8 µs-ig - a korábbi képhez képest, ahol 8 µs-ig volt bekapcsolva.
analogWrite (0)
megegyezik a digitalWrite (LOW)
-val.
Az analogWrite (255)
azonos a digitalWrite (HIGH)
-val.
Ezt a wiring_analog.c megfelelő kódja bizonyítja:
if (val == 0) {digitalWrite (pin, LOW);} else if (val = = 255) {digitalWrite (pin, HIGH);}
analogWrite
alapvetően a hardveres időzítőket konfigurálja a PWM kimenetére. Miután ezt megtette, az időzítő hardver kimeneti a kért ciklust (0-tól 255-ig), ahol a 0 mindig ki van kapcsolva, a 255 mindig be van kapcsolva, és a köztük lévő valamilyen érték PWM-t (impulzusos kimenetet) eredményez.
További információ az időzítőkről: Saját oldal az időzítőkről.
A digitalWrite a tűt magas vagy alacsony értékre állítja, amely pontosan ezen az értéken marad, amíg a digitalWrite-t újra meg nem hívják.
Az analogWrite a csapot rezgő értékre állítja, amelynek impulzus hossza a második paraméterként megadott munkaciklusból.
Tehát:
digitalWrite (5, HIGH); // Az 5. tű magasanalogWrite (6, 127); // A 6. tű kb. 250 Hz-en rendszeresen 0v és 5v (vagy 3.3v) között ingadozik.
analogWrite (): Analóg értéket (PWM hullám) ír egy tűre. Használható LED-ek változó fényerővel történő megvilágítására vagy motor különböző sebességgel történő vezetésére. Az analogWrite ()
hívása után a csap a megadott ciklus állandó négyzethullámát generálja a következő analogWrite ()
hívásig (vagy a digitalRead ()
vagy digitalWrite ()
ugyanazon a csapon). A PWM jel frekvenciája a legtöbb érintkezõn körülbelül 490 Hz. Az Uno és hasonló táblákon az 5. és 6. érintkezõ frekvenciája megközelítõleg 980 Hz. A Leonardo 3. és 11. csapja szintén 980 Hz-en működik.
További részletek: https://www.arduino.cc/en/Reference/analogWrite
analogRead (): beolvassa az értéket a megadott analóg csapról. Az Arduino kártya 6 csatornás (8 csatornát a Mini és Nano, 16 a Mega), 10 bites analóg-digitális átalakítót tartalmaz. Ez azt jelenti, hogy a 0 és 5 volt közötti bemeneti feszültségeket 0 és 1023 közötti egész értékekre fogja feltérképezni. Ez felbontást eredményez: 5 volt / 1024 egység vagy, 0,0049 volt (4,9 mV) egységenként. A bemeneti tartomány és a felbontás az analogReference ()
használatával módosítható.
További részletek: https://www.arduino.cc/en/Reference/analogRead
digitalWrite állítsa a megadott tűt a két állapot egyikére - HIGH / LOW
Hol, HIGH = 5 V és LOW = 0 V
analogWrite Állítsa be a PWM pin PWM értékét
(Az Arduino UNO-ban a PWM csapok 3, 5, 6, 9, 10, 11).
állítsa a csapot periodikusan magas / alacsony jelre.
analogWrite (PWMpin, 255)
Az idő 100% -a MAGAS, míg
analogWrite (PWMpin, 127)
Az idő 50% -a HIGH, az idő LOW 50% -a pedig
Tehát mi a különbség az analogWrite (X, 255) és a digitalWrite (X, HIGH) között? Valószínűleg semmi, kivéve talán a processzornak meg kell tennie néhány extra dolgot annak érdekében, hogy kiderüljön, hogy nincs szüksége a PWM használatára, és a stílusra is.