помогите новичку с кодом
- Войдите на сайт для отправки комментариев
Втр, 31/01/2017 - 17:03
Здравствуйте! Помогите новичку. Что это за ошибка и как ее исправить? Ниже код и скрин. Буду благодарен. Ошибка в строке 10.
// include the library code for LCD shield: #include <Wire.h> #include <Adafruit_MCP23017.h> #include <Adafruit_RGBLCDShield.h> // include code for temperature and humidity #include <dht.h> //Setup Temperature and humidity #define dht_dpin 2 //chanel for temperature sensor DHT dht; //Setup LCD Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield(); // These #defines make it easy to set the backlight color #define OFF 0x0 #define RED 0x1 #define YELLOW 0x3 #define GREEN 0x2 #define TEAL 0x6 #define BLUE 0x4 #define VIOLET 0x5 #define WHITE 0x7 //ports for input devices int const smallPM1 = 13; int const largePM1 = 12; int const smallPM2 = 5; int const largePM2 = 4; int const mq2port = A0; int const NO2port = A2; int const mq9port = A1; int const O3port = A3; int const mq9powerPort = 3; // constants for use with gas sensors float const mq2seriesResistor = 47000; float const NO2seriesResistor = 22000; float const mq9seriesResistor = 10000; float const O3seriesResistor = 22000; // variables for use in running particulate matter calculations long const sampleRate = 20; long measurementCount = 0; long smallPM1Count = 0; long largePM1Count = 0; long smallPM2Count = 0; long largePM2Count = 0; long priorSampleTime = 0; double smallPM1percentRunning; double largePM1percentRunning; double smallPM2percentRunning; double largePM2percentRunning; //variables for gas sensor calcuations float mq2resistance; float NO2resistance; float mq9resistance; float O3resistance; //variables for temperature and humidity int temperature; int humidity; //miscellaneous variables int mq9power = 300; int displayNumber = 0; void setup() { Serial.begin(9600); lcd.begin(16, 2); pinMode (smallPM1, INPUT); pinMode (largePM1, INPUT); pinMode (smallPM2, INPUT); pinMode (largePM2, INPUT); pinMode (mq2port, INPUT); pinMode (NO2port, INPUT); pinMode (mq9port, INPUT); pinMode (O3port, INPUT); pinMode (mq9power, OUTPUT); analogWrite (mq9powerPort, mq9power); lcd.setBacklight(WHITE); delay(1000); } void loop() { samplePMDetectors(); //sample particulate detectors for 2 seconds and update running Averages readResistances(); //calculateResistancesFromInputs readTemperatureAndHumidity(); //aquire temperature and humidity data takes about 25ms timestampSerial(); //print time printRunningPMDataToSerial(); //print percentages to Serial printGasDataToSerial(); //print gas sensor data to Serial printTempAndHumidityToSerial();//print temperature and humidity data Serial.println(); Serial.println(); displayLCD(); //display data on LCD } void samplePMDetectors() { for (int i = 0; i < 100; i++) { while (millis() - priorSampleTime < sampleRate) { } priorSampleTime = millis(); measurementCount += 1; if (digitalRead(smallPM1) == 0) { smallPM1Count += 1; } if (digitalRead(largePM1) == 0) { largePM1Count += 1; } if (digitalRead(smallPM2) == 0) { smallPM2Count += 1; } if (digitalRead(largePM2) == 0) { largePM2Count += 1; } } //calculate running PM percentages smallPM1percentRunning = 100.0 * smallPM1Count / measurementCount; largePM1percentRunning = 100.0 * largePM1Count / measurementCount; smallPM2percentRunning = 100.0 * smallPM2Count / measurementCount; largePM2percentRunning = 100.0 * largePM2Count / measurementCount; } void readResistances() { //read gas sensor data int mq2rawInput = analogRead(mq2port); int NO2rawInput = analogRead(NO2port); int mq9rawInput = analogRead(mq9port); int O3rawInput = analogRead(O3port); //calculate resistances mq2resistance = mq2seriesResistor * ((1023.0 / mq2rawInput) - 1.0); NO2resistance = NO2seriesResistor * ((1023.0 / NO2rawInput) - 1.0); mq9resistance = mq9seriesResistor * ((1023.0 / mq9rawInput) - 1.0); O3resistance = NO2seriesResistor * ((1023.0 / O3rawInput) - 1.0); } void readTemperatureAndHumidity() { DHT.read11(dht_dpin); humidity = (int) DHT.humidity; temperature = (int) DHT.temperature; } void timestampSerial() { Serial.print("Milliseconds since the program started: "); Serial.println(millis()); } void printRunningPMDataToSerial() { Serial.println("Particulate Matter Data"); Serial.print("Measurement Count: "); Serial.println(measurementCount); Serial.print("Small PM detector 1: "); Serial.println(smallPM1percentRunning); Serial.print("Large PM detector 1: "); Serial.println(largePM1percentRunning); Serial.print("Small PM detector 2: "); Serial.println(smallPM2percentRunning); Serial.print("Large PM detector 2: "); Serial.println(largePM2percentRunning); Serial.println(); } void printGasDataToSerial() { Serial.println("Gas Sensor Data"); Serial.print("MQ-2 Resistance: "); Serial.println(mq2resistance); Serial.print("NO2 Resistance: "); Serial.println(NO2resistance); Serial.print("MQ-9 (CO2) Resistance: "); Serial.println(mq9resistance); Serial.print("Ozone Resistance: "); Serial.println(O3resistance); Serial.println(); } void printTempAndHumidityToSerial() { Serial.println("Temperature and Humidity Data"); Serial.print("temperature = "); Serial.print(temperature); Serial.print("C "); Serial.print("Current humidity = "); Serial.print(humidity); Serial.println("% "); Serial.println(); } void displayLCD() { lcd.clear(); lcd.setCursor(0, 0); switch (displayNumber) { case 0: lcd.print("MeasurementTime"); lcd.setCursor(0, 1); lcd.print(millis() / 1000); break; case 1: lcd.print("SmallPM#1:"); lcd.setCursor(0, 1); lcd.print(smallPM1percentRunning); lcd.print(" %"); break; case 3: lcd.print("LargePM#1:"); lcd.setCursor(0, 1); lcd.print(largePM1percentRunning); lcd.print(" %"); break; case 2: lcd.print("SmallPM#2:"); lcd.setCursor(0, 1); lcd.print(smallPM2percentRunning); lcd.print(" %"); break; case 4: lcd.print("LargePM#2:"); lcd.setCursor(0, 1); lcd.print(largePM2percentRunning); lcd.print(" %"); break; case 5: lcd.print("MQ2 Resistance:"); lcd.setCursor(0, 1); lcd.print((long) mq2resistance); lcd.print(" Ohm"); break; case 6: lcd.print("MQ9 Resistance:"); lcd.setCursor(0, 1); lcd.print((long) mq9resistance); lcd.print(" Ohm"); break; case 7: lcd.print("NO2 Resistance:"); lcd.setCursor(0, 1); lcd.print((long) NO2resistance); lcd.print(" Ohm"); break; case 8: lcd.print("O3 Resistance:"); lcd.setCursor(0, 1); lcd.print((long) O3resistance); lcd.print(" Ohm"); break; case 9: lcd.print("Temperature"); lcd.setCursor(0, 1); lcd.print(temperature); lcd.print("C"); break; case 10: lcd.print("Humidity"); lcd.setCursor(0, 1); lcd.print(temperature); lcd.print("%"); break; default: displayNumber = -1; lcd.clear(); } displayNumber += 1; }
Не Вашем скире очень много информации пропало. Видите, какой скролбар в окне сообщений? Зайдите ка Вы в это окно, выделите весь текст, что там есть с скопипастите его сюда. Так лучше будет.
Там больше ничего нет
Попробуйте в строке 6 написать DHT большими буквами, т.е. #include <DHT.h>
А вообще, обновите IDE, где Вы такие древние берёте?
Написал большими буквами:
На последней версии вообще ошибка компиляции вылазит :(
На последней версии ошибка компиляции. Есть ли разница между платами Genuino Uno и просто Uno? В этой версии искал просто UNO в менеджере плат-не нашел
Попробуйте в строке 6 написать DHT большими буквами, т.е. #include <DHT.h>
Этот синтаксис меня добъет :)
Написал большими буквами:
Ну, так это уже ближе к делу. На этот раз библиотека прочиталась.
Знаете, всё-таки, давайте Вы будете делать, что Вам говорят - копируйте сообщения сюда. Ну, вот как, скажите, мне сейчас комментировать эти огибки, если я их процитировать не могу?
В целом:
1. В строке 10 Вы вызываете конструктор DHT без параметров. Такого конструктора нет. Ему нужно передавать параметры. Как минимум два - номер пина и тип датчика.
2. В строках 142-144 у Вас написано что-то странное. У класса DHT нет таких методов и свойств.
Всё, что я говорю касается той версии библиотеки DHT, которая есть у меня. Возможно, у Вас другая. Если хотите, чтобы я смотрел Вашу - давайте ссылку.
Скетч, Вы очевидно, откуда-то стащили. Смотрите там, нет ли там ссылки на правильную библиотеку.
Да, скетч стащил, не отрицаю. Ссылка на проект https://www.instructables.com/id/Air-Pollution-Detector/
там ссылки на библиотеки и сам скетч
И что, заработало? Нет, так исправляйте вызов конструктора и давайте ссылку на библиотеку.
И снова здравствуйте! Спустя долгое время самостоятельно разобрался с кодом, но не до конца. Теперь все работает, поменял код немного, информацию нужную в "мониторинге" выдает, но проблема теперь с выводом на LCD, не могу понять как это работает. Поможете?
А что за проблема?
На дисплей вообще ничего не выводит
На дисплей вообще ничего не выводит
я запретил.
А у Вас точно шилд для ардуино с экраном или просто LCD который вы как то подключили? Экран хоть загорается? Подсветка многоцветная? Ваш код в сириал должен тоже неправильную инфу слать поскольку вы к переменные temperature и humidity нигде не приравниваете кроме как в закоментированных строках.