Nem tudom, hogy másnak feltűnt-e (vagy csak én értek valamit nagyon félre), szerintem a HW-PWM-re írt 2. példaprogrammal több részben is gond lehet. Ha jól értem az lett volna a cél, hogy egy PWM képes láb segítségével vezéreljük egy led fényerejét.
1. A példa programban használt két digitális láb közül (10 és 13) csak a 10-es képes hardveres PWM-re. Azt viszont nem írja a példa, hogy kössünk ide egy ledet (pedig szerintem kéne).
2. A setup() eljárásban nincs inicializálva a 10-es láb OUTPUT-ként (alapértelmezésként minden digitális láb INPUT)
3. A setup() eljárásban a 10-es lábra küldünk eg 3-as kitöltöttségű PWM jelet. Ha led lenne odakötve (feltéve, hogy OUTPUT), akkor az egy nagyon halványan felvillanást eredményezne.
4. A loop() eljárásban csak a 13-as lábat (beépített ledet) kapcsolgatjuk ki/be. A HW-PWM képes 10-s lábhoz hozzá sem nyúlunk.
Tehát a példa (mivel 10-es port OUTPUT-ként sem lett definálva, illetve nem lett oda semmi kötve) csak a beéptett led-et villogtatja szerintem.
Szemléltetőbb pédla lenne például egy 10-es lábra kötött led fényeresjének folyamatos növelése, majd csökkentése, például:
Kód: Egész kijelölése
#define LED 10 //10-es lábra van kötve a led
#define FENYERO_MAX 255 //maximum fényerő
#define FENYERO_MIN 0 //minimum fényerő
int atfedes= 5; //Ilyen léptékben változtatjuk a fényerőt
int fenyero=0; //aktuális fényerő (0-255)
void setup() {
pinMode(LED, OUTPUT); //10-es láb OUTPUT
}
void loop() {
//Beállítjuk a fényerőt
analogWrite(LED, fenyero);
//Növeljük a fényerőt az átfedés értékével
fenyero+=atfedes;
//Ha elértük a max vagy min fényerőt,
//akkor változtatjuk az átfedés irányát
if (fenyero==FENYERO_MAX || fenyero==FENYERO_MIN)
atfedes*=-1;
//várakozunk 50ms-ot, hogy lássuk az átfedést
delay(50);
}
Üdv.
NorMen