Kuten otsikossa sanotaan. Mitä eroa näiden kahden välillä on?
analogWrite(pin,0-255)
vs digitalWrite(pin,LOW-HIGH)
Kommentit
- En ’ tarkoita olevan epäkohtelias, mutta mikä oli hämmentävää tässä arduino.cc-asiakirjoissa tai mukana IDE?
vastaus
digitalWrite asettaa määritetyn nastan toiseen tilasta – HIGH / LOW, joka vastaa 5v: tä (3,3 V joillakin levyillä) ja vastaavasti maadoitusta.
analogWrite voi vaihdella käytetyn ulostulotyypin mukaan.
Jos sitä käytetään PWM-nastaan – se asettaa nastan jaksolliseen korkeaan / matalaan signaaliin, jossa prosenttiosuus korkeaan kulutetusta signaalista on verrannollinen kirjoitettuun arvoon. esimerkiksi –
analogWrite(PWMpin,255)
KORKEA 100% ajasta, kun taas
analogWrite(PWMpin,127)
Tulee KORKEA 50% ajasta ja LOW 50% ajasta.
Kun käytetään analogWriteä DAC-nastalle (saatavana joillekin levyille, kuten DUE tai MEGA ) anaali ogWrite saa tietyn nastan tosiasiallisesti tuottamaan jännitetason, joka on verrannollinen määritettyyn analogiseen arvoon. 255]
analogWrite(DACpin,255)
Aiheuttaa määritetyn nastan tuottavan 3.3v: n ja-
analogWrite(DACpin,127)
Aiheuttaa määritetyn nastan tuottavan 1,35v
Kommentit
- Ei, Megassa ei ole DAC: ää.
- olet oikeassa, vastausta muokattu vastaamaan tätä.
- Hienoa. Otin vapauden tehdä muokkauksesta suppeampi.
- Uskon, että ” maxanalog ” määrittelee tai vakiona, jotta saadaan parempi yhteensopivuus muiden alustojen kanssa. Esp8266: ssa on analoginen kirjoitus, joka voi vaihdella välillä 0 – 1024. * I ’ olen naarmuuntunut hiuksista yrittäen selvittää, miksi RGB-led-ohjaimeni ei halua / div> t on yhtä kirkas samalla koodilla, luulin sen johtuvan teho- tai jänniteerosta, mutta käytin MOSFETiä sopivalla (voitto?) kertoimella. Se oli yksinkertaisesti päällä (1024/256) ajasta.
Vastaa
analogWrite (): Menetelmä analogWrite () asettaa PWM-lähtönastan arvon. Analoginen kirjoittaminen () on asteikolla 0-255, siten että analogWrite (255) vaatii 100%: n käyttöjakson (aina päällä), ja analogWrite (127) on 50%: n käyttöjakso (puolet ajasta).
Syntaksi : analogWrite (tappi, val)
Missä,
tappi: PWM-lähdön pin-numero.
val: työjakson int-arvo välillä 0 (aina pois päältä) 255: een (aina päällä)
Esimerkkikoodi:
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: DigitalWrite () -menetelmä asettaa digitaalisen nastan arvoksi HIGH tai LOW. Tässä 5 V (tai 3,3 V 3,3 V: n levyillä) korkealle, 0 V (maa) LOW: lle.
Syntaksi: digitalWrite (pin, val)
Missä,
pin: pin-numero
val: HIGH tai LOW
Esimerkkikoodi:
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 }
Vastaus
digitalWrite
asettaa lähtönastan joko LOW tai HIGH (jos nämä jännitteet riippuvat V cc: stä prosessorin . Unolle tai Megalle, joka olisi 0 V tai 5 V (tai lähellä sitä).
Tässä on digitalWriten (LOW) kuvakaappaus:
Toisin sanoen lähdön nasta on 0 V. / p>
Nyt digitalWrite (HIGH):
Lähtöjännite on 5V.
analogWrite
olisi pitänyt nimetä PWMwrite-tiedostoksi, koska se saa prosessorin ajastimet tuottamaan PWM: n (pulssinleveyden modulointi).
Kokeillaan analogWrite (1):
Voit nähdä, että jännitetaso on suurimmaksi osaksi 0 V ja menee 5 V: iin lyhyeksi ajaksi. Näet myös, että taajuus on 490 Hz, mikä on analogWrite-sovelluksen viitesivun mukaan.
Lähentäminen:
Lähtö on korkea 8 µs: lle, mikä on tarkalleen 1/256 2048 µs: stä, joka on ajastimen jakso. Joten meillä on käyttöjakso 1/256 (0,39%).
Kokeillaan analogWriteä (127) – puolivälissä 0: sta 255: een:
Nyt voit nähdä, että lähtö on KORKEA tarkalleen puolet ajasta ja MATALA loppuajasta.
Kokeillaan ”analogWrite (254):
Tämä on analogisen kirjoituksen (1) vastakohta. Lähtö on KORKEA koko ajan lukuun ottamatta lyhyttä jaksoa. Lähentäminen:
Nyt lähtö on pois 8 µs – verrattuna edelliseen kuvaan, jossa se oli päällä 8 µs.
analogWrite (0)
on sama kuin digitalWrite (LOW)
.
analogWrite (255)
on sama kuin digitalWrite (HIGH)
.
Tämän todistaa johdotuksen_analog.c vastaava koodi:
if (val == 0) { digitalWrite(pin, LOW); } else if (val == 255) { digitalWrite(pin, HIGH); }
Yhteenveto
analogWrite
konfiguroi periaatteessa laitteistoajastimet antamaan PWM: n. Kun olet tehnyt, että ajastinlaitteisto antaa pyydetyn käyttöjakson (0: stä 255: een), jossa 0 on aina pois päältä, 255 on aina päällä ja jokin välissä oleva arvo antaa PWM: n (pulssiulostulo).
Lisätietoja ajastimista on kohdassa sivuni ajastimista .
Vastaa
digitalWrite asettaa nastan suureksi tai matalaksi arvoksi, joka pysyy täsmälleen siinä arvossa, kunnes digitalWrite vaaditaan uudelleen tälle nastalle.
analogWrite asettaa nastalle värähtelevän arvon, jolla on pulssin pituus toisen parametrina määritetyn käyttöjakson perusteella.
Joten:
digitalWrite (5, HIGH); // Pin 5 goes high analogWrite (6, 127); // Pin 6 oscillates regularly between 0v and 5v (or 3.3v) at about 250Hz.
Vastaa
analogWrite (): Kirjoittaa analogisen arvon (PWM-aalto) nastalle . Voidaan käyttää LED-valojen vaihtamiseen kirkkaudella tai moottorin käyttämiseen eri nopeuksilla. Puhelun jälkeen numeroon analogWrite()
tappi tuottaa vakion neliöaalto määritetylle työjaksolle, kunnes seuraava puhelu numeroon analogWrite()
(tai kutsu numeroon digitalRead()
tai digitalWrite()
samaan tapiin). PWM-signaalin taajuus useimmilla nastoilla on noin 490 Hz. Unon ja vastaavien levyjen nastojen 5 ja 6 taajuus on noin 980 Hz. Leonardon nastat 3 ja 11 toimivat myös 980 Hz: n taajuudella.
Lisätietoja: https://www.arduino.cc/en/Reference/analogWrite
analogRead (): Lukee arvon määritetystä analogisesta nastasta. Arduino-kortti sisältää 6-kanavan (8 kanavaa Mini- ja Nano-laitteissa, 16 Megalla), 10-bittisen analogia-digitaalimuunnin. Tämä tarkoittaa, että se kartoittaa 0 – 5 voltin syöttöjännitteet kokonaislukuiksi välillä 0 – 1023. Tämä antaa tarkkuuden lukemien välillä: 5 volttia / 1024 yksikköä tai .0049 volttia (4,9 mV) yksikköä kohti. Syöttöaluetta ja tarkkuutta voidaan muuttaa käyttämällä analogReference()
.
Lisätietoja: https://www.arduino.cc/en/Reference/analogRead
Vastaus
digitalWrite aseta määritetty nasta toiseen kahteen tilaan – HIGH / LOW
Missä, HIGH = 5 V ja LOW = 0 V
analogWrite Aseta PWM-nastan PWM-arvo
(Arduino UNO: ssa PWM-nastat ovat 3, 5, 6, 9, 10, 11)
Se asettaa nastan jaksolliseen korkeaan / matalaan signaaliin.
analogWrite(PWMpin,255)
Tulee KORKEA 100% ajasta, kun taas
analogWrite(PWMpin,127)
Tulee KORKEA 50% ajasta ja LOW 50% ajasta
Vastaa
Joten mitä eroa analogWrite (X, 255) ja digitalWrite (X, HIGH) välillä on? Luultavasti ei mitään, paitsi että prosessorin on tehtävä ylimääräisiä juttuja selvittääkseen, että sen ei tarvitse käyttää PWM: ää ja myös tyyliä.