abc Arduino
Modulisanje širine impulsa - analogan ulaz - izlaz sa LED diodom - /PWM PULSE WIDTH MODULATION/ 4
Primjena osciloskopa

9.3. Očitavati vrijednosti sa poteniciometra na analognomu ulazu (opseg 0-1023) i na digitalnom izlazu koristeći PWM davati odgovarajući napon za LED diodu.

Vidi opis PWM: 1 I 2

Arduino očitava analogan ulaz za napon od 0 do 5 V ima vrijednosti od 0 do 1023 respektivno.
Pri ispisu mogu se koristiti digitalni pinovi koji imaju PWM osobinu, to su 3, 5, 6, 9, 10, 11. Označeni su sa ~. Opseg vrijednosti na izlazu je 0-255. Zato očitanu analognu vrijednost na ulazu u opsegu od 0 do 1023 treba pretvoriti-konvertovati u opseg vrijednosti od 0 do 255. Pretvaranje se izvodi map() funkcijom::
izlaznavrijednost = map(ocitanavrijednost, 0, 1023, 0, 255);

Za prikaz izlaza koristi se mjerni instrument osciloskop. Osciloskop grafički na ekranu na ekranu prikazuje promjenu napana u određenom intervalu.
Korisnik bira vremenski opseg prikaza.
Za ovaj slučaj se koristi:
- PERIOD Frekvencija generisanog signala je oko 490Hz

Šema povezivanja: Ispis

Elementi:
- Potenciometar
- LED dioda
- otpornik 220 Ω 1 kom
- osciloskop
- Arduino modul


Slika 2. Promjena širine impulsa - PWM

Listing programa :

// analogan ulaz - izlaz sa LED diodom - Primjena osciloskopa
int ledPin = 6;            // izlaz na digitalni pin
int analogniulaz = A0;     // analogan ulaz
int ocitanavrijednost = 0; // ulazna vrijednost
int izlaznavrijednost;     // izlazna vrijednost od 0 - 255
int kasni = 10;            // kasnjenje u ms

void setup() {
  pinMode(ledPin, OUTPUT);  // izlaz na LED 
  Serial.begin(9600);       //  setup serial
}

void loop() {
  ocitanavrijednost = analogRead(analogniulaz);
  // pretvaranje opsega ulaznih vrijednosti od 0-1234 u izlazne 0-255
  izlaznavrijednost = map(ocitanavrijednost, 0, 1023, 0, 255);
  analogWrite(ledPin, izlaznavrijednost);    // izlazna vrijednost
  Serial.print("in: ");                      // serijski monitor
  Serial.print(ocitanavrijednost); 
  Serial.print("  out: ");
  Serial.println(izlaznavrijednost);     
  delay(kasni); 
}

Index