Attiny85/45 ile Basit Sıcaklık ölçme

Normal projelerimizde arduinonun attmega işlemcilerini kullanıyorduk , çok  giriş çıkışı olmayan bir proje yapacak olursak  o zaman Attiny85/45 biçilmiş kaftan kullanımı çok basittir. Bu mikroişlemcinin 8 bacağı vardır ve bunun 5 tanesi giriş çıkış için kullanılır. Dolayısı  ile bu projemizde attiny85/45 kullandık birde  2 LED kullanarak havanın sıcaklığını öğrenebiliriz.

 

Havanın sıcaklığını LM35 ölçer ve çıkan değere göre birinci LED onlar basamağını ikinci LED birler basamağını temsil eder ve LED ler yanıp sönere hava sıcaklığını tespit edebiliriz

Örneğin hava sıcaklığı 27 Derece

1. Led  iki defa yanıp söner

2. Led 7 defa yanıp sönerek kac derece olduğunu ölçer.

attiny85ISI

Resimde görüldüğü gibi 9 voltluk bir pilkullanılmış bu projemizi 2xAA pil kullanılarak dahi yapılabilir. Eğer 3 voltluk batarya kullanacaksak o zaman LM7805 gerilim regülatörüne ihtiyacımız yoktur. dolayısı ile projemiz daha da kolaylaşıyor. Butonuna basıldığı zaman eğer sıcaklık 35 derece ise 1. LED 3 defa ,2.LED ise 5 defa yanıp sönecektir.

Kullanılan malzemeler

LM35

LM7805

2 Adet LED

Attiny85

İki devre şeması da aynıdır hangisi kolayınıza giderse yapabilirsiniz.

attiny85ISIdevresi

 


/* DIY Miniture Thermometer

This circuit is small thermometer that fits on the back of a
9v battery. Two LEDs flash out the temperature. For instance, if the
temp is 75, the first led will flash 7 times, and the second LED will
flash 5 times.

The circuit:
*Vout from the sensor is connected to A3
*Input from the button goes on pin 4.

*/

int Ctemp; // Temp in C˚
int digit10s; // Temp 10s digit
int digit1s; // Temp 1s digit
float temp; // Temp in F˚
int tempPin = 3; // Raw input from the temp sensor

int LED10 = 1; // LED to flash the 10s digit
int LED1 = 0; // LED to flash the 1s digit

int button = 4; // Digital input from the pushbutton
int bPress; // Variable that names the sate of the button

int time = 250; // this variable "time" is the delay between the flashes of the LED.
// so if the LEDs are flasing too slow or too fast you can
// adjust it here and it will change the delay everywhere.

void setup()
{ // You should know what all this is 😛
pinMode(LED10, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(button, INPUT);
pinMode(tempPin, INPUT);
}

void loop()
{

Ctemp = analogRead(tempPin); // Okaydokey we are setting "Ctemp" to the anlog Reading at tempPin. Remember what tempPin is?
Ctemp = Ctemp * 0.48828125; // Converting the analog voltage from the temp sensor to celcius. This is ONLY FOR THE LM35
// Note: This number may be a little off for the LM35. It seems to work OK though.

temp = (Ctemp * 9 / 5) + 36; // Now this is for converting the Celsius reading (Ctemp) to a farenheit temperature.
// We are setting "temp" to the new F˚ reading.

bPress = digitalRead(button); // Setting "bPress" to a digital reading at button. If you recall "button" is set to pin 4.


/******************************BEGINNING OF PLAIN COMPLICATED!*****************************/


if (bPress == HIGH) // The fist if statement. None of the code below will run unless this condition is met.
{
digit10s = int(Ctemp / 10); // find the 10s digit of the temp. If your temp was 26.89 then it will become 2.689 (divide by 10) and the then int() instruction casts it to an integer removing everything after the decimal place then leaving you with digit10s = 2
digit1s = int(Ctemp - (digit10s * 10)); //find the 1s digit. We use the 10sdigit from above and multiply it by ten, giving 20 and subtract that from our temp (26.89) leaving us with 6.89, then cast this to an int reducing it to 6.

while(digit10s != 0) //do a while loop while digit10s does not equal 0
{
analogWrite(LED10, 75);
delay(time);
analogWrite(LED10, 0);
delay(time);
digit10s--; //decrement digit10s by 1
} // end of the while statement

delay(1000);

while(digit1s != 0) //do a while loop while digit1s does not equal 0
{
analogWrite(LED1, 75);
delay(time);
analogWrite(LED1, 0);
delay(time);
digit1s--; //decrement digit1s by 1
} // end of the while statement


} // button check


else // Now, do you remeber our IF statement? It was testing the button. So, if the button insn't pressed, turn all the LEDs off.
{
digitalWrite(LED10, LOW);
digitalWrite(LED1, LOW);
}


delay(10); // it's to stop the code running too often.



} // void loop

Boş zamanlarda arduino ile uğraşan kendi halinde bir Öğretmen.

  

Bir Cevap Yazın

Time limit is exhausted. Please reload CAPTCHA.