Skip to content

Related to Proteus Sensor Reading Failed #17

Description

@neno-research

Hello,

I am facing an issue, and I'm not sure where the problem lies. The complete code I am using, along with the Proteus diagrams, is attached below.
`#include <OneWire.h>
#include <DallasTemperature.h>
#include <NonBlockingDallas.h>
#include <LiquidCrystal.h>

//================= Config ====================
#define ONE_WIRE_BUS A2 // DS18B20 pin now A2
#define TIME_INTERVAL 1500 // Temperature polling interval (ms)

// LCD: RS=0, E=3, D4-D7 = 4, 5, 6, 7
LiquidCrystal lcd(0, 3, 4, 5, 6, 7);

//=============================================
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature dallasTemp(&oneWire);
NonBlockingDallas temperatureSensors(&dallasTemp);

//=============================================
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp Monitor");

// Init sensor
temperatureSensors.begin(NonBlockingDallas::resolution_12, TIME_INTERVAL);

// Register callbacks
temperatureSensors.onIntervalElapsed(handleIntervalElapsed);
temperatureSensors.onTemperatureChange(handleTemperatureChange);
temperatureSensors.onDeviceDisconnected(handleDeviceDisconnected);

// First request
temperatureSensors.requestTemperature();
}

void loop() {
temperatureSensors.update();
}

//=============================================
// Every reading (even if temp didn’t change)
void handleIntervalElapsed(int deviceIndex, int32_t temperatureRAW)
{
float tempC = temperatureSensors.rawToCelsius(temperatureRAW);
float tempF = temperatureSensors.rawToFahrenheit(temperatureRAW);

// Serial Output
Serial.print(F("[Interval] deviceIndex="));
Serial.print(deviceIndex);
Serial.print(F(" | RAW="));
Serial.print(temperatureRAW);
Serial.print(F(" | "));
Serial.print(tempC);
Serial.print(F("°C | "));
Serial.print(tempF);
Serial.println(F("°F"));

// LCD Output
lcd.clear();
lcd.setCursor(0, 1);
lcd.print("T:");
lcd.print(tempC, 1);
lcd.print((char)223); // Degree symbol
lcd.print("C "); // clear tail
}

//=============================================
// Only when temp actually changes
void handleTemperatureChange(int deviceIndex, int32_t temperatureRAW)
{
float tempC = temperatureSensors.rawToCelsius(temperatureRAW);
float tempF = temperatureSensors.rawToFahrenheit(temperatureRAW);

Serial.print(F("[Change] deviceIndex="));
Serial.print(deviceIndex);
Serial.print(F(" | RAW="));
Serial.print(temperatureRAW);
Serial.print(F(" | "));
Serial.print(tempC);
Serial.print(F("°C | "));
Serial.print(tempF);
Serial.println(F("°F"));

// LCD Output

lcd.clear();
lcd.setCursor(1, 1);
lcd.print("T:");
lcd.print(tempC, 1);
lcd.print((char)223); // Degree symbol
lcd.print("C "); // clear tail
}

//=============================================
// When sensor disconnects
void handleDeviceDisconnected(int deviceIndex)
{
Serial.print(F("[DISCONNECTED] Sensor "));
Serial.print(deviceIndex);
Serial.println(F(" disconnected."));

lcd.setCursor(0, 1);
lcd.print("Sensor Lost ");
}
`
Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions