Kérdés:
Mi a különbség az analogWrite és a digitalWrite között?
pijemcolu
2017-03-16 14:06:51 UTC
view on stackexchange narkive permalink

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)

Nem akarok durva lenni, de mi volt zavaró ebben az arduino.cc dokumentációjában vagy az IDE-ben?
Hét válaszokat:
TanyaV
2017-03-16 17:18:08 UTC
view on stackexchange narkive permalink

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

Nem, a Megán nincs DAC.
igazad van, a választ ennek megfelelően szerkesztetted.
Nagy. Megkaptam a szabadságot, hogy a szerkesztés tömörebb legyen.
Ú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 102 között terjedhet. feszültséget, de MOSFET-et használtam megfelelő (nyereség?) faktorral. Egyszerűen (1024/256) volt bekapcsolva.
Hasan
2017-03-20 08:55:54 UTC
view on stackexchange narkive permalink

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).

PWM Duty Cycle

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}  
Nick Gammon
2017-03-19 14:27:13 UTC
view on stackexchange narkive permalink

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:

digitalWrite (LOW)

Ez az , a kimeneti tű 0 V-nál van.


Most a digitalWrite (HIGH) esetében:

A kimeneti feszültség 5 V.

digitalWrite (HIGH)


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:

analogWrite (1)

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:

analogWrite (1) - zoomed

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:

analogWrite (127)

Most láthatja, hogy a kimenet az idő fele pontosan HIGH, a fennmaradó idő pedig LOW.


Próbáljuk ki az analogWrite (254) -t:

analogWrite (254)

Ez ellentétes az analogWrite (1) -vel. A kimenet folyamatosan magas, kivéve egy rövid időszakot. Nagyítás:

analogWrite (254) - zoomed

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);}  

Összegzés

A

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.

Code Gorilla
2017-03-16 14:20:04 UTC
view on stackexchange narkive permalink

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.  
Tanmay Yerunkar
2017-03-20 00:03:42 UTC
view on stackexchange narkive permalink

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

sam
2017-04-07 17:15:54 UTC
view on stackexchange narkive permalink

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

PaulMurrayCbr
2017-03-26 14:46:01 UTC
view on stackexchange narkive permalink

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.



Ezt a kérdést és választ automatikusan lefordították angol nyelvről.Az eredeti tartalom elérhető a stackexchange oldalon, amelyet köszönünk az cc by-sa 3.0 licencért, amely alatt terjesztik.
Loading...