abc Arduino
Indikator vrijednosti napona sa 2 LED - analogRead digitalWrite funkcije /VOLTMETER - analogRead digitalWrite FUNCTIONS/

9.3. Indikator vrijednosti napona sa 2 LED diode- analogRead digitalWrite funkcije /VOLTMETER - analogRead digitalWrite FUNCTIONS/. Na potenciometra se očitava napon. Za nizak napon uključiti plavi LED koji ostaje uključen dok ne bude blizu maksimuma kad se uključuje crvena.

Opis rješenja: Projekat možemo posmatrati kao voltmetar za indikaciju 3 opsega napona. Vrijednosti napona od 0 do 5 V se na analognom ulazu očitavaju u opsegu od 0-1023 (cjelobrojne vrijednost - INTEGER). Na analognom izlazu su vrijednostu u opsegu od 0-255. Čovjek je naučio na napon od 0 do 5 V. Zato su prikazane 3 varijante progama koje se razlikuju u 4 naredbe: granice i naredba ispisa.
Pretvaranje - konverzija vrijednosti se obavlja funkcijom map.
novaVrijednost = map(ulaznaVrijednost, minUlaza, maxUlaza, minIzlaza, maxIzlaza);

map funkcija - parametri Od 0 do 255 Od 0 do 5
minUlaza 0 0
maxUlaza (očitava se 1023 1023
minIzlaza 0 0
maxIzlaza 255 5
val = map(potVal, 0, 1023, 0, v3); val = map(potVal, 0, 1023, 0, 255); val = map(potVal, 0, 1023, 0, 5);
naredbe za promjenu u listingu zavisno od opsega // Opseg 0-255
int v1 = 35; // vrijednost - granica 1
int v2 = 230; // vrijednost - granica 2
int v3 = 255; // vrijednost - max
Serial.print("Vrijednost (0-255) = ");
// Opseg 0-5
int v1 = 1; // vrijednost - granica 1
int v2 = 4; // vrijednost - granica 2
int v3 = 5; // vrijednost - max
Serial.print("Vrijednost (0-5) = ");


Legenda:
- LED ON - uključene LED diode
- LED OFF - isključene LED diode

Šema povezivanja: Bez prikaza na serijskom monitoru Sa prikazom na serijskom monitoru

Elementi:
- Potenciometar /POTENTIOMETER/
- Otpornik 1 kΩ 1 kom;
- LED dioda 2 kom;;
- Otpornik 220 Ω 2 kom;
- Arduino modul.

 

Opseg koji se testira (0-1023) Listing programa

/* Napon oko 0 iskljuceni, srednji napon plava, visok crvena

// Opseg 0-1023
int v1 = 120;        // vrijednost - granica 1
int v2 = 900;        // vrijednost - granica 2
int v3 = 1023;       // vrijednost - max
  Serial.print("Vrijednost (0-1023) = ");
 
*/

// 09LED2xAnalogRDigitalWMon6
int ledBlue = 3;        // plava LED
int ledRed = 2;         // crvena LED
int analogniulaz = A0;  // potenciometar
int potVal;             // ucitana vrijednost
int val;                // konvertovana vrijednost
// Opseg 0-1023
int v1 = 120;        // vrijednost - granica 1
int v2 = 900;        // vrijednost - granica 2
int v3 = 1023;       // vrijednost - max

int kasni = 300;  // 300 ms
 
void setup() {
  pinMode(ledBlue, OUTPUT); // izlaz plava LED
  pinMode(ledRed, OUTPUT);  // izlaz crvana LED
  pinMode(analogniulaz, INPUT);     // ulaz
   
  // Ispis na serijski monitor
  Serial.begin(9600);
}
 
void loop() {
  potVal = analogRead(analogniulaz);   // ulaz potenciometar
  val = map(potVal, 0, 1023, 0, v3);   // konverzija vrijednosti 0-1023 u 0-255

  if (val <= v1) {// LED iskljuceni
    digitalWrite(ledBlue, LOW);  // plava LED off
    digitalWrite(ledRed, LOW);   // crvana LED off
  }
  else if (val > v1 && val < v2) {    
    digitalWrite(ledBlue, HIGH);   // plava LED on
    digitalWrite(ledRed, LOW);     // crvana LED off
  } else {  
    digitalWrite(ledBlue, LOW);   // plava LED off
    digitalWrite(ledRed, HIGH);   // crvana LED on
  }                
  Serial.print("Vrijednost (0-1023) = ");
  Serial.println(val);
  delay(kasni);                // cekaj
}

 

Opseg koji se testira (0-255) Listing programa :

/* Razlika programa za opseg 0 - 5
Napon oko 0 iskljuceni, srednji napon plava, visok crvena
*/

// 09LED2xAnalogRDigitalWMon6
// Opseg 0-255
int v1 = 35;         // vrijednost - granica 1
int v2 = 230;        // vrijednost - granica 2
int v3 = 255;        // vrijednost - max
  Serial.print("Vrijednost (0-255) = ");
  Serial.print("Vrijednost (0-255) = ");
 
Ispis na SERIAL MONITOR:

Taster otpusten
Taster otpusten
Taster otpusten

 

 

Opseg koji se testira (0-5) Listing programa :

/* Razlika programa za opseg 0 - 5
Napon oko 0 iskljuceni, srednji napon plava, visok crvena
*/
// 09LED2xAnalogRDigitalWMon6
  
// Opseg 0-5
int v1 = 1;        // vrijednost - granica 1
int v2 = 4;        // vrijednost - granica 2
int v3 = 5;        // vrijednost - max
  
  Serial.print("Vrijednost (0-5) = ");
 
Ispis na SERIAL MONITOR:
Vrijednost (0-5) = 0
Vrijednost (0-5) = 1
Vrijednost (0-5) = 2
Vrijednost (0-5) = 3
Vrijednost (0-5) = 4
Vrijednost (0-5) = 5

 

Index