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)
Megjegyzések
- Nem
nem azt akarom, hogy durva legyek, de ami ebben zavarba ejtett az arduino.cc dokumentációjában vagy a IDE?
Válasz
A digitalWrite a megadott PIN-kódot két állapot egyikére állítja – HIGH / LOW, amely egyenlő az 5v-vel (egyes táblákon 3.3v) és a földdel.
Az analogWrite a használt kimenet típusától függően változhat.
Ha PWM tűre alkalmazzák, akkor a csapot beállítja időszakos magas / alacsony jelre, ahol a magasra fordított jel százalékos aránya az írt értékkel. Például –
analogWrite(PWMpin,255)
100% MAGAS lesz míg az idő
analogWrite(PWMpin,127)
Az idő 50% -a MAGAS és az idő LOW 50% -a lesz
Az AnalWrite alkalmazásakor egy DAC tűhöz (elérhető egyes táblákon, például a DUE vagy MEGA ) anális Az ogWrite valójában azt eredményezi, hogy a megadott tű a megadott analóg értékkel arányos feszültségszintet bocsát ki.
Például a Due-nél, 3,3 V maximális feszültséggel és 8 bit alapértelmezett analóg felbontással – [0: 255]
analogWrite(DACpin,255)
A megadott PIN-kód 3.3v kimenetet eredményez, és-
analogWrite(DACpin,127)
A megadott PIN-kód 1,35v kimenetet eredményez
Megjegyzések
- Nem, a Megán nincs DAC.
- igazad van, a választ ennek megfelelően szerkesztették.
- Nagyszerű. Megkaptam a szabadságot, hogy a szerkesztést tömörebbé tegyem.
- Úgy gondolom, hogy van egy ” maxanalog ” definíció vagy állandó, hogy jobban kompatibilis legyen más platformokkal. Az esp8266 analóg írása 0 és 1024 között mozoghat. A / div> t legyen ugyanolyan fényes ugyanazzal a kóddal, úgy gondoltam, hogy ez a teljesítmény vagy a feszültség különbségének köszönhető, de én megfelelő (erősítés?) faktorral rendelkező MOSFET-et használtam. Egyszerűen (1024/256) volt bekapcsolva.
Válasz
analogWrite (): Az analogWrite () módszer egy PWM kimeneti tű értékét állítja be. 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-tól (mindig ki) és 255-ig (mindig be van kapcsolva)
Példa kód:
int outLed = 10; //LED connected to digital pin 10 int value = 0; //variable to store the read value int analogIN = 3; //input pin void setup() { pinMode(outLed, OUTPUT); // set the PWM pin as OUTPUT } void loop() { value = analogRead(analogIN); // read the value of analogIN (values between from 0 to 1023) analogWrite(outLed, value/4); // sets the read value on outLed (values between from 0 to 255) }
digitalWrite: A digitalWrite () módszer a digitális tű értékét HIGH vagy LOW értékre állítja. 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élda kód:
int ledPin = 13; // LED connected to digital pin 13 void setup() { pinMode(ledPin, OUTPUT); // sets the digital pin as output } void loop() { digitalWrite(ledPin, HIGH); // sets the LED on delay(1000); // waits for a second digitalWrite(ledPin, LOW); // sets the LED off delay(1000); // waits for a second }
Válasz
digitalWrite
a kimeneti csapot LOW vagy HIGH értékre állítja (ahol ezek a feszültségek a V cc-től függenek) A processzor . Uno vagy Mega esetén 0 vagy 5 V (vagy ahhoz közeli).
Itt található a digitalWrite (LOW) képernyőképe:
Vagyis a kimeneti tű 0 V-on van.
Most a digitalWrite (HIGH) esetében:
A kimeneti feszültség 5 V.
analogWrite
valóban PWMwrite nevet kellett volna kapni, mivel konf A processzor időzítőit a PWM (impulzusszélesség moduláció) kimenetére készteti.
Próbáljuk meg az analogWrite (1) -t:
Láthatja, hogy a feszültségszint legtöbbször 0V, és rövid ideig 5V-ra vált. Azt is látja, hogy a frekvencia 490 Hz, ami az analóg írási referenciaoldal szerint lesz.
Nagyítás:
A kimenet nagy értéke 8 µs, ami pontosan az 2048 µs 1/256 része, ami az időzítő időszaka. Tehát 1/256 (0,39%) terhelési ciklusunk van.
Próbáljuk meg az analogWrite (127) -et – félúton 0-tól 255-ig:
Most láthatja, hogy a kimenet az idő fele pontosan HIGH, a fennmaradó idő pedig LOW.
Próbáljuk ki az analWrite (254) elemet:
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)
ugyanaz, mint a digitalWrite (LOW)
.
analogWrite (255)
ugyanaz, mint a digitalWrite (HIGH)
.
Ezt a wiring_analog.c megfelelő kódja bizonyítja:
if (val == 0) { digitalWrite(pin, LOW); } else if (val == 255) { digitalWrite(pin, HIGH); }
Összegzés
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) ad.
Az időzítőkről bővebben lásd: oldalam az időzítőkről .
Válasz
A digitalWrite beállítja a csapot egy magas vagy alacsony értékre, amely pontosan ezen az értéken marad, amíg a digitalWrite-t ismét meg nem hívják.
Az analogWrite a csapot rezgő értékre állítja, amelynek impulzus hossza a második paraméterként megadott munkaciklus alapján.
Tehát:
digitalWrite (5, HIGH); // Pin 5 goes high analogWrite (6, 127); // Pin 6 oscillates regularly between 0v and 5v (or 3.3v) at about 250Hz.
Válasz
analogWrite (): Analóg értéket (PWM hullám) ír egy csapra . 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. A analogWrite()
hívása után a tű a megadott munkaciklus állandó négyzethullámát generálja a következő div hívásig: analogWrite()
(vagy hívás a digitalRead()
vagy digitalWrite()
címre 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 fut.
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 a analogReference()
paranccsal módosítható.
További részletek: https://www.arduino.cc/en/Reference/analogRead
Válasz
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)
Beállítja a csapot időszakos magas / alacsony jelre.
analogWrite(PWMpin,255)
Az idő 100% -ában MAGAS lesz, míg
analogWrite(PWMpin,127)
Az idő 50% -a NAGY, és az idő LOW 50% -a lesz
Válasz
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 kell tennie néhány extra dolgot annak kiderítéséhez, hogy nem kell használnia a PWM-et, és a stílust is.