Potenziometro e arduino

Buongiorno a tutti, dopo parecchio tempo torno ad usare arduino, sto progettando un temostato con isteresi e una termocoppia.
Perchè la termocoppia è un fornetto che arriva 1000 gradi per cui usata termocoppia k con max 6675. Procedo a montare il circuito lo sto testando solo con monitor seriale ma noto che non viene letto il valore del potenziometro difatti ho aggiunto un serial print sulla variabile potenziometro.
riporto il codice scritto se potete aiutarmi . Grazie mille del tempo dedicatomi.

#include <MAX6675_Thermocouple.h>

// costanti
#define SCK_PIN 10
#define CS_PIN 9
#define SO_PIN 8
int Pot = A1;
int Rele = 5;

//variabili
int temp = 0;     //valore discreto temperatura 
int valpot = 0;   //valore letto dal potenziometro
int Tamb = 0;     //valore letto dalla temocoppia
int Tset = 0;     //variabile per temperatura impostata
bool Statorele = HIGH;

MAX6675_Thermocouple tc = MAX6675_Thermocouple(SCK_PIN, CS_PIN, SO_PIN);

void setup() {
  Serial.begin(9600);
  pinMode (Rele, OUTPUT);
}

void loop() {
  Tamb = tc.readCelsius();

  temp =analogRead (Pot);
  Serial.println ("POTENZIOMETRO" + String(Pot));
  Tset = map(valpot, 0, 1023, 300, 1000);
  Serial.println ("temperatura settata=" + String(Tset) + "C");
  Serial.println ("temperatura ambiente=" + String (Tamb) + "C");

  if (Tamb<Tset-50) {
    Statorele=LOW;
    Serial.println ("rele ACCESO");
  }

  if (Tamb>Tset+50) {
    Statorele=HIGH;
    Serial.println ("rele SPENTO");
  }

  digitalWrite(Rele, Statorele);
  Serial.println ("");
  delay (5000);
  }

??? Pot è il numero del pin (A1) il valore letto è dentro temp, quindi nella serial devi stampare temp

inoltre Tset gli fai una map di valpot... che mai è stato caricato...

Forse:

valpot =analogRead (Pot);   // legge su A1
Serial.print("POTENZIOMETRO: "); Serial.println(valpot);
Tset = map(valpot, 0, 1023, 300, 1000);

Grazie mille, si vede che mi perdo i pezzi per strada era da un po .... non riuscivo a trovare l'errore

Scusate se rompo nuovamente, ho modificato il codice da potenziometro all'utilizzo di due pulsanti, il codice per i pulsanti non è il mio ma l'ho trovato veramente valido e per cui ho inserito nel mio tutto il codice e aggiunto lcd ma ho un problema da cui non vengo a capo:
sembra funzionare tutto tranne l'aggiornamento del dato della termocoppia, appena accendo arduino rileva la temperatura ambiente tipo 25 gradi scaldando la termocoppia non cambia. Potete aiutarmi a trovare l'errore perchè sono 2 giorni che mi sfugge. Grazie mille.

#include <LiquidCrystal.h>
#include <MAX6675_Thermocouple.h>

// costanti
#define SCK_PIN 9
#define CS_PIN 8
#define SO_PIN 7
int Rele = 13;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

//variabili
int temp = 0;     //valore discreto temperatura 
int Tamb = 0;     //valore letto dalla temocoppia
int Tset = 0;     //variabile per temperatura impostata
bool Statorele = HIGH;
const int buttonUpPin = 6;  //numero pin a cui è collegato il pulsante di UP
const int buttonDownPin = 10;  //numero pin a cui è collegato il pulsnte di DOWN
int buttonUpState;  //stato attuale del pulsante di UP
int buttonDownState;  //stato attuale del pulsante di Down
long UpDebounceTime;  //Variabilie di appoggio per calcolare il tempo di cambio di stato del pulsante di UP
long DownDebounceTime;  //Variabilie di appoggio per calcolare il tempo di cambio di stato del pulsante di Down
long timerButtonPushed; //tempo che indica da quanto è stato premuto il pulsante
long timerPauseRepeat;  //tempo che indica da quanto è stata fatta l'ultima ripetizione
long time_add_10 = 1000;  //costante per attivare ripetizione da +10
long time_add_100 = 5000; //costante per attivare ripetizione da +100
long time_pause = 250;  //costante che determina il tempo di ripetizione di UP e di DOWN
long debounceDelay = 80; //Tempo di debounce per i pulsanti UP e DOWN
boolean repeatEnable = LOW; //memoria che indica il repeat del pulsante attivo
const int varMax = 1000; //limite massimo valore della variabile
const int varMin = 0; //limite minimo valore della variabile

MAX6675_Thermocouple tc = MAX6675_Thermocouple(SCK_PIN, CS_PIN, SO_PIN);

void setup() {
  Serial.begin(9600);
  pinMode (Rele, OUTPUT);
  pinMode (buttonUpPin, INPUT); //impostazione buttonUpPin come ingresso
  pinMode (buttonDownPin, INPUT); //impostazione buttonDownPin come ingresso 
  lcd.begin(16, 2); 
}
void loop (){
     readButtonState();  //Lettura stato buttons con controllo antirimbalzo

  if (buttonUpState == HIGH || buttonDownState == HIGH) {
    if ((repeatEnable == HIGH && ((millis() - timerPauseRepeat) > time_pause)) || repeatEnable == LOW) {
      if ((millis() - timerButtonPushed) > time_add_10) {
        if ((millis() - timerButtonPushed) > time_add_100) {
          if (buttonUpState == HIGH) Tset = Tset + 100;
          if (buttonDownState == HIGH) Tset = Tset - 100;
        } else {
          int resto = 0;
          if (buttonUpState == HIGH) resto = 10 - (Tset % 10);
          if (buttonDownState == HIGH) resto = (Tset % 10);
          if (resto == 0){
            if (buttonUpState == HIGH) Tset = Tset + 10;
            if (buttonDownState == HIGH) Tset = Tset - 10;
          } else{
            if (buttonUpState == HIGH) Tset = Tset + resto;
            if (buttonDownState == HIGH) Tset = Tset - resto;
          }       
        }
      } else {
        if (buttonUpState == HIGH) Tset++;
        if (buttonDownState == HIGH) Tset--;
      }
      timerPauseRepeat = millis();
      repeatEnable = HIGH;
      if (Tset > varMax) Tset = varMax;
      if (Tset < varMin) Tset = varMin;
    }

  } else {
    timerButtonPushed = millis();
    timerPauseRepeat = millis();
    repeatEnable = LOW;
  }

}

void readButtonState() {
  
  
  int readingUp = digitalRead(buttonUpPin); //Lettura ingresso digitale del pulsante di UP
  int readingDown = digitalRead(buttonDownPin); //Lettura ingresso digitale del pulsante di Down
  
  if (readingUp == HIGH) {
    if ((millis() - UpDebounceTime) > debounceDelay) {
      buttonUpState = HIGH;
    }
  } else {
    buttonUpState = LOW;
    UpDebounceTime = millis();
  }

  if (readingDown == HIGH) {
    if ((millis() - DownDebounceTime) > debounceDelay) {
      buttonDownState = HIGH;
    }
  } else {
    buttonDownState = LOW;
    DownDebounceTime = millis();
  }
  Tamb = tc.readCelsius();
  
  Serial.println ("temperatura settata=" + String(Tset) + "C");
  Serial.println ("temperatura ambiente=" + String (Tamb) + "C");
  lcd.setCursor(0,0);
  lcd.print ("Tsettata=" + String(Tset) + "C");
  lcd.setCursor(0,1);
  lcd.print ("Tambiente=" + String (Tamb) + "C");
  if (Tamb<Tset-50) {
    Statorele=LOW;
    Serial.println ("rele ACCESO");
  }

  if (Tamb>Tset+50) {
    Statorele=HIGH;
    Serial.println ("rele SPENTO");
  }

  digitalWrite(Rele, Statorele);
  Serial.println ("");
      }

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.