Arduino for dummies

Avatar utente
Tony Evo
Messaggi: 6125
Iscritto il: 02/06/2011, 6:51
ECU: MS2 V3.0
Località: Vicino Roma

Re: Arduino for dummies

Messaggioda Tony Evo » 08/08/2016, 21:19

errore

Codice: Seleziona tutto

Arduino:1.6.10 Hourly Build 2016/05/18 07:34 (Windows 10), Scheda:"Arduino/Genuino Uno"

ATTENZIONE: Cartella spuria .github nella libreria 'MAX6675 library'
sketch_aug08b:7: error: 'ktcCLK' was not declared in this scope

 MAX6675 ktc(ktcCLK, ktcCS, ktcSO);

             ^

sketch_aug08b:7: error: 'ktcCS' was not declared in this scope

 MAX6675 ktc(ktcCLK, ktcCS, ktcSO);

                     ^

sketch_aug08b:7: error: 'ktcSO' was not declared in this scope

 MAX6675 ktc(ktcCLK, ktcCS, ktcSO);

                            ^

exit status 1
'ktcCLK' was not declared in this scope

Questo report potrebbe essere più ricco di informazioni con l'opzione
"Mostra un output dettagliato durante la compilazione"
abilitata in File -> Impostazioni

Avatar utente
Tony Evo
Messaggi: 6125
Iscritto il: 02/06/2011, 6:51
ECU: MS2 V3.0
Località: Vicino Roma

Re: Arduino for dummies

Messaggioda Tony Evo » 08/08/2016, 21:27

Ho risolto i problemi del codice precedente(ho cambiato l'ordine delle stringe)
e poi avevo il problema che sia afr che egt erano sulla stessa riga e ho risolto anche quello

Codice: Seleziona tutto

// Librerie:
#include <LiquidCrystal.h>
#include <max6675.h>

// Pin librerie:
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


int sensorPin = A0;    // definisce il pin al quale applicare il segnale dal modulo AFR
int sensorValue1 = 0;  // variable to store the value coming from AFR module
int sensorValue0 = 0;  // variable to store the value coming from AFR module
int sensorValue2 = 0;  // variable to store the value coming from AFR module
float lagFactor = 40.00;  // definizione del fattore di smorzamento della lettura
int delayValue = 100;  // attesa tra le varie letture
float AFR = 0;  // variable to store the real AFR value
float AFR1 = 0;  // variable to store the real AFR value
int ktcSO = 8;
int ktcCS = 9;
int ktcCLK = 10;
MAX6675 ktc(ktcCLK, ktcCS, ktcSO);

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  //inizializza la comunicazione seriale col pc per la visualizzazione dei dati
  Serial.begin(9600);

  // MESSAGGIO INIZIALE
  // imposta la posizione del cursore e scrive un messaggio iniziale sul LCD.
      lcd.setCursor(2, 0);
      lcd.print("BENVENUTO");
      lcd.setCursor(4, 1);
      lcd.print("A BORDO");
   
    // APPLICA UN RITARDO DI 5 SECONDI
  delay(5000);
     
     // pulisce lo schermo
   lcd.clear();

   //INTESTAZIONE MONITOR SERIALE
   //stampa su monitor seriale i 5 dati principali
     Serial.print("lettura precedente DAC");
          Serial.print("lettura attuale DAC");
              Serial.print("lettura precedente VOLT");
                  Serial.print("lettura attuale VOLT");
                       Serial.println("AFR precedente");
}

void loop() {
  // memorizza la letture precedente in una nuova variabile
   sensorValue0 = sensorValue2 ;
  // legge l'ingresso sul pin 0
  sensorValue1 = analogRead(sensorPin);

  //calcolo il valore letto in Volt
  float voltage0= sensorValue0 * (5.0 / 1023.0);
  float voltage1= sensorValue1 * (5.0 / 1023.0);
 

      //stampo a monitor tutte le variabilii           
      Serial.print(sensorValue0   );
          Serial.print(sensorValue1   );
              Serial.print(voltage0,2   );
                  Serial.print(voltage1,2   );
                     Serial.println(AFR,2   );
   
  //CALCOLO DEL VALORE AFR
  // applico un filtro al valore letto per evitare i disturbi
  sensorValue2 = sensorValue0 + (sensorValue1 - sensorValue0)*(0.40);
  // trasforma la lettura nel valore AFR
     AFR = map ( sensorValue2 ,0 , 1023 ,1000 ,2000 );
     AFR1=AFR/100 ;

       //STAMPA SUL DISPLAY DEL VALORE AFR
       // posiziono il cursore sulla terza colonna ovvero la n°2, prima riga ovvero la n°0
       lcd.setCursor(3, 1);
       
       // stampo il valore AFR sul display:
       lcd.print("AFR = ");
       lcd.print(AFR1);
       
       //Mi posiziono sulla 3° colonna, seconda riga.
       lcd.setCursor(3, 0);
       
       //Stampo il valore EGT sul display:
       lcd.print("EGT = ");
       lcd.print(ktc.readCelsius());
       
       // applico un piccolo ritardo per stabilizzare la lettura
       delay(delayValue);
}


ora devo solo risolvere il fatto che l'egt non funziona,rimane ad un valore fisso di 25.25°(variava con il programma base)

Avatar utente
Tony Evo
Messaggi: 6125
Iscritto il: 02/06/2011, 6:51
ECU: MS2 V3.0
Località: Vicino Roma

Re: Arduino for dummies

Messaggioda Tony Evo » 08/08/2016, 21:37

risolto anche questo

Codice: Seleziona tutto

// Librerie:
#include <LiquidCrystal.h>
#include <max6675.h>

// Pin librerie:
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


int sensorPin = A0;    // definisce il pin al quale applicare il segnale dal modulo AFR
int sensorValue1 = 0;  // variable to store the value coming from AFR module
int sensorValue0 = 0;  // variable to store the value coming from AFR module
int sensorValue2 = 0;  // variable to store the value coming from AFR module
float lagFactor = 40.00;  // definizione del fattore di smorzamento della lettura
int delayValue = 100;  // attesa tra le varie letture
float AFR = 0;  // variable to store the real AFR value
float AFR1 = 0;  // variable to store the real AFR value
int ktcSO = 8;
int ktcCS = 9;
int ktcCLK = 10;
MAX6675 ktc(ktcCLK, ktcCS, ktcSO);

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  //inizializza la comunicazione seriale col pc per la visualizzazione dei dati
  Serial.begin(9600);

  // MESSAGGIO INIZIALE
  // imposta la posizione del cursore e scrive un messaggio iniziale sul LCD.
      lcd.setCursor(2, 0);
      lcd.print("BENVENUTO");
      lcd.setCursor(4, 1);
      lcd.print("A BORDO");
   
    // APPLICA UN RITARDO DI 5 SECONDI
  delay(5000);
     
     // pulisce lo schermo
   lcd.clear();

   //INTESTAZIONE MONITOR SERIALE
   //stampa su monitor seriale i 5 dati principali
     Serial.print("lettura precedente DAC");
          Serial.print("lettura attuale DAC");
              Serial.print("lettura precedente VOLT");
                  Serial.print("lettura attuale VOLT");
                       Serial.println("AFR precedente");
}

void loop() {
  // memorizza la letture precedente in una nuova variabile
   sensorValue0 = sensorValue2 ;
  // legge l'ingresso sul pin 0
  sensorValue1 = analogRead(sensorPin);

  //calcolo il valore letto in Volt
  float voltage0= sensorValue0 * (5.0 / 1023.0);
  float voltage1= sensorValue1 * (5.0 / 1023.0);
 

      //stampo a monitor tutte le variabilii           
      Serial.print(sensorValue0   );
          Serial.print(sensorValue1   );
              Serial.print(voltage0,2   );
                  Serial.print(voltage1,2   );
                     Serial.println(AFR,2   );
   
  //CALCOLO DEL VALORE AFR
  // applico un filtro al valore letto per evitare i disturbi
  sensorValue2 = sensorValue0 + (sensorValue1 - sensorValue0)*(0.40);
  // trasforma la lettura nel valore AFR
     AFR = map ( sensorValue2 ,0 , 1023 ,1000 ,2000 );
     AFR1=AFR/100 ;

       //STAMPA SUL DISPLAY DEL VALORE AFR
       // posiziono il cursore sulla terza colonna ovvero la n°2, prima riga ovvero la n°0
       lcd.setCursor(3, 1);
       
       // stampo il valore AFR sul display:
       lcd.print("AFR = ");
       lcd.print(AFR1);
       
       //Mi posiziono sulla 3° colonna, seconda riga.
       lcd.setCursor(3, 0);
       
       //Stampo il valore EGT sul display:
       lcd.print("EGT = ");
       lcd.print(ktc.readCelsius());
       
       // applico un piccolo ritardo per stabilizzare la lettura
       delay(500);
}


era il delay non impostato

Avatar utente
Tony Evo
Messaggi: 6125
Iscritto il: 02/06/2011, 6:51
ECU: MS2 V3.0
Località: Vicino Roma

Re: Arduino for dummies

Messaggioda Tony Evo » 08/08/2016, 21:50

ultima minchiata e sono pronto.
sullo schermetto 16x2 è impossibile creare un logo(fiat) tipo come si faceva con i caratteri ASCII?

Avatar utente
ricki158
Messaggi: 934
Iscritto il: 20/04/2012, 16:51
Auto: Fiat 127 mk2 900/C - 1980
ECU: MS1 V2.2
Località: Gorizia

Re: Arduino for dummies

Messaggioda ricki158 » 09/08/2016, 0:41

Bl4Ck ha scritto:In giro per internet ho visto qualche tutorial... sicuramente si può fare. Però non ci ho mai provato...

Il problema è la comunicazione Arduino / PC / tutto il resto dei programmi. Per tutto il resto viaggi con i multiplexer.

Avatar utente
ricki158
Messaggi: 934
Iscritto il: 20/04/2012, 16:51
Auto: Fiat 127 mk2 900/C - 1980
ECU: MS1 V2.2
Località: Gorizia

Re: Arduino for dummies

Messaggioda ricki158 » 09/08/2016, 0:45

Tony Evo ha scritto:ultima minchiata e sono pronto.
sullo schermetto 16x2 è impossibile creare un logo(fiat) tipo come si faceva con i caratteri ASCII?

Si potrebbero creare dei caratteri speciali, ma non mi ricordo come si fa e non credo sia poi così semplice.

Avatar utente
vitoos
Messaggi: 5604
Iscritto il: 24/09/2011, 18:30
Auto: Fiat Panda 100HP
ECU: MS3 EXP
Località: salerno

Re: Arduino for dummies

Messaggioda vitoos » 09/08/2016, 12:46

Qualcosa si può fare ma è un casino a livello di codice, in pratica devi accendere i pixel che ti servono in ogni riquadro di un carattere mettendo le coordinate del cursore e le sottocoordinate per accendere il pixel che ti servono
lasciate qui ogni speranza voi che entrate su questo forum......

comunque sia io grazie a questo forum ho svegliato vecchi tarli addormentati nel mio cervello ed ora mi tocca dargli da mangiare uno ad uno per tenerli buoni

Avatar utente
ricki158
Messaggi: 934
Iscritto il: 20/04/2012, 16:51
Auto: Fiat 127 mk2 900/C - 1980
ECU: MS1 V2.2
Località: Gorizia

Re: Arduino for dummies

Messaggioda ricki158 » 09/08/2016, 13:17

Essatto, però dovresti entrare nel codice dell'integrato del display e crearti un carattere tutto tuo flashando la memoria interna dell'integrato. Una volta fatto ciò devi richiamare il carattere speciale in una maniera speciale. Questo se non mi ricordo male.

Avatar utente
Bl4Ck
Messaggi: 789
Iscritto il: 02/12/2012, 13:40
Auto: mx5 v-spec
ECU: MS2 V3.0
Località: Cagliari

Re: Arduino for dummies

Messaggioda Bl4Ck » 09/10/2016, 12:22

Eccolo... al solito bisogna verificare se compila :lol:

Codice: Seleziona tutto

// Librerie:
#include <LiquidCrystal.h>
#include <max6675.h>

// Pin librerie:
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


int sensorPin = A0;    // definisce il pin al quale applicare il segnale dal modulo AFR
int sensorValue1 = 0;  // variable to store the value coming from AFR module
int sensorValue0 = 0;  // variable to store the value coming from AFR module
int sensorValue2 = 0;  // variable to store the value coming from AFR module
float lagFactor = 40.00;  // definizione del fattore di smorzamento della lettura
float AFR = 0;  // variable to store the real AFR value
float AFR1 = 0;  // variable to store the real AFR value
int ktcSO = 8;
int ktcCS = 9;
int ktcCLK = 10;
MAX6675 ktc(ktcCLK, ktcCS, ktcSO);

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);

  // MESSAGGIO INIZIALE
  // imposta la posizione del cursore e scrive un messaggio iniziale sul LCD.
      lcd.setCursor(2, 0);
      lcd.print("BENVENUTO");
      lcd.setCursor(4, 1);
      lcd.print("A BORDO");
   
    // APPLICA UN RITARDO DI 5 SECONDI
  delay(5000);
     
     // pulisce lo schermo
   lcd.clear();

}

void loop() {
  // memorizza la letture precedente in una nuova variabile
   sensorValue0 = sensorValue2 ;
  // legge l'ingresso sul pin 0
  sensorValue1 = analogRead(sensorPin);

  //calcolo il valore letto in Volt
  float voltage0= sensorValue0 * (5.0 / 1023.0);
  float voltage1= sensorValue1 * (5.0 / 1023.0);
 
  //CALCOLO DEL VALORE AFR
  // applico un filtro al valore letto per evitare i disturbi
  sensorValue2 = sensorValue0 + (sensorValue1 - sensorValue0)*(0.40);
  // trasforma la lettura nel valore AFR
     AFR = map ( sensorValue2 ,0 , 1023 ,1000 ,2000 );
     AFR1=AFR/100 ;

       //STAMPA SUL DISPLAY DEL VALORE AFR
       // posiziono il cursore sulla terza colonna ovvero la n°2, prima riga ovvero la n°0
       lcd.setCursor(3, 1);
       
       // stampo il valore AFR sul display:
       lcd.print("AFR = ");
       lcd.print(AFR1);
       
       //Mi posiziono sulla 3° colonna, seconda riga.
       lcd.setCursor(3, 0);
       
       //Stampo il valore EGT sul display:
       lcd.print("EGT = ");
       lcd.print(ktc.readCelsius());
}
Danilo

Avatar utente
Tony Evo
Messaggi: 6125
Iscritto il: 02/06/2011, 6:51
ECU: MS2 V3.0
Località: Vicino Roma

Re: Arduino for dummies

Messaggioda Tony Evo » 09/10/2016, 17:49

ho provato a compliarlo a casa e sembra essere ok nella compliazione.
lo proverò fra una settimana


Torna a “Elettronica generale”

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite