Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Problema compilazione sensore DHT

Progetti, interfacciamento, discussioni varie su questa piattaforma.

Moderatori: Foto UtenteWALTERmwp, Foto Utentexyz

0
voti

[1] Problema compilazione sensore DHT

Messaggioda Foto Utentetrex450 » 30 dic 2025, 11:03

Buon giorno a tutti,
mi presento
Mi chiamo Giuseppe sono un elettronico pensionato.
Mi sono da poco avvicinato al mondo Arduino.
Premetto che il software non e' il mio forte.
Volevo realizzare un termometre higrometro con valvole nizie.
Ho trovato un bel progetto.
Ma compilando il software mi da degli errori.
Essendo io poco esperto, dopo numerose ore, non sono riuscito arisolvere il problema.
Mi rivolgo a voi esperti, se c'e' qualche d'uno che mi aiuti a capire come risolvere il problema.
Allego il codice in questione.
Grazie anticipate.
Allegati
ThermoHygrometer.zip
(2.36 KiB) Scaricato 17 volte
Ultima modifica di Foto UtenteWALTERmwp il 31 dic 2025, 19:06, modificato 3 volte in totale.
Motivazione: Modificato titolo e spostato "quì" da Firmware e programmaazione
Avatar utente
Foto Utentetrex450
0 1
 
Messaggi: 8
Iscritto il: 29 dic 2025, 10:53

0
voti

[2] Re: Problema errore conpilazione lib per MCP4251

Messaggioda Foto UtenteGioArca67 » 30 dic 2025, 12:05

boiler ha scritto:Benvenuti nel mondo arduino!

[...]

Ogni tanto fa bene dare un'occhiata a queste cose, mi confermano che la scelta di starne alla larga è quella giusta :mrgreen:


Però non puoi dare la colpa al micro e al suo contorno HW se ci sono anche cani a scrivere SW... (senza riferimento specifico alla libreria in questione, ovviamente)
Basta selezionare e/o scrivere in proprio. :lol:
Avatar utente
Foto UtenteGioArca67
4.565 4 6 9
Master EY
Master EY
 
Messaggi: 4587
Iscritto il: 12 mar 2021, 9:36

0
voti

[3] Re: Problema errore compilazione l

Messaggioda Foto UtenteGioArca67 » 30 dic 2025, 12:07

trex450 ha scritto:Mi rivolgo a voi esperti, se c'e' qualche d'uno che mi aiuti a capire come risolvere il problema.
Allego il codice in questione.
Grazie anticipate.

Invece del .zip sarebbe meglio mettere nel post il codice incriminato. Molti non scaricano file non di testo per sicurezza.
Avatar utente
Foto UtenteGioArca67
4.565 4 6 9
Master EY
Master EY
 
Messaggi: 4587
Iscritto il: 12 mar 2021, 9:36

0
voti

[4] Re: Problema errore conpilazione lib per MCP4251

Messaggioda Foto Utenteboiler » 30 dic 2025, 23:09

GioArca67 ha scritto:Però non puoi dare la colpa al micro e al suo contorno HW

Quando parlo di arduino, intendo tutto l'ecosistema, la religione e l'utente-discepolo che ci gravita attorno. L'Atmega328 ha una sua dignità, nulla contro il micro in sè.
Avatar utente
Foto Utenteboiler
26,4k 5 9 13
G.Master EY
G.Master EY
 
Messaggi: 5599
Iscritto il: 9 nov 2011, 12:27

0
voti

[5] Re: Problema errore compilazione

Messaggioda Foto Utentetrex450 » 31 dic 2025, 9:21

Salve
chiedo scusa, sono nuovo.
Ecco il codice inriminato:

/*
Thermometer with ZM1000 Nixie and IN-19 Nixie variable
The bargraph IN-9 simulate the analogical thermometer
the sensor is a Dallas DS18B20 1 wire communication chip
Luca Lombardi 19 Mar 2020 Prague
*/

// Libraries to manage the Temprature Sensor Dallas DS18B20
#include <OneWire.h>
#include <DHT.h>

// PWM Katode IN-9 bargraph
#define PWM_pin 9

// OneWire DS18B20 DQ PIN
#define SensorPIN A3

// Humidity DHT11
#define DHT11_PIN 4

// Function Shift Button
#define ShiftFn_PIN 10

/*
* ----------------- Nixie Pin declaration -----------------------
*
* Relative Humidity % simbol
* Decimal point |
* Celsius Symbol | |
* Kelvin symbol | | |
* hundreds of celsius | | | |
* tens of celsius | | | | |
* unit of celsius | | | | | |
*/
const int Nixie[]= {A2, 11, 2, A0, 8, A1, 3};

// K155ID1 BCD port A, B, C, D
const int K155ID1[] = {1, A5, A4, 0};

//DeviceAddress insideThermometer;
byte insideThermometer[] = {0x28, 0xE1, 0x15, 0x67, 0x0B, 0x00, 0x00, 0x79};

// Temperature LED
const int LED[] ={7, 6, 5}; //LED Blue, Green, Red

//--------------------------- Global variables declaration ---------------------
DHT;
int Function = 1;
int digit = 0;
int val = 0;
int LEDcode = 2;
int digits[] = {0, 0, 0};
float tempC = 7.0;
float RH = 50.0;
long lastDebounceTime;
long shiftTime = 6000;
long Start = 0.0;
long dt = 0;
//long Stop = 100;

//------------------------------------------------------------------------------------------------

void setup() {
// Serial.begin(9600);

dallas(SensorPIN,1); //merely start the ball rolling

// sets the pin as output ZM1000 anodes
for (int i = 0; i <= 6; i++) {
pinMode(Nixie[i], OUTPUT);
digitalWrite(Nixie[i], LOW);
}

for (int i = 0; i <= 2; i++){
pinMode(LED[i], OUTPUT);
digitalWrite(LED[i], LOW);
}
// Function Shift Button
pinMode(ShiftFn_PIN, INPUT);

// sets the pin as output IN-9 katode
pinMode(PWM_pin, OUTPUT);

// sets the pin as output K155ID1 BCD to decimal and initialize
for (int i = 0; i <=3 ; i++) {
pinMode(K155ID1[i], OUTPUT);
digitalWrite(K155ID1[i], LOW);
}
}

//-----------------------------------------------------------------------

void loop() {
lastDebounceTime = 0;

// Serial.print("Function: ");
// Serial.println(Function);

if (Function == 1) {
// Temperature - deg Celsius
NixieCelsius();
DigiSplit();
DispTemp();}
else if (Function == 2) {
// Temperature - Kelvin
NixieKelvin();
DigiSplit();
DispTemp();}
else if (Function == 3) {
// Relative Humidity
int chk = DHT.read11(DHT11_PIN);
RH = DHT.humidity;
NixieRH();
DigiSplit();
DispHumidity();}
else if (Function == 4) {
// Continuous display shift of Temp °C --> K
dt = millis() - Start;
if (dt < shiftTime) {
NixieCelsius();
DigiSplit();
DispTemp();}
else if ((dt > shiftTime) and (dt < 2*shiftTime)) {
NixieKelvin();
DigiSplit();
DispTemp();}
else {Start = millis();}}
else if (Function == 5) {
// Continuous display shift of Temp °C --> RH
dt = millis() - Start;
if (dt < shiftTime) {
NixieCelsius();
DigiSplit();
DispTemp();}
else if ((dt > shiftTime) and (dt < 2*shiftTime)) {
int chk = DHT.read11(DHT11_PIN);
RH = DHT.humidity;
NixieRH();
DigiSplit();
DispHumidity();}
else {Start = millis();}}
else if (Function == 6) {
// Continuous display shift of Temp K --> RH
dt = millis() - Start;
if (dt < shiftTime) {
NixieKelvin();
DigiSplit();
DispTemp();}
else if ((dt > shiftTime) and (dt < 2*shiftTime)) {
int chk = DHT.read11(DHT11_PIN);
RH = DHT.humidity;
NixieRH();
DigiSplit();
DispHumidity();}
else {Start = millis();}}
else if (Function == 7) {
// Continuous display shift of Temp °C --> RH
dt = millis() - Start;
if (dt < shiftTime) {
NixieCelsius();
DigiSplit();
DispTemp();}
else if ((dt > shiftTime) and (dt < 2*shiftTime)) {
NixieKelvin();
DigiSplit();
DispTemp();}
else if ((dt > 2*shiftTime) and (dt < 3*shiftTime)) {
int chk = DHT.read11(DHT11_PIN);
RH = DHT.humidity;
NixieRH();
DigiSplit();
DispHumidity();}
else {Start = millis();}}
}

void DigiSplit(){
digits[0] = (digit%10);
digits[1] = ((digit/10)%10);
digits[2] = ((digit/100)%10);
}

int16_t dallas(int x, byte start){
OneWire ds(x);
byte i;
byte data[2];
int16_t result;
do {
ds.reset();
ds.write(0xCC); //skip ROM command
ds.write(0xBE); //Read 1st 2 bytes of Screatchpad
for (i = 0 ; i < 2; i++) data[i] = ds.read();
result = (data[1]<<8) | data[0];
// result >>= 4; //reduction to 9 bit
// if (data[1]&128) result|=61440; //if positive force the 4 MSB to 1
// if (data[0]&8) ++result; //round
ds.reset();
ds.write(0xCC); //Skip ROM command
ds.write(0x44,1); //Start Conversion, assuming 5V connected
if (start) delay(1000);
}

while (start--);
return result;
}

void K155ID1call(byte num){
for (int i = 0; i <= 3; i++){
digitalWrite(K155ID1[i], bitRead(num, i));
}
}

void NixieCelsius(){
// Set the Nixie to display Temperature - deg Celsius
if (tempC < 99.95) {
digit = int(tempC * 10.0 + 0.5);
digitalWrite(Nixie[3], HIGH);
digitalWrite(Nixie[4], LOW);
digitalWrite(Nixie[5], HIGH);
digitalWrite(Nixie[6], LOW);
} else {
digit = int(tempC + 0.5);
digitalWrite(Nixie[3], HIGH);
digitalWrite(Nixie[4], LOW);
digitalWrite(Nixie[5], LOW);
digitalWrite(Nixie[6], LOW);
}
}

void NixieKelvin(){
// Set the Nixie to display Temperature - Kelvin
digit = int(tempC + 273.15 + 0.5);
digitalWrite(Nixie[3], LOW);
digitalWrite(Nixie[4], HIGH);
digitalWrite(Nixie[5], LOW);
digitalWrite(Nixie[6], LOW);
}

void NixieRH(){
// Set the Nixie to display Relative Humidity
digit = int(RH * 10 + 0.5);
digitalWrite(Nixie[3], LOW);
digitalWrite(Nixie[4], LOW);
digitalWrite(Nixie[5], HIGH);
digitalWrite(Nixie[6], HIGH);
}

void BarGraph(bool isTemp){
if (isTemp) {
if (tempC < 0.0){
val = int(abs(tempC*5));
LEDcode = 1;}
else if ((tempC < 50.0) and (tempC >= 0.0)){
val = int (tempC*5);
LEDcode = 2;}
else if ((tempC < 100.0) and (tempC >= 50.0)){
val = int((tempC - 50.0)*5);
LEDcode = 4;}
else{
val = int((tempC - 100.0)*5);
LEDcode = 4;}}
else {
val = int(RH * 2.5);
LEDcode = 0;
}
analogWrite(PWM_pin, val);

//-------------- LED light --------------

for (int i = 0; i < 3; i++){
digitalWrite(LED[i], bitRead(LEDcode, i));
}
}

void DispTemp(){
BarGraph(1);
for (int i = 0; i <=63 ; i++) { // 63 produce an update every 1004ms.
for (int j = 0; j <=2 ; j++) {

if (digitalRead(ShiftFn_PIN) == LOW) {
// debounce
do{
if (digitalRead(ShiftFn_PIN) == LOW) {
lastDebounceTime = millis();
}
} while ((millis() - lastDebounceTime) < 20);

Function += 1;
if (Function > 7) {Function = 1;}
if (Function > 3) {Start = millis();}
break;
}

K155ID1call(digits[j]); // send to K155ID1 the digit

digitalWrite(Nixie[j], HIGH);

// every temp reading takes 5-7ms, here used as delay() command
tempC = (float)dallas(SensorPIN,0) / 16.0;

digitalWrite(Nixie[j], LOW);
}
}
}

void DispHumidity(){
BarGraph(0);
for (int i = 0; i <=133 ; i++) { // produce an update every 2s.
for (int j = 0; j <=2 ; j++) {

if (digitalRead(ShiftFn_PIN) == LOW) {
// debounce
do{
if (digitalRead(ShiftFn_PIN) == LOW) {
lastDebounceTime = millis();
}
} while ((millis() - lastDebounceTime) < 20);

Function += 1;
if (Function > 7) {Function = 1;}
if (Function > 3) {Start = millis();}
break;
}
K155ID1call(digits[j]); // send to K155ID1 the digit
digitalWrite(Nixie[j], HIGH);
delay (5);
digitalWrite(Nixie[j], LOW);
}
}
}

Grazie a chi puo' aiutarmi.
Buon anno.
Avatar utente
Foto Utentetrex450
0 1
 
Messaggi: 8
Iscritto il: 29 dic 2025, 10:53

0
voti

[6] Re: Problema errore compilazione l

Messaggioda Foto Utentestandardoil » 31 dic 2025, 9:50

trex450 ha scritto:Buon giorno a tutti,
mi presento
Mi chiamo Giuseppe sono un elettronico pensionato.
Mi sono da poco avvicinato al mondo Arduino.
Premetto che il software non e' il mio forte.
Volevo realizzare un termometre higrometro con valvole nizie.
Ho trovato un bel progetto.
Ma compilando il software mi da degli errori.
Essendo io poco esperto, dopo numerose ore, non sono riuscito arisolvere il problema.
Mi rivolgo a voi esperti, se c'e' qualche d'uno che mi aiuti a capire come risolvere il problema.
Allego il codice in questione.
Grazie anticipate.


Io non scarico zip
Se credi metti qualche link e qualche info tecnica, ma in chiaro
Poi vedremo se si può fare qualcosa

PS
Buon anno a tutti

Edit
Già fatto...
Avatar utente
Foto Utentestandardoil
547 2 4
Stabilizzato
Stabilizzato
 
Messaggi: 420
Iscritto il: 15 lug 2022, 19:14

0
voti

[7] Re: Problema errore compilazione l

Messaggioda Foto Utentetrex450 » 31 dic 2025, 10:01

Ho aggiunto anche il link.

https://www.instructables.com/Nixie-The ... uino-Nano/

Grazie ancora.
Buon Anno a tutti
Avatar utente
Foto Utentetrex450
0 1
 
Messaggi: 8
Iscritto il: 29 dic 2025, 10:53

0
voti

[8] Re: Problema errore compilazione lib per MCP4251

Messaggioda Foto Utentestandardoil » 31 dic 2025, 10:04

Due cose:
Esattamente che errore ti dà?
Copialo e incollalo, non descriverlo

E poi, forse sarebbe il caso di aprire una discussione apposta, non attaccarsi a una vecchia
Avatar utente
Foto Utentestandardoil
547 2 4
Stabilizzato
Stabilizzato
 
Messaggi: 420
Iscritto il: 15 lug 2022, 19:14

0
voti

[9] Re: Problema errore compilazione lib per MCP4251

Messaggioda Foto UtenteGioArca67 » 31 dic 2025, 10:25

Ma leggi i post?
Lo ha scritto all'inizio.

Per l'OP
Il problema, come per altro già fatto notare, è nella libreria e non nel codice tuo.
Modifica la libreria (basta il .h) come ti hanno già suggerito.
Avatar utente
Foto UtenteGioArca67
4.565 4 6 9
Master EY
Master EY
 
Messaggi: 4587
Iscritto il: 12 mar 2021, 9:36

0
voti

[10] Re: Problema errore compilazione

Messaggioda Foto Utentetrex450 » 31 dic 2025, 10:44

Salve
come dicevo sopra,
sono nuovo del forum.
Mi leggero' bene le regole.
Abbiate pazienza.
Allego foto dell'errore:
Allegati
errore arduino.png
Avatar utente
Foto Utentetrex450
0 1
 
Messaggi: 8
Iscritto il: 29 dic 2025, 10:53

Prossimo

Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti