Robot kursu sensör modülü üzerinde bulunan LM35 sıcaklık sensörü kullanımına ait bir örnektir. Program  satırların da gerekli açıklamalar yapılmıştır.
Arduino sensör modülümüz ile LDR, NTC, PTC , LM35 gibi sensörler header üzerinden takılıp kullanılabilmektedir. 4 adet 7 segment display de tarama yöntemini öğrenmek ve sensörlerden gelen bilgileri göstermek mümkündür. LM35 sensörü ile ölçülen ısı displaylerde gösterilebilecektir. Böylelikle analog işlemlerin öğrenilmesi daha kolay olacaktır.

Arduino kodu için tıklayınız.

 

 

Her rakam fonksiyon olarak tanımlanmıştır. Göstermek istediğimiz rakamı fonksiyon olarak çağırıyoruz.  Displayler tarama yöntemi ile çalışmaktadır.

/*
*25.03.2016
www.robotkursu.com

*/
int lm35=A3; // ısı sensörü

int buton1=12;
int buton2=11;
int buton3=13;
//— segmentler—
int a=4;
int b=6;
int c=A1;
int d=8;
int e=7;
int f=5;
int g=A2;
int h=A0;
//——–
int disp1=2;
int disp2=3;
int disp3=A5;
int disp4=A4;
//——–
int t=5;
float sicaklik; //Analog değeri dönüştüreceğimiz sıcaklık
float olculendeger; //Ölçeceğimiz analog değer

void setup() {
pinMode(a,OUTPUT); pinMode(b,OUTPUT);pinMode(c,OUTPUT);
pinMode(d,OUTPUT); pinMode(e,OUTPUT);pinMode(f,OUTPUT);
pinMode(g,OUTPUT); pinMode(h,OUTPUT);
pinMode(disp1,OUTPUT);pinMode(disp2,OUTPUT);
pinMode(disp3,OUTPUT);pinMode(disp4,OUTPUT);
Serial.begin(9600); // serial monitörden görebilmek için
pinMode(lm35,INPUT); // sensörden gelen veri
pinMode(9,OUTPUT);// lm35 in + enerji ucu
}

void loop() {
digitalWrite(9,HIGH);// lm35 aktif
olculendeger = analogRead(lm35); //A3’ten değeri alacak
olculendeger = (olculendeger/1023)*5000;//değeri mV’a dönüştürecek
sicaklik = olculendeger /10,0; // mV’u sicakliğa dönüştürecek

int x=sicaklik*100;
int onlar=x/1000; // onlar basamağı bulundu
int birler=sicaklik-(onlar*10); // birler basamağı bulundu
int virguldensonrasi=x%100; // ondalık kısmı elde ettik
int virgulbirler=virguldensonrasi/10;
// int virgulonlar=virguldensonrasi%10;
/*
Serial.print(“Sicaklik : “);
Serial.print (sicaklik);
Serial.println (” derece”);

Serial.println ( onlar );
Serial.println ( birler );
Serial.println ( virgulbirler );
Serial.println ( virgulonlar );
delay (1000); //1sn aralıklarla yapacak
*/
for(int i=0;i<50;i++){ // bir kere ölçüp 50 defa gösteriyoruz yoksa değerler oynadıkça ekran titriyor
switch (onlar) {
case 0: sifir(); break;
case 1: bir(); break;
case 2: iki(); break;
case 3: uc(); break;
case 4: dort(); break;
case 5: bes(); break;
case 6: alti(); break;
case 7: yedi(); break;
case 8: sekiz(); break;
case 9: dokuz(); break;
}

digitalWrite(disp1,HIGH);// 1. display aktif
delay(t);
digitalWrite(disp1,LOW);// 1. display pasif
//———————————————–
switch (birler) {
case 0: sifir(); break;
case 1: bir(); break;
case 2: iki(); break;
case 3: uc(); break;
case 4: dort(); break;
case 5: bes(); break;
case 6: alti(); break;
case 7: yedi(); break;
case 8: sekiz(); break;
case 9: dokuz(); break;
}
digitalWrite(h,HIGH);
digitalWrite(disp2,HIGH);// 2. display aktif
delay(t);
digitalWrite(disp2,LOW);// 2. display pasif
//———————————————–
switch (virgulbirler) {
case 0: sifir(); break;
case 1: bir(); break;
case 2: iki(); break;
case 3: uc(); break;
case 4: dort(); break;
case 5: bes(); break;
case 6: alti(); break;
case 7: yedi(); break;
case 8: sekiz(); break;
case 9: dokuz(); break;
}
digitalWrite(disp3,HIGH);// 3. display aktif
delay(t);
digitalWrite(disp3,LOW);// 3. display pasif
//———————————————–
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(h,LOW);

digitalWrite(disp4,HIGH);// 4. display aktif
delay(t);
digitalWrite(disp4,LOW);// 4. display pasif
//———————————————–
}

}
/////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
void sifir()
{
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,LOW);
digitalWrite(h,LOW);
}
void bir()
{
digitalWrite(a,LOW);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(h,LOW);
}
void iki()
{
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,LOW);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,LOW);
digitalWrite(g,HIGH);
digitalWrite(h,LOW);
}
void uc()
{
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,HIGH);
digitalWrite(h,LOW);
}
void dort()
{
digitalWrite(a,LOW);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(h,LOW);
}
void bes()
{
digitalWrite(a,HIGH);
digitalWrite(b,LOW);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,LOW);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(h,LOW);
}
void alti()
{
digitalWrite(a,HIGH);
digitalWrite(b,LOW);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
}
void yedi()
{
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
digitalWrite(g,LOW);
digitalWrite(h,LOW);
}
void sekiz()
{
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(h,LOW);
}
void dokuz()
{
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
digitalWrite(h,LOW);
}