SAYFALARIMIZ

19 Aralık 2021 Pazar

ARDUINO SICAKLIK VE NEM ÖLÇÜMÜ (DHT11 Sensör ile)

 Sevgili Öğrenciler,


Arduino robotik setinizle projenin  kodları Arduino programında yazarak DHT11 sensör kullanıp  "Sıcaklık ve Nem ölçümü PROJESİ " yapıyoruz.

Projemizde, Kodla Türkiye Robotik setinde bulunan Junior Shield+ daki DHT11 bölümüne açık mavi renkteki sıcaklık&nem sensörünü takarak projeyi hazırlıyoruz.

Not: Projeyi başarıyla tamamladığınızda ölçüm sonuçları Arduino serial port ekranında görüntülenecektir.

Başarılar!






//Arduino Referans Kaynak Kodu:

// Global Değişkenler

int DHT11_Pin = 8; // DHT11 Data Pin


int Humidity = 0; 

int Temp = 0;

int TempComma = 0;

bool DHTError = false; // Checksum Error


 void DelayTimer(long int DelayValue){

  long int DelayTime = micros();

  do {

    

  }while (micros()-DelayTime < DelayValue);

  }


// Main DHT Void

void DHT11(){

long int DataTime = 0;

byte Result[45];

byte DataArray = 0;

byte DataCounter = 0;

byte DHTData[4];


bool BlockDHT=false;

 

 pinMode(DHT11_Pin,OUTPUT); 

 digitalWrite(DHT11_Pin,HIGH);

 DelayTimer(250000); //Wait 250millisec

 digitalWrite(DHT11_Pin,LOW);

 DelayTimer(30000);   //Wait 30millisec

 digitalWrite(DHT11_Pin,HIGH);

 DelayTimer(50); //Wait 50microsec

 pinMode(DHT11_Pin,INPUT); 


do {

  if (digitalRead(DHT11_Pin) == 0 && BlockDHT == false) {BlockDHT = true;Result[DataArray]=(micros()-DataTime);DataArray++;DataTime=micros();} //If DHT pin is low, go to next Dataset

  if (digitalRead(DHT11_Pin) == 1) {BlockDHT = false;} // As long as DHT pin is Hight add time in Microseconds to Result

  

}while((micros()-DataTime) < 150); // if DTH Sensor high for more than 150 usec, leave loop


for (int  i=2; i< DataArray; i++) {

  if (Result[i] <= 90) Result[i]=0; else Result[i]=1;

  //Serial.print(Result[i]);Serial.print(" ");

                                  }

 //Serial.println();

for (int  j=0; j< 5; j++){     // redo it for the 5 Bytes (40 Databits /8 = 5)

for (int  i=0; i< 8; i++) {bitWrite(DHTData[j], 7-i, Result[i+2+(j*8)]);}  // Create 5 Databytes from the 40 Databits (Ignoring the 2 first Databits)

}

// check checksum                            }

if (DHTData[4] == (DHTData[0]+DHTData[1]+DHTData[2]+DHTData[3])){Humidity = DHTData[0];Temp = DHTData[2];TempComma = DHTData[3];DHTError=false;} else DHTError=true; //If Checksum is worng, Temp=99 (Dataset 0-3 in addition = Dataset 4 = Checksum OK)

}

void setup() {

 Serial.begin(9600);

}

void loop() {

 DHT11();

  if (DHTError == false){Serial.print("NEM = ");Serial.print(Humidity);Serial.print("% ");Serial.print(" SICAKLIK = ");Serial.print(Temp);Serial.print(",");Serial.print(TempComma);Serial.println("°C ");} else Serial.println("Error");

  DelayTimer(500000); //wait 2,5 sec

}





Hiç yorum yok:

Yorum Gönder