Bonjour,
Je suis en train de réaliser mon premier projet arduino: une tempéreuse à chocolat(un bain-marie permetant de garder à bonne température le chocolat).
J'ai utiliser un capteur de température(DS18B20), un relai branché a ma resisatnce, une LED, un potentiomètre, et un ecrans LCD.
J'ai fait mon code grace à des tuto mais il ne veut pas se compiler:
#include <OneWire.h>
#include <LiquidCrystal.h>
#include <SPI.h>
//capteur DS18B20
const int broche_OneWire=1;
const int modeLecture=0xBE;
const int lancerMesure=0x44;
byte data[12]; // Tableau de 12 octets pour lecture des 9 registres de RAM et des 3 registres d'EEPROM du capteur One Wire
byte adresse[8]; // Tableau de 8 octets pour stockage du code d'adresse 64 bits du composant One Wire
int tempet=0; // variable pour resultat de la mesure
float tempetf=0.0; // variable pour resultat de la mesure
//__________________________________________
char temperature_demande = 8888;
int potentiometre_indice;
char potentiometre = A0;
char relai = 9;
char led_chauffe = 8;
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
OneWire capteur(broche_OneWire);void setup() {
//réglage de la console
Serial.begin(115200); // initialise connexion série à 115200 bauds
Serial.println("**** Detection du capteur **** ");
while (capteur.search(adresse)== false) // tant qu'aucun nouveau capteur est détecté
{
Serial.println("Aucun capteur 1-wire present sur la broche ! "); // affiche message + saut de ligne
delay (1000); // pause 1 seconde
Serial.print ("1 capteur 1-wire present avec code adresse 64 bits : ");
for(int i = 0; i < 8; i++) { // l'adresse renvoyée par la fonction search est stockée sur 8 octets
if (adresse*<16) Serial.print('0'); // pour affichage des O poids fort au format hexadécimal*
_ Serial.print(adresse*, HEX); // affiche 1 à 1 les 8 octets du tableau adresse au format hexadécimal*_
* Serial.print(" ");*
* }*
* Serial.println();*
* if (adresse[0]==0x28)*
* {*
* Serial.println ("Type du capteur present : Capteur temperature DS18B20.");*
* }*
* else*
* {*
* Serial.println ("Le capteur present n'est pas un capteur de temperature DS18B20.");*
* }*
* if (capteur.crc8( adresse, 7) == adresse[7]) // vérification validité code CRC de l'adresse 64 bits*
* {*
* Serial.println ("Verification du code CRC de l'adresse 64 bits de ce capteur : VALIDE !");*
* }*
* else*
* {*
* Serial.println ("Verification du code CRC de l'adresse 64 bits de ce capteur : NON VALIDE !"); *
* }*
* //------- message final détection ----*
* Serial.println("----- fin de la recherche du capteur ----");*
* Serial.println("");*
//___________________________________________________
lcd.begin(16,2);
lcd.print("bonjour");
lcd.clear();
//________________________________________________
pinMode (potentiometre , INPUT);
pinMode (relai , OUTPUT);
}
void loop()
{
//Lecture du capteur
_ Serial.println("**** Acquisition d'une mesure de la temperature **** ");
* capteur.reset();*
* capteur.select(adresse);*
* capteur.write(lancerMesure,1);*
delay(1000);
* capteur.reset(); // initialise le bus 1-wire avant la communication avec un capteur donné*
* capteur.select(adresse); // sélectionne le capteur ayant l'adresse 64 bits contenue dans le tableau envoyé à la fonction*
* capteur.write(modeLecture,1); // passe en mode lecture de la RAM du capteur*
for ( int i = 0; i < 9; i++) { // 9 octets de RAM stockés dans 9 octets
data = capteur.read(); // lecture de l'octet de rang i stocké dans tableau data_Serial.println("");
Serial.println("---- lecture de la RAM du capteur ---- ");
Serial.print("Octet 0 (Resultat poids faible)="), Serial.println(data[0],BIN);
Serial.print("Octet 1 (Resultat poids fort)="), Serial.println(data[1],BIN);
Serial.print("Octet 2 (Alarme haute)="), Serial.println(data[2],BIN);
Serial.print("Octet 3 (Alarme basse)="), Serial.println(data[3],BIN);
Serial.print("Octet 4 (Registre de configuration)="), Serial.println(data[4],BIN);
Serial.print("Octet 5 (Reserve)="), Serial.println(data[5],BIN);
Serial.print("Octet 6 (Reserve)="), Serial.println(data[6],BIN);
Serial.print("Octet 7 (Reserve)="), Serial.println(data[7],BIN);
Serial.print("Octet 8 (code CRC mesure)="), Serial.println(data[8],BIN);
Serial.println("");
Serial.println("---- test de controle de validite des donnees recues ---- ");
* if (capteur.crc8( data, 8) == data[8]) // vérification validité code CRC des valeurs reçues*
* {*
* Serial.println ("Verification du code CRC de ce resultat : VALIDE !");*
* }*
* else*
* {*
* Serial.println ("Verification du code CRC de ce resultat : NON VALIDE !"); *
* }*
Serial.println("");
Serial.println("---- calcul de la temperature ---- ");
data[1]=data[1] & B10000111; // met à 0 les bits de signes inutiles
tempet=data[1]; // bits de poids fort
tempet=tempet<<8;
tempet=tempet+data[0]; // bits de poids faible
Serial.print ("Mesure brute =");
Serial.println (tempet);
tempetf=float(tempet)*6.25;
tempetf=tempetf/100.0;
Serial.print ("Mesure Finale =");
Serial.print (tempetf,2);
Serial.println (" Degres Celsius. ");
while(1);
//convertion temperature potentiometre
temperature_demande = potentiometre_indice/10,24;
//code relai
if (temperature_demande > tempetf )
{
digitalWrite(relai, HIGH);
digitalWrite(led_chauffe, HIGH);
}
else
{
digitalWrite(relai, LOW);
digitalWrite(led_chauffe, LOW);
}
//Affichage sur l'ecran LCD
lcd.setCursor(1,1) ;
lcd.print("T"176"C capteur ") ;
lcd.print(tempetf) ;
lcd.setCursor(1,2) ;
lcd.print("T"176"C demande ") ;
lcd.print(temprature_demande) ;
}
[/quote]
Voici le message d'erreur
> code_conche_chocolat_2.0.ino: In function 'void setup()':
> code_conche_chocolat_2.0:69: error: a function-definition is not allowed here before '{' token
> code_conche_chocolat_2.0:142: error: expected '}' at end of input
> Multiple libraries were found for "OneWire.h"
> Used: D:\Documents\Arduino\libraries\OneWire-master
> Not used: D:\Program Files (x86)\Arduino\libraries\OneWire-master
> Multiple libraries were found for "LiquidCrystal.h"
> Used: D:\Documents\Arduino\libraries\LiquidCrystal
> Not used: D:\Program Files (x86)\Arduino\libraries\LiquidCrystal
> a function-definition is not allowed here before '{' token