Всем привет. Пытаюсь подключить сенсор SHT1x. Для этого использую пример с оф. сайта производителя. Но ничего не выходит. Вот скетч: Код (Text): #include <SHT1x.h> // Specify data and clock connections and instantiate SHT1x object #define dataPin 10 #define clockPin 11 SHT1x sht1x(dataPin, clockPin); void setup() { Serial.begin(38400); // Open serial connection to report values to host Serial.println("Starting up"); } void loop() { float temp_c; float temp_f; float humidity; // Read values from the sensor temp_c = sht1x.readTemperatureC(); temp_f = sht1x.readTemperatureF(); humidity = sht1x.readHumidity(); // Print the values to the serial port Serial.print("Temperature: "); Serial.print(temp_c, DEC); Serial.print("C / "); Serial.print(temp_f, DEC); Serial.print("F. Humidity: "); Serial.print(humidity); Serial.println("%"); delay(2000); } При попытке компиляции получаю следующие ошибки: Код (Text): test_ino.cpp.o: In function `global constructors keyed to sht1x': test_ino.cpp:38: undefined reference to `SHT1x::readTemperatureC()' test_ino.cpp:38: undefined reference to `SHT1x::readTemperatureF()' test_ino.cpp:38: undefined reference to `SHT1x::readHumidity()' test_ino.cpp:9: undefined reference to `SHT1x::SHT1x(int, int)' collect2: ld returned 1 exit status В чём может быть причина? Код SHT1x.h: Код (Text): #ifndef SHT1x_h #define SHT1x_h #if (ARDUINO >= 100) #include <Arduino.h> #else #include <WProgram.h> #endif class SHT1x { public: SHT1x(int dataPin, int clockPin); float readHumidity(); float readTemperatureC(); float readTemperatureF(); private: int _dataPin; int _clockPin; int _numBits; float readTemperatureRaw(); int shiftIn(int _dataPin, int _clockPin, int _numBits); void sendCommandSHT(int _command, int _dataPin, int _clockPin); void waitForResultSHT(int _dataPin); int getData16SHT(int _dataPin, int _clockPin); void skipCrcSHT(int _dataPin, int _clockPin); }; #endif
Это ошибка линкера, которая говорит о том, что объектый файл, являющийся результатом компиляции .cpp файла библиотеки, по тем или иным причинам не участвовал в линковке. Скорее всего вы не корректно разместили библиотеку. По какому пути она у вас? Какие файлы в директории? Можете выдать verbose-компиляции?
Уп-с... в очередной раз, глупая ошибка, связанная с тем, что я не положил cpp файл в директорию с библиотеками =( Всё заработало, спасибо!
Тем не менее, очень странные данные я с сенсора получаю: Код (Text): -39.27 -39.62 -37.46 -37.81 -38.06 -38.15 -38.21 -38.38 -38.48 -38.52 Код: Код (Text): #define DATA_PIN 42 #define CLOCK_PIN 43 SHT1x sht1x(DATA_PIN, CLOCK_PIN); float temperatureInbox; float humidityInbox; void SHT1xSensorInit() { } void SHT1xSensorHandler() { temperatureInbox = sht1x.readTemperatureC(); humidityInbox = sht1x.readHumidity(); Serial.println(temperatureInbox); delay(100); } float getTemperatureInbox() { return temperatureInbox; } float getHumidityInbox() { return humidityInbox; }
Vir, что в итоге в со странными данными? У меня тоже самое. Вывожу в браузере через интернет-шилд: Температура -40.01 Влажность -4.69