abc Arduino - primjeri /EXAMPLES/
Voltmetar sa LED diodama /VOLTMETER WITH LEDS/

Ex.9.2. Napravite voltmeter (mjerač napona) očitavanjem napona od 0 do 5 V na analognom ulazu. Izlazna vrijednost se prikazuje brojem LED diode koje su uključene.

Opis rješenja: Potenciometar je spojen na analogan ulaz (A5) za očitavanje napona od 0 do 5 V. Za opseg od 0 do <1V je uključena jedna diode, za opseg od 1 do <2V su uključene prva i druga diode i tako redom. Za napon >= 4 V uključene su sve diode.

1023 predstavlja 5V te se opsezi vrijednosti za pojednie napone računaju:
napon * 1023 / 5

Napon u V Izračunara vrijednost Granična vrijednost LED dioda uključeno
0 - 1 204,6 <=204 1
1 1023 / 5 = 204,6 205 2
2 1023 / 5 * 2 = 409,2 409 3
3 1023 / 5 * 3 = 613,8 614 4
4 1023 / 5 * 4 = 818,4 818 5
5 1023 1023 5



Šema povezivanja: Ispis

Elementi:
- LED dioda5 kom;
- Otpornik 220 Ω 5 kom;
- Potenciometar /POTENCIOMETER/
- Arduino modul.


Slika 1.2. Voltmetar - broj uključenih dioda je indikattor očitanog napona


Slika 2.1. Napon od 0 <= 1 V

Slika 2.2. Napon od 1 <= 2 V

Slika 2.3. Napon od 2 <= 3 V

Slika 2.4. Napon od 3 <= 4 V

Slika 2.5. Napon od 4 <= 5 V

Listing programa :

// Voltmetar od 5 LED dioda. Svaki volt 1 dioda vise
int analogniulaz = A5;
int led1 = 5;
int led2 = 6;
int led3 = 9;
int led4 = 8;
int led5 = 7;
int ocitanavrijednost = 0;

void setup() {
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  
  // Ispis na serijski monitor
  Serial.begin(9600);
}

void loop() {
  ocitanavrijednost = analogRead(analogniulaz);
  
  // Napon: 0 - <1 V     Opseg: 0 - <205
  if ((ocitanavrijednost>=0) && (ocitanavrijednost<205)) {
    digitalWrite(led1, HIGH);
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);
    
  // Napon: 1 - <2 V     Opseg: 205 - <409
  } else if ((ocitanavrijednost>=205) && (ocitanavrijednost<409)) {
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);  

    // Napon: 2 - <3     Opseg: 409 - <614
  } else if ((ocitanavrijednost>=409) && (ocitanavrijednost<614)) {
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led4, LOW);
    digitalWrite(led5, LOW);  
    
    // Napon: 3 - <4 V     Opseg: 614 - <818
  } else if ((ocitanavrijednost>=614) && (ocitanavrijednost<818)) {
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led4, HIGH);
    digitalWrite(led5, LOW);
    
    // Napon: >4      Opseg: ostali
  } else {
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led4, HIGH);
    digitalWrite(led5, HIGH);
  }
  delay(300);
  Serial.println(ocitanavrijednost);
}

Index