Pages: [1]   Go Down
Author Topic: (résolu par suppession PID)compilation error problem  (Read 731 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour nouveau sur le forum et  en programmation. l'anglais n'est pas mon fort donc voila les deux version  GOOGLE traduction
j'essaye de faire un thermostat pour ma brasserie.
j'utilise des capteurs onwires. je suis arrivé à afficher sur un lcd 20x4 les deux températures et les deux valeurs de consignes souhaités.
pour la commande de chauffe je voudrais utiliser la librairies PID_v1 mais là tout se gâte.
à la compilation j'ai une erreur concernant les deviceAddress de la librairie ONWIRES
erreur de compilation affichés :
thermostatBrasserie.cpp:19:23: error: variable or field ‘printTemperature’ declared void
thermostatBrasserie.cpp:19:23: error: ‘DeviceAddress’ was not declared in this scope
thermostatBrasserie.cpp: In function ‘void loop()’:
thermostatBrasserie.cpp:127:34: error: ‘deviceAddress’ was not declared in this scope
si quelqu'un pouvait m'expliquer ce serait sympa car je ne trouve rien concernant les erreurs affiché par GUI arduino
Merci

Hello new to the forum and programming. English is not my forte so here are the two versions GOOGLE translation
I try to do a thermostat for my brewery.I use onwires sensors. I got to display on a 20x4 lcd two temperatures and two setpoints desired.
for controlling heater I would use the libraries PID_v1 but then everything is spoiled.
the compilation I get an error on DeviceAddress library ONWIRES
compilation error displayed:
thermostatBrasserie.cpp: 19:23: error: variable or field 'printTemperature' Declared
voidthermostatBrasserie.cpp: 19:23: error: 'DeviceAddress' was Not Declared in this scope
thermostatBrasserie.cpp: In function 'void loop ()':
thermostatBrasserie.cpp: 127:34: error: 'DeviceAddress' was Not Declared in this scope
if someone could explain it would be nice because I can not find anything about errors displayed by GUI arduino
thank you
« Last Edit: April 04, 2013, 12:44:07 pm by gerardl » Logged

Offline Offline
Edison Member
*
Karma: 17
Posts: 1964
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjour,
le code serait plus parlant.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjour,
le code serait plus parlant.

effectivement le voici

/* thermostat pour ma brasserie


version 1.0 2/4/2013_10:31
affichage des températures des capteurs et des valeurs de consigne OK


deux capteurs dc18b20 un pour la cuve chauffe-eau et un pour la cuve brassin
deux potentiomètres pour la consigne de température
le thermostat pour la cuve chauffe-eau commande la résistance chauffante
le thermostat pour la cuve brassin commande la pompe de ciculation
sur l'affichage deux lignes température et consigne pour brassin et cuve*/

 #include <PID_v1.h>
#define RelayPinBrassin 9
#define RelayPinCuve 10
double SetPoint1, Input1, Output1, Setpoint1, Input2, Output2, Setpoint2;
PID myPID1(&Input1, &Output1, &Setpoint1, 2,5,1, DIRECT);
PID myPID2(&Input2, &Output2, &Setpoint2, 2,5,1, DIRECT);

int WindowSize = 5000;
unsigned long windowStartTime;

#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>

int brassin = A0 ;
int consigneBrassin = 0 ;
int cuve = A1 ;
int consigneCuve = 0 ;
float setBrassin = 0 ;
float setCuve =0 ;
int Brassin = 0;
int Cuve =0 ;

// lcd broche
// RS 2
// E 3
// D1 4
// D2 5
// D3 6
// D4 7

LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

#define ONE_WIRE_BUS 8

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress thermometreBrassin = { 0x28, 0x5F, 0x14, 0xDD, 0x03, 0x00, 0x00, 0x0F };
DeviceAddress thermometreCuve = { 0x28, 0x01, 0x1E, 0xDD, 0x03, 0x00, 0x00, 0x8F };

void setup(void)
{
 
 
  sensors.begin();
  sensors.setResolution(thermometreBrassin , 10);
  sensors.setResolution(thermometreCuve , 10);
 
  lcd.begin(20,2);
  lcd.print( " LCD OK");
  delay (1000);
  lcd.clear();
  lcd.print("Brassin       C:                        Cuve          C:     ");
 
  pinMode(Brassin, OUTPUT);
  digitalWrite(Brassin, LOW);
  pinMode(Cuve, OUTPUT);
  digitalWrite(Cuve, LOW);
 
  /*windowStartTime = millis();
  Setpoint1 = (setBrassin);
  Setpoint2 = (setCuve);
 
  myMIP1.SetOutputLimits(0, WindowSize);
  myPID2 SetOutputLimits(0, WindowSize);
 
  mypid1.SetMode(AUTOMATIC);
  mypid2.SetMode(AUTOMATIC);*/
 
 
}

void printTemperature(DeviceAddress deviceAddress)
{
   
  float tempC = sensors.getTempC(deviceAddress);
  float t1tempC = sensors.getTempC(thermometreBrassin);
  float t2tempC = sensors.getTempC(thermometreCuve);
  lcd.print (tempC);
 // lcd.print("/");
  }

void printConsigne() //lecture de la valeur des consignes brassin et cuve
{
 
 
  consigneCuve = analogRead(brassin);
 
  setCuve = consigneCuve / 10.24;

  consigneBrassin = analogRead(cuve);
 
  setBrassin = consigneBrassin / 10.24;
 
  lcd.setCursor(16,0);
  lcd.print (setBrassin);
  lcd.setCursor(16,1);
  lcd.print (setCuve);

}



 
  void loop()
 {
 
 
  sensors.requestTemperatures();

lcd.setCursor(8,0);

printTemperature(thermometreBrassin);

lcd.setCursor(8,1);

printTemperature(thermometreCuve);


printConsigne();

printConsigne();

/*Input1 = (t1TempC),
mypid1.Compute();

if(millis() - windowStartTime>WindowSize)
{
  windowStratTime =+ WindowSize;
}
if (Output < millis() - windowStartTime) digitalWrite(RelayPinBrassin,HIGH);
else digitalWrite(RelayPinBrassin, LOW);

Input2 = (t2TempC),
mypid2.Compute();

if(millis() - windowStartTime>WindowSize)
{
  windowStratTime =+ WindowSize;
}
if (Output < millis() - windowStartTime) digitalWrite(RelayPinCuvr,HIGH);
else digitalWrite(RelayPinCuve, LOW);*/


   
 ce code n'est certainement pas optimisé mais je débute donc j'ai pris un exemple de la librairie PID pour la commande de relais.


 
 
 
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Cette ligne :
Quote
thermostatBrasserie.cpp:19:23: error: variable or field ‘printTemperature’ declared void
Signifie que l'argument de printTemperature() n'est pas reconnu comme un type valide.

Essaye de mettre tout tes includes de manière organisé, l'ide arduino ajoute les prototypes après le premier #include de mémoire.
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonsoir
je ne sais pas si ce programme fonctionne correctement ,la compilation ne réussissant pas, je n'ai testé que la partie affichage de la température issue des capteur et l'information des consignes sur A0 et A1 venant des potentiomètres. mais ta remarque  est juste skywodd j'ai regroupé  les bibliothèques en début de programme
#include <PID_v1.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>
et je n'ai plus d'erreur de compilation. cala doit être ça la programmation structuré peut être
demain matin je teste
il faut que cela marche car je dois brasser ma première bière le 13 avril.
encore merci et bonne nuit


Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

je réussi à piloter mes relais statiques pour chauffage et pompe
avec des boucles IF ELSE
je verrai à l'occasion pour le PID  mais l'inertie de température est assez lente
donc cela devrai aller pour l'instant
merci pour l'aide reçu
Logged

Pages: [1]   Go Up
Jump to: