Помогите со скетчем пжлст

dolgov17jr
Offline
Зарегистрирован: 28.02.2020

Написал скетч для метеостанции на Arduino

#include <LiquidCrystal_I2C.h>
#include <stDHT.h>
#define DHTPIN 8
LiquidCrystal_I2C lcd(0x27, 20, 2);
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  dht.begin();
  lcd.begin(16,2);
}

void loop() {
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  id (isnan(t) || isnan(h)) {
    lcd.setCursor(0, 0);
    lcd.print("Failed to read from DHT"); 
  }
  else {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Humidity: ");
    lcd.print(h);
    lcd.print("%");
    lcd.setCursor(0, 1);
    lcd.print("Temp: ");
    lcd.print(t);
    lcd.print("С");
  }
}

 

 
 
И контроллер выдает ошибку в строчке float h = dht.readHumidity();(no matching function for call to 'DHT::readHumidity()')
В чем может быть причина?
asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

А единтсвенная ли это ошибка которая выдается при компиляции? Огласите весь список, пожалуйста.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Попробуйте сменить библиотеку на #include "DHT.h" 

В Вашей, похоже, этой подпрограммы нет.

dolgov17jr
Offline
Зарегистрирован: 28.02.2020
D:\Arduino\sketches\sketch_feb28a\sketch_feb28a.ino: In function 'void loop()':
 
sketch_feb28a:15:30: error: no matching function for call to 'DHT::readHumidity()'
 
   float h = dht.readHumidity();
 
                              ^
 
In file included from D:\Arduino\sketches\sketch_feb28a\sketch_feb28a.ino:3:0:
 
D:\Arduino\sketches\libraries\stDHT/stDHT.h:19:8: note: candidate: int DHT::readHumidity(int)
 
    int readHumidity(int PONS);
 
        ^~~~~~~~~~~~
 
D:\Arduino\sketches\libraries\stDHT/stDHT.h:19:8: note:   candidate expects 1 argument, 0 provided
 
sketch_feb28a:16:33: error: no matching function for call to 'DHT::readTemperature()'
 
   float t = dht.readTemperature();
 
                                 ^
 
In file included from D:\Arduino\sketches\sketch_feb28a\sketch_feb28a.ino:3:0:
 
D:\Arduino\sketches\libraries\stDHT/stDHT.h:18:8: note: candidate: int DHT::readTemperature(int)
 
    int readTemperature(int PINS);
 
        ^~~~~~~~~~~~~~~
 
D:\Arduino\sketches\libraries\stDHT/stDHT.h:18:8: note:   candidate expects 1 argument, 0 provided
 
D:\Arduino\sketches\sketch_feb28a\sketch_feb28a.ino: At global scope:
 
sketch_feb28a:27:1: error: expected declaration before '}' token
 
 }
 
dolgov17jr
Offline
Зарегистрирован: 28.02.2020

можно ссылку на библиотеку?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

dolgov17jr пишет:
Помогите со скетчем пжлст

Да, не впрс.

Вбрстьт т бблтк,  взьмт нрмльн, пд ктр сктч пслс!

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

dolgov17jr пишет:

 
 
D:\Arduino\sketches\libraries\stDHT/stDHT.h:19:8: note: candidate: int DHT::readHumidity(int)
 
    int readHumidity(int PONS);
 
 
 

Вы эту библиотеку на какой помойке нашли? Или сами в ней ковырялись?

Удалите ее и переустановите. Если хотите именно stDHT, то отсюда - https://github.com/wisenheimer/Arduino/tree/master/libraries/stDHT

dolgov17jr
Offline
Зарегистрирован: 28.02.2020

Переустановил библиотеку,скетч компилировался без ошибок

Но вот дисплей не показывает данные

Что может быть не так?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

dolgov17jr пишет:

Переустановил библиотеку,скетч компилировался без ошибок

Но вот дисплей не показывает данные

Что может быть не так?

адрес дисплея 3F к примеру )))
LiquidCrystal_I2C lcd(0x3F, 20, 4); // A0,A1,A2 -HIGH
/*
 * A0 A1 A2 PCF8574A
 * 0  0  0  - 0x38
 * 1  0  0  - 0x39
 * 0  1  0  - 0x3A
 * 1  1  0  - 0x3B
 * 0  0  1  - 0x3C
 * 1  0  1  - 0x3D
 * 0  1  1  - 0x3E
 * 1  1  1  - 0x3F
 *
 */

dolgov17jr
Offline
Зарегистрирован: 28.02.2020

Попробовал,не работает(

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

dolgov17jr пишет:

Попробовал,не работает(

а сканер какой адрес выдаёт?

//
// Version 1
//    This program (or code that looks like it)
//    can be found in many places.
//    For example on the Arduino.cc forum.
//    The original author is not know.
// Version 2, Juni 2012, Using Arduino 1.0.1
//     Adapted to be as simple as possible by Arduino.cc user Krodal
// Version 3, Feb 26  2013
//    V3 by louarnold
// Version 4, March 3, 2013, Using Arduino 1.0.3
//    by Arduino.cc user Krodal.
//    Changes by louarnold removed.
//    Scanning addresses changed from 0...127 to 1...119,
//    according to the i2c scanner by Nick Gammon
//    [url]<a href="http://www.gammon.com.au/forum/?id=10896%5B/url%5D" rel="nofollow">http://www.gammon.com.au/forum/?id=10896[/url]</a>
// Version 5, March 28, 2013
//    As version 4, but address scans now to 127.
//    A sensor seems to use address 120.
// Version 6, November 27, 2015.
//    Added waiting for the Leonardo serial communication.
//
//
// This sketch tests the standard 7-bit addresses
// Devices with higher bit address might not be seen properly.
//
 
#include <Wire.h>
 
 
void setup()
{
  Wire.begin();
 
  Serial.begin(9600);
  while (!Serial);             // Leonardo: wait for serial monitor
  Serial.println("\nI2C Scanner");
}
 
 
void loop()
{
  byte error, address;
  int nDevices;
 
  Serial.println("Scanning...");
 
  nDevices = 0;
  for(address = 1; address < 127; address++ )
  {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
 
    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");
 
      nDevices++;
    }
    else if (error==4)
    {
      Serial.print("Unknow error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");
 
  delay(5000);           // wait 5 seconds for next scan
}

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Похоже партизаны сперли строку в setup()

  lcd.init();

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

qwone пишет:

Похоже партизаны сперли строку в setup()

  lcd.init();

Этого было достаточно )))
 

 // Set up the LCD's number of columns and rows:
#ifdef LCD_I2C
 lcd.begin();
 #else
 lcd.begin(16, 2);
#endif