problema con le variabili

Salve a tutti mi chiamo Nicola, ho un problema con la compilazione di uno sketch, premetto ho preso arduino da 1 settimana ed è la prima volta che programmo :slight_smile:

allora volevo fare un termostato con un termistore, lcd 2 righe, arduino nano, e 2 pulsanti,
vi metto il programma completo, k sarebbe la temperatura in cui scatta il termostato, ma non riesco a farle cambiare valore con i 2 pulsanti, il pin 3(su) incrementa di 1 il pin2 (giu) sottrae 1, ho provato un po di tutto con variabili ecc ma incontro sempre problemi con il digitaRead…
potete aiutarmi? grazie

  //termostato

#include <LiquidCrystal.h>
int tempPin = 0;
int RelePin =5;
//                BS  E  D4 D5  D6 D7
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

int valore = 0;
int su = 3;
int giu = 2;
int k = 15;

void setup() 
{
  lcd.begin(16, 2);
  pinMode(RelePin, OUTPUT);
   pinMode (3,INPUT);
  pinMode (2,INPUT);
  
}
void loop()

      {
    
  
  int tempReading = analogRead(tempPin);
  // This is OK
  double tempK = log(10000.0 * ((1024.0 / tempReading - 1)));
  tempK = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * tempK * tempK )) * tempK );       //  Temp Kelvin
  float tempC = tempK - 273.15;            // Convert Kelvin to Celcius
  float tempF = (tempC * 9.0)/ 5.0 + 32.0; // Convert Celcius to Fahrenheit
  /*  replaced
    float tempVolts = tempReading * 5.0 / 1024.0;
    float tempC = (tempVolts - 0.5) * 10.0;
    float tempF = tempC * 9.0 / 5.0 + 32.0;
  */
  // Display Temperature in C
  lcd.setCursor(0, 0);
  lcd.print("Temp         C  ");
  // Display Temperature in F
  //lcd.print("Temp         F  ");
  lcd.setCursor(6, 0);
  // Display Temperature in Cprima
  lcd.print(tempC);
  // Display Temperature in F
  //lcd.print(tempF);
  lcd.setCursor (14,  1);
    lcd.print (k);
   lcd.setCursor (0, 1);

 
   if (tempC > k ){
    digitalWrite(RelePin,LOW);
  lcd.print(" off ");
   }else{digitalWrite(RelePin,HIGH); 
    lcd.print (" on ");
   }
 delay (100);
 
   if(digitalRead(su=HIGH)= k+1);
  delay (25);
  if (digitalRead(giu,HIGH)=k-1);
     delay(25);
     

  }

Buongiorno, :slight_smile:
essendo il tuo primo post nella sezione Italiana del forum, nel rispetto del regolamento di detta sezione (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione … possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO

… poi, in conformità al suddetto regolamento, punto 7, devi editare il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More → Modify che si trova in basso a destra del tuo post) e racchiudere il codice all’interno dei tag CODE (… sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

In pratica, tutto il tuo codice dovrà trovarsi racchiuso tra due tag: [code] _il _tuo_ codice_ [/code] così da non venire interpretato e non dare adito alla formazione di caratteri indesiderati o cattiva formattazione del testo. Grazie.

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread e sistemato il codice come da regolamento, nessuno ti potrà rispondere, quindi ti consiglio di fare il tutto al più presto. :wink:

  if(digitalRead(su=HIGH)= k+1);
      delay (25);
  if (digitalRead(giu,HIGH)=k-1);
     delay(25);
  }

Ecco, la funzione non è stata chiamata correttamente, magari non compila nemmeno…

La soluzione giusta è:

if(digitalRead(su) == HIGH){
   k = k + 1;
   // oppure 
   //k += 1;
   //oppure
   //k ++;
   delay(250); //25ms secondo me sono pochissimi; 250 sono 1/4 di secondo
}
if(digitalRead(giu) == HIGH){
   k = k - 1;
   // oppure 
   //k -= 1;//
   //oppure
   //k --;
   delay(250);
}

Magari prima di chiedere consulta il reference di Arduino.

Altra cosuccia per evitarti altri problemi (visto che sei alle prime armi), ricorda di mettere il pull-up o il pull-down sui pulsanti.

Alan

ottimo grazie, ho messo i pulsanti in pullup e le variabili con la lettura in low, le avevo provate un po tutte ma mi dava sempre errore perche non mettevo == ma solo = :sweat_smile: era quasi una giornata che ci stavo dietro ma non ne uscivo propio.. ringrazio ancora per l aiuto :wink: