analogWrite aktiviseerib siis seda võimaldavatel digitaalväljunditel "pulsi laiuse modulatsiooni" - ehk teeseldakse mingit vahepealset volti - mitte ainult 0 ja 5v mis muidu võimalikud on.
Kuidas seda siis tehakse?
Arduino PWM võbistamise sagedus on ca 500 hz - ehk siis ühes sekundis lülitatakse väljundit sisse ja välja 500 korda. Seega ühe tsükli pikkus on 1000/500=2 millisekundit (üks sekund on teatavasti 1000 millisekundit).
Selle 2 millisekundi jooksul lülitatakse siis väljund sisse ja välja. Nüüd on ainult küsimus, kui suur osa sellest 2ms on veedetud sisselülitatud asendis, kui kaua aega väljalülitatud asendis.
Graafiliselt siis nii:
Siin joonisel on iga rohelise kriipsu vahe 2 millisekundit. Must joon näitab väljundi lülitumist 0 ja 5v vahel.
Tulemuseks on aga see, et väljundisse ühendatud seade (led lamp näiteks) lülitub siis kiirelt sisse-välja. Kui aga see seade on aeglane - näiteks inimsilm seda ledi vaatamas, voltmeeter vmt. - siis saadaksegi tulemuseks väiksem kogust valgust (tumedam led) või voltmeetri puhul näit mis sama suur kui väljundi proportsionaalselt sisselülitatud aeg. Kui kirjutada selline jupp koodi: analogWrite(3, 255/2) - siis voltmeeter näitaks ilusat 2.5V.
Kommentaare ei ole:
Postita kommentaar