• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Problem z programowaniem Arduino Pro mini
#1
Witam, jestem początkującym użytkownikiem Arduino więc proszę o wyrozumiałość. Chcę zbudować bezprzewodową stacje meteorologiczną. Znalazłem w internecie schemat połączeń wraz z kodem. Po połączeniu układu i próbie wgrania programu do Pro mini wyskakuje mi taki błąd:https://zapodaj.net/0051ea8a4c4cf.jpg.html
Kod:
#include <idDHT11.h>

Kod:
#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);
}
[url=https://zapodaj.net/27a55eadfd539.jpg.html][/url]


Jaki jest powód takiego błędu?
 
Odpowiedź
#2
Jaki jest powód takiego błędu?

Ano w katalogu bmp180 jest plik BMP180.h a tam jest deklaracja #include "../Wire/Wire.h" a kompilator upiera się że na tej ścieżce Wire.h niema i co ty na to ?
Pod warunkiem że masz wire zamień tak #include <Wire.h>
albo #include "Wire.h" w pliku BMP180.h i próbuj .
Jeśli to nie tajemnica to podaj link do tej strony ?
 
Odpowiedź
#3
Witam, poprawiłem deklaracje w pliku BMP180.h i program już nie zawiera błędów.
Link do stacji meteo https://www.youtube.com/watch?v=j7jtJ4oOp1Y
Dla czujnika DHT11 zastosowano bibliotekę idDHT11.h a jakbym chciał zamienić ten czujnik na DHT22 to muszę mieć bibliotekę idDHT22.h czy DHT22.h ?
 
Odpowiedź
#4
idDHT11.h -to jest plik nagłówkowy
Id* to jest z (callback) https://pl.wikipedia.org/wiki/Wywo%C5%82anie_zwrotne.
Adafruit ma taką bibliotekę oryginalną do dht 11,21,22 na początku wskazuje się czujnik ,na forum stacji pogody pisali o SHT31 bardziej dokładny od dht u Ali ok.20zł . https://www.aliexpress.com/item/Free-shi...592.pUKfoE ------ https://learn.adafruit.com/adafruit-sht3...g-and-test
Mam dwa dht11 to jakieś głupoty wyświetla.
 
Odpowiedź
#5
Chcę zamienić czujnik DHT11 na DHT22. Więc co muszę zmienić w programie aby czujnik ten działał?
 
Odpowiedź
#6
Zainstalować i dodać do projektu bibliotekę dht22 ,podpatrzeć jak jest w przykładzie każda biblioteka ma przykład.
 
Odpowiedź
#7
Zainstalowałem bibliotekę dht22 ale nie wiem jak pozmieniać w kodzie aby działał czujnik dht22 .
 
Odpowiedź
#8
Są różne biblioteki imają inne deklaracje wywołania ,pomocnym jest przykład Plik >Przykłady
 
Odpowiedź
#9
zrób sobie najpierw jakiś test z serialem by wyświetlic co sekunde temp....
i wklej to z przykłady dht22
wtedy wiesz że dziala i wkładasz to gdzie chcesz ;-)
 
Odpowiedź
#10
Po wgraniu biblioteki DHT.h i po zweryfikowaniu programu wyskakuje taki błąd:
UWAGA: Błędny folder .github w bibliotece 'DHT sensor library'
In file included from C:\Users\Marcin\Documents\Arduino\libraries\DHT-sensor-library-master\DHT_U.cpp:22:0:

C:\Users\Marcin\Documents\Arduino\libraries\DHT-sensor-library-master\DHT_U.h:25:29: fatal error: Adafruit_Sensor.h: No such file or directory

#include <Adafruit_Sensor.h>

                            ^

compilation terminated.

exit status 1
 
Odpowiedź
  


Skocz do:


Przeglądający: 2 gości