Skocz do zawartości

Arduino, przekształcenie programu.


89ardu

Pomocna odpowiedź

Witam, jestem początkującym użytkownikiem. Chciałbym zbudować stacje pogodową na Arduino. W internecie znalazłem projekt w którym znajdują się czujniki DHT11 i BMP180. W swoim projekcie chciałbym zamienić DHT11 na DHT22. Problem polega na tym, że nie umiem przekształcić programu żeby DHT22 działał. W tym programie załączono bibliotekę iDHT11.h . Po zmianie na DHT22.h program wyrzuca błędy.

#include <idDHT11.h>
#include <Wire.h>
#include <VirtualWire.h>
#include <BMP180.h>

int idDHT11pin = 3; 
int idDHT11intNumber = 1; 

void dht11_wrapper(); // must be declared before the lib initialization

idDHT11 DHT11(idDHT11pin,idDHT11intNumber,dht11_wrapper);

BMP180 barometer;
// float seaLevelPressure = 101000;

String calosc, wilg, cisn, temp, wilg1, cisn1, temp1;
char Msg[27];


void setup()
{
 vw_setup(2000);

 wilg = String("W: ");
 cisn = String ("C: ");
 temp = String ("T: " );
 Serial.begin(9600);
 delay(5000);
 Serial.println("Stacja Meteo by ElektroMaras"); 

 Wire.begin();
 barometer = BMP180();
 if(barometer.EnsureConnected())
 {
   Serial.println("Connected to BMP180."); // Output we are connected to the computer.
   barometer.SoftReset();
   barometer.Initialize();
 }
 else
 { 
   Serial.println("Could not connect to BMP180.");

 }
 Serial.print("DHT 11 LIB version: ");
 Serial.println(IDDHT11LIB_VERSION);
 Serial.println("---------------");
 }

// This wrapper is in charge of calling 
// mus be defined like this for the lib work
void dht11_wrapper() 
{  DHT11.isrCallback();  }

void loop()
{
 Serial.print("\nRetrieving information from sensor: ");
   //delay(100);
 DHT11.acquire();
 while (DHT11.acquiring())
   ;
 int result = DHT11.getStatus();
 switch (result)
 {
 case IDDHTLIB_OK: 
   Serial.println("OK"); 
   break; }
 /* case IDDHTLIB_ERROR_CHECKSUM: 
   Serial.println("Error\n\r\tChecksum error"); 
   break;
 case IDDHTLIB_ERROR_ISR_TIMEOUT: 
   Serial.println("Error\n\r\tISR Time out error"); 
   break;
 case IDDHTLIB_ERROR_RESPONSE_TIMEOUT: 
   Serial.println("Error\n\r\tResponse time out error"); 
   break;
 case IDDHTLIB_ERROR_DATA_TIMEOUT: 
   Serial.println("Error\n\r\tData time out error"); 
   break;
 case IDDHTLIB_ERROR_ACQUIRING: 
   Serial.println("Error\n\r\tAcquiring"); 
   break;
 case IDDHTLIB_ERROR_DELTA: 
   Serial.println("Error\n\r\tDelta time to small"); 
   break;
 case IDDHTLIB_ERROR_NOTSTARTED: 
   Serial.println("Error\n\r\tNot started"); 
   break;
 default: 
   Serial.println("Unknown error"); 
   break;
 } */

int a = (DHT11.getHumidity());
String wilg1 = wilg + a + "%";
Serial.println (wilg1);

if(barometer.IsConnected)
 {
   // Retrive the current pressure in Pascals.
   long currentPressure = barometer.GetPressure();

   int b = (currentPressure/100);
   String cisn1 = cisn + b + " hPa"  ;
   Serial.println (cisn1);

   // Retrive the current temperature in degrees celcius.
   float currentTemperature = barometer.GetTemperature();

   int c = (currentTemperature);
   String temp1 = temp + c + " stC";
   Serial.println (temp1);

  String calosc = wilg1 + temp1 + cisn1 ;
  Serial.println(calosc);  

   calosc.toCharArray(Msg,(calosc.length()+1));
   for (int i = 0; i <= calosc.length(); i++) {
   Serial.print(Msg[i]);
  }

   vw_send((uint8_t *)Msg, strlen(Msg));
   vw_wait_tx(); 

   Serial.println("poszlo");         }
   Serial.println(); // Start a new line.
   delay(10000); 
}
Link do komentarza
Share on other sites

Zmieniłem w programie z DHT11 na DHT22 i wyrzuciło takie błędy:

Arduino:1.6.9 (Windows 7), Płytka:"Arduino/Genuino Uno"

In file included from C:\Users\Marcin\Desktop\Stacja_Meteo\Stacja_Meteo.ino:1:0:

C:\Users\Marcin\Documents\Arduino\libraries\DHT-master/DHT.h:19:15: error: expected unqualified-id before numeric constant

#define DHT22 22

              ^

C:\Users\Marcin\Desktop\Stacja_Meteo\Stacja_Meteo.ino:11:1: note: in expansion of macro 'DHT22'

DHT22 DHT22(DHT22pin,DHT22intNumber,dht22_wrapper);

^

C:\Users\Marcin\Desktop\Stacja_Meteo\Stacja_Meteo.ino: In function 'void setup()':

Stacja_Meteo:45: error: 'DHT22LIB_VERSION' was not declared in this scope

  Serial.println(DHT22LIB_VERSION);

                 ^

C:\Users\Marcin\Desktop\Stacja_Meteo\Stacja_Meteo.ino: In function 'void dht22_wrapper()':

Stacja_Meteo:52: error: request for member 'isrCallback' in '22', which is of non-class type 'int'

{  DHT22.isrCallback();  }

         ^

C:\Users\Marcin\Desktop\Stacja_Meteo\Stacja_Meteo.ino: In function 'void loop()':

Stacja_Meteo:58: error: request for member 'acquire' in '22', which is of non-class type 'int'

  DHT22.acquire();

        ^

Stacja_Meteo:59: error: request for member 'acquiring' in '22', which is of non-class type 'int'

  while (DHT22.acquiring())

               ^

Stacja_Meteo:61: error: request for member 'getStatus' in '22', which is of non-class type 'int'

  int result = DHT22.getStatus();

                     ^

Stacja_Meteo:64: error: 'DHTLIB_OK' was not declared in this scope

  case DHTLIB_OK: 

       ^

Stacja_Meteo:93: error: request for member 'getHumidity' in '22', which is of non-class type 'int'

int a = (DHT22.getHumidity());

               ^

exit status 1
'DHT22LIB_VERSION' was not declared in this scope

Ten raport powinien zawierać więcej informacji jeśli w 
File -> Preferencje zostanie włączona opcja "Pokaż
szczegółowe informacje podczas kompilacji"
Link do komentarza
Share on other sites

To może zacznij najpierw od przeczytania jakieś książki o programowaniu w C. Bo to, co robisz, kompletnie nie ma sensu. Jak już będziesz rozumiał co robi ten kod, to zajrzyj do not katalogowych dla DHT11 i DHT22 i zobacz czym się różnią. Podpowiem, że nie tylko nazwą. Wtedy będziesz wiedzieć co trzeba zmienić.

A jak nie chce ci się uczyć i chcesz gotowca, to poszukaj biblioteki dla DHT22, a nie dla DHT11.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.