This is an old revision of the document!


Projekt 3 Näited 4

/*
Nimetus: Näide #4.1 Temperatuuri andur koos matemaatika teegiga
 
 
Kirjeldus: 
          Kasutab Steinhart-Hart termistori valemit:
          temperatuur kelvinites = 1 / {A + B[ln(R)] + C[ln(R)]^3}
          kus A = 0.001129148, B = 0.000234125 ja C = 8.76741E-08
Autor: Milan Malesevic and Zoran Stupic 
Modifikatsioon: Raivo Sell
Kuupäev: 15.01.2013/4.06.2014
Versioon: 1.1
*/
 
// Kaasame vajalikud teegid
#include <math.h>
#include <LiquidCrystal.h>
 
// Initsialiseerime LCD koos vastavate viikude ühendamisega
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
int andur = A1; // määrame temperatuurianduri (termistori) sisendviigu
 
void setup() {
  lcd.begin(16, 2); //Määrame LCD read ja veerud
  lcd.print("Temperatuur"); // Trükime tervitusteksti
  delay (1000);
}
 
void loop() {
 Termistor(analogRead(andur)); // Käivitame funktsooni
 delay(1000); // Ootame 1 sek.
 lcd.clear(); // Puhastame ekraani vanadest andmetest
}
 
void Termistor(int RawADC) {
   double Temp;
   long Takistus;
  // Valem: Takistus = (1024 * JaguriTakisti/ADC) - JaguriTakisti 
  Takistus=((10240000/RawADC) - 10000);    
 
  //Esimene rida
  lcd.setCursor(0, 0);
  lcd.print("AD=");
  lcd.print(RawADC); //Trükime analoogsisendi väärtuse
 
  lcd.setCursor(8, 0);
  lcd.print("U=");
  lcd.print(((RawADC*5.0)/1024.0),3);  //Trükime pinge väärtuse
 
 
  //Teine rida
  lcd.setCursor(0, 1);
  lcd.print("R=");
  lcd.print(Takistus); //Trükime takistuse väärtuse
 
  Temp = log(((10240000/RawADC) - 10000));
  Temp = 1/(0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp))* Temp);
  Temp = Temp - 273.15; // Konverteeri Kelvinid Celciustesse
 
  lcd.setCursor(8, 8);
  lcd.print("T=");
  lcd.print(Temp); //Trükime temperatuuri väärtuse
 
}

Näide #4.2 Kaugusandurid

// Reading analog and digital sensors
void setup() 
{ 
  // For visualization we can use serial monitor
  Serial.begin(9600);
} 
 
void loop() 
{ 
  // Read the input on analog pin 2 and 3:
  int AnalogSensorValue = analogRead(A2); //Sharp analoog kaugusandur
  int DigitalSensorValue = digitalRead(A3); //Digtaalne lähedusandur
 
  Serial.println(AnalogSensorValue); // Print out the analog value
  Serial.println(DigitalSensorValue); // Print out the digital value
 
  delay(500); // Delay in between readings for readability
}

Harjutus #4.1

Modifitseerida programmi nii, et potentsiomeetriga määratakse temperatuuri nivoo, mis salvestatakse nupuga programmi mällu ja selle nivoo ületamisel käivitatakse täiturmehhanism (milleks on LED).
Lisaülesanne: Kombineerida LED-i heleduse programm ja eelnev temperatuuri juhtimise programm, kus LED-i heledus sõltub sellest, kui palju nivootemperatuuri ületati (1 kraad: heledus 25 %, 2 kraadi: heledus 50 %, 3 kraadi: heledus 75 % ja 5 kraadi: heledus 10

Harjutus #4.2

Modifitseerida kaugusandurite lugemise programmi nii, et andurite info kuvatakse LCD ekraanile ja ühikuteks on sentimeetrid (+-5cm täpsus). Kui pole võimalust mõõtevahendit kasutada, siis kasutada anduri andmelehe graafikut.

et/arduino/sensorss/project3.1482833537.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0