Tänases Kullo kohtumises õppisime juurde kaks asja: analogWrite ja for tsükkli.
analogWrite(pordi_number, pwm_väärtus);
analogWrite käivitab siis digitaalpordil PWM funktsionaalsuse - ehk väristab väljundit väga kiiresti 0 ja +5 voldi vahel. pwm_väärtus - vahemikus 0 kuni 255 - määrab ära selle, mitu osa iga võnke ajast on sees 0v ja mitu osa 5v. 0 - kogu aeg on sees 0v. 255 - kogu aeg on sees 5v. Ehk iga samm on 1/255%.
Näiteks selline programmijupp:
void setup(){
pinMode(3,OUTPUT);
analogWrite(3,20);
}
void loop(){}
paneb siis pin 3 ühendatud ledi põlema 20/255% ajast - ja inimsilmale paistab see üsna tuhmi led lambina.
for tsükkel on siis ette nähtud kontrollitud kordamiseks.
for(mida_ teha_esiteks; mida_kontrollida_iga_samm; mida_teha_enne_järgmist sammu){
tegevused_mida_korduvalt_teha;
}
Näiteks niimodi:
for(int i=0; i<=255; i=i+1){
analogWrite(3,i);
delay(10);
}
Ehk mis siis nüüd tehti:
1) loodi muutuja i ja anti talle väärtus 0
2) viiakse läbi kontroll i<=255 - kui vastab tõele, jätkatakse täitmist. kui ei - siis minnakse edasi peale for() {}'i.
3) täidetakse järjest kõik read for'i {} vahel
4) täidetakse for'i korduse lõpu käsk i=i+1
5) pöördutakse tagasi punkti 2
Reaalselt täitis siis program sellised käsud:
analogWrite(3,0);
analogWrite(3,1);
....
analogWrite(3,255);
Ehk ledi heledus muutus täiesti väljas asendist kuni maksimaalse heleduseni.
Päris programmina midagi sellist:
void setup(){
pinMode(3,OUTPUT);
}
void loop(){
for(int i=0; i<=255; i=i+1){
analogWrite(3,i);
delay(10);
}
for(int i=255; i>=0; i=i-1){
analogWrite(3,i);
delay(10);
}
}
Siin siis pannakse pin 3 ühendatud led aegamööda täisheledaks ja jälle aegamööda tagasi väljalülitatuks.
Kommentaare ei ole:
Postita kommentaar