Датчик Ph всегда показывает «0», но только в этом конкретном коде.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Датчик Ph всегда показывает «0», но только в этом конкретном коде.

Сообщение Anonymous »

Я получил этот школьный проект и написал этот простой код, связанный с листом Google. Дело в том, что один датчик дает мне правильные показания, а другой показывает только «0».
Сам датчик работает, проводка в порядке и хорошо откалибрована. Я уже использовал только часть кода ph, чтобы просмотреть показания, и это действительно сработало, показывая разные значения выше 0

Код: Выделить всё

#include 
#include 
#include "time.h"
#include 
#include 
#include 
#include 

#define WIFI_SSID "Sample"
#define WIFI_PASSWORD "Sample123"
#define PROJECT_ID "SampleIDLOL"
#define CLIENT_EMAIL "SampleMailLOL"

const char PRIVATE_KEY[] PROGMEM = "SampleKeyLOL";
const char spreadsheetId[] = "SampleIDLOL";
unsigned long lastTime = 0;
unsigned long timerDelay = 30000;

void tokenStatusCallback(TokenInfo info);

int phpin = 4;
int tempPin = 5;
int redPin = 18;
int greenPin = 19;
int bluePin = 21;
int buzzer = 13;
float calibrationFactor = 3.5;
float offset = 0.0

OneWire oneWireObjeto(tempPin);
DallasTemperature sensorDS18B20(&oneWireObjeto);

const char* ntpServer = "pool.ntp.org";
unsigned long epochTime;

unsigned long getTime() {
time_t now;
struct tm timeinfo;
if (!getLocalTime(&timeinfo)) {
//Serial.println("Failed to obtain time");
return(0);
}
time(&now);
return now;
}

void setup() {
pinMode(phpin,INPUT);
pinMode(tempPin, INPUT);
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);

Serial.begin(9600);
Serial.println();
Serial.println();

configTime(-18000, 0, ntpServer);

GSheet.printf("ESP Google Sheet Client v%s\n\n", ESP_GOOGLE_SHEET_CLIENT_VERSION);

WiFi.setAutoReconnect(true);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);

Serial.print("Connecting to Wi-Fi");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(1000);
}
Serial.println();
Serial.print("Connected with IP: ");
Serial.println(WiFi.localIP());
Serial.println();

GSheet.setTokenCallback(tokenStatusCallback);
GSheet.setPrerefreshSeconds(10 * 60);
GSheet.begin(CLIENT_EMAIL, PROJECT_ID, PRIVATE_KEY);

sensorDS18B20.begin();
}

void loop() {
sensorDS18B20.requestTemperatures();
float temperature = (sensorDS18B20.getTempCByIndex(0));

int rawValue = analogRead(phpin);

float voltage = (rawValue * 5.0) / 10230.;
float phValue = (voltage * calibrationFactor) + offset;

bool ready = GSheet.ready();

if (ready && millis() - lastTime > timerDelay) {
lastTime = millis();

FirebaseJson response;

Serial.println("\nAppend spreadsheet values...");
Serial.println("----------------------------");

FirebaseJson valueRange;

epochTime = getTime();

valueRange.add("majorDimension", "COLUMNS");
valueRange.set("values/[0]/[0]", epochTime);
valueRange.set("values/[1]/[0]", phValue);
valueRange.set("values/[2]/[0]", temperature);

bool success = GSheet.values.append(&response /* returned response */, spreadsheetId /* spreadsheet Id to append */, "A3" /* range to append */, &valueRange /* data range to append */);
if (success) {
response.toString(Serial, true);
valueRange.clear();
}
else {
Serial.println(GSheet.errorReason());
}
Serial.println();
Serial.println(ESP.getFreeHeap());
}

if (phValue >= 7) {
digitalWrite(redPin, LOW);
digitalWrite(greenPin, LOW);
digitalWrite(bluePin, HIGH);
digitalWrite(buzzer, HIGH);
}
if (phValue >= 3 && phValue < 7) {
digitalWrite(redPin, LOW);
digitalWrite(greenPin,LOW);
digitalWrite(bluePin, LOW);
}
if (phValue >= 0 && phValue < 3) {
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, LOW);
digitalWrite(bluePin, LOW);
}
if (phValue >  6.5) {
digitalWrite(buzzer, HIGH);
}
}

void tokenStatusCallback(TokenInfo info) {
if (info.status == token_status_error) {
GSheet.printf("Token info: type = %s, status = %s\n", GSheet.getTokenType(info).c_str(), GSheet.getTokenStatus(info).c_str());
GSheet.printf("Token error: %s\n", GSheet.getTokenError(info).c_str());
}
else {
GSheet.printf("Token info: type = %s, status = %s\n", GSheet.getTokenType(info).c_str(), GSheet.getTokenStatus(info).c_str());
}
}
Код для листа Google работает хорошо, показания других датчиков хорошо отображаются вместе с эпохальным временем.
Показания ph всегда показывают «0», не только в Google лист, но и в последовательном мониторе, если я его включу.
Редактировать: каким-то образом это был компонент Wi-Fi, лол. Хотя замена контакта датчика решила проблему

Подробнее здесь: https://stackoverflow.com/questions/791 ... cific-code
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»