Advertisement
Guest User

Untitled

a guest
Jan 18th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.48 KB | None | 0 0
  1. // Funkcja realizująca wysłanie przez mikrokontroler impulsu staru/zapytania
  2. void Request()             
  3. {
  4.     DDRD |= (1<<DHT11_PIN);
  5.     PORTD &= ~(1<<DHT11_PIN);   // Ustawinie stanu niskiego
  6.     _delay_ms(20);              // Odczekanie 20 ms
  7.     PORTD |= (1<<DHT11_PIN);    // Ustawinie stanu wysokiego
  8. }
  9.  
  10. // Funkcja odczytująca impuls odpowiedzi od czujnika DHT11
  11. void Response()        
  12. {
  13.     DDRD &= ~(1<<DHT11_PIN);
  14.     while(PIND & (1<<DHT11_PIN));
  15.     while((PIND & (1<<DHT11_PIN))==0);
  16.     while(PIND & (1<<DHT11_PIN));
  17. }
  18.  
  19. // Funkcja realizująca odbiór danych z czujnika DHT11
  20. int Receive_data()         
  21. {  
  22.     for (int q=0; q<8; q++)
  23.     {
  24.         while((PIND & (1<<DHT11_PIN)) == 0);  // Sprawdzanie czy otrzymany bit jest 0 czy 1
  25.         _delay_us(30);
  26.         if(PIND & (1<<DHT11_PIN))             // Jeśli stan wysoki trwa dłużej niż 30 us
  27.         c = (c<<1)|(0x01);                    // to jest to logiczna 1
  28.         else                                  // jesli nie to jest to logiczne 0
  29.         c = (c<<1);
  30.         while(PIND & (1<<DHT11_PIN));
  31.     }
  32.     return c;
  33. }
  34.  
  35.  
  36. void DHT11_pomiar(void)
  37. {
  38.     Request();              // wysłanie impulsu staru
  39.     Response();             // odbiór impulsu odpowiedzi od czujnika DHT11
  40.     W_CC=Receive_data();    // Zapis pierwszych 8 bitów do zmiennej W_CC
  41.     W_CD=Receive_data();    // Zapis kolejnych 8 bitów do zmiennej W_CD
  42.     T_CC=Receive_data();    // Zapis kolejnych 8 bitów do zmiennej T_CC
  43.     T_CD=Receive_data();    // Zapis kolejnych 8 bitów do zmiennej T_CD
  44.     CheckSum=Receive_data();// Zapis kolejnych 8 bitów do zmiennej CheckSum
  45.  
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement