le code source precent ne va pas du tout
je reconpile tous ça
par contre il y a une erreur
error: expected unqualified-id before ‘{’ token
Erreur lors de la compilation.
je ne la trouve pas
un coup de main ne sera pas de refus merci
#include <LiquidCrystal.h> //Inclut la librairie LiquidCrystal pour le LCD
#include <DHT22.h> //Inclut la librairie Capteur DHT22
#include <OneWire.h> //Inclut la librairie DallasTemperature DS18B20
#include <Wire.h> //Inclut la librairie eeprom 24LC256
#include “Menu.h”
/** cont type de donnée non constante = valeur **/
const byte RELAY = 13; // Relais connecter sur pin 13
const byte DTH22 = 2; // Capteur DTH22 connecter sur pin 2
const byte DS18B20 = 3; // Capteur DallasTemperature DS18B20 connecter sur pin 3
const byte DIV_1 = A1; //diviseur de tension sur pin A1
const byte DIV_2 = A2; //diviseur de tension sur pin A2
const byte DIV_3 = A3; //diviseur de tension sur pin A3
const byte DIV_4 = A6; //diviseur de tension sur pin A6
const byte DIV_5 = 10; //diviseur de tension sur pin 10
#define disk1 0x50 //Adresse eeprom 24LC256 sur pin A4 & A5
/--------------------------------------------------------------------------/
/valeurs d’étalonnage de diviseur de tension/
#define DIV_1 8.785
#define DIV_2 8.785
#define DIV_3 8.785
#define DIV_4 8.785
#define DIV_5 8.785
#define V_REF 4.95 // Valeur de tension de référence ADC / calibration
#define NUM_SAMPLES 10 //Nombre d’échantillons analogiques à prendre par la lecture, par canal
int sum[4] = {0}; // Sommes d’échantillons prélevés
unsigned char sample_count = 0; // Taille de l’échantillon
float voltage[4] = {0.0}; // Tensions calculées
char l_cnt = 0; // Utilisé dans »pour« boucles
/--------------------------------------------------------------------------/
/** Objet LCD sur les broches utilisées **/
static LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
/** Menu principal */
static const char MAIN_MENU_ITEMS = {
“VOLTMETRE”,
“CONS ELECTRIQUE”,
“TEMPERATURE BOX”,
“COOLING”,
};
static const Menu_t MAIN_MENU = {
“Votre choix ?”,
MAIN_MENU_ITEMS,
4,
&doMainMenuAction
};
/* Sous menu pour Point de rosée /
static const char COOLING_MENU_ITEMS = {
“POINT DE ROSEE”,
“CCD FRECH”
};
static const Menu_t COOLING_MENU = {
“Votre choix ?”,
COOLING_MENU_ITEMS,
1,
&doCoolingMenuAction
};
/--------------------------------------------------------------------------/
/*Instructions à n’exécuter qu’une seule fois/
void setup(){
Wire.begin(); //Initialisation I2C (24LC256), Arduino en mâtre
unsigned int address = 0;
writeEEPROM(disk1, address, 123);
Serial.print(readEEPROM(disk1, address), DEC);
{
Serial.begin(9600);
/* Configuration du LCD */
lcd.begin(16, 4);
{
/Message de bienvenue/
lcd.setCursor(0,00); //En haut à gauche (numéroté depuis 0)
lcd.print(“Alim Astronomie”); // Afficher un petit message
lcd.setCursor(0,01); //Ligne du bas
lcd.print(“Mogenot D. V3”); // Afficher un petit message
lcd.setCursor(0,02); //Ligne du bas
lcd.print(“10/04/2015”); // Afficher un petit message
delay(5000); //intro de 5 secondes-
lcd.setCursor(0,1); //Ligne du bas
lcd.print(" “); //Effacer cette ligne
lcd.setCursor(0,0);
lcd.print(” “); //Effacer cette ligne
lcd.setCursor(0,02);
lcd.print(” "); //Effacer cette ligne
delay(2000); //intro de 2 secondes-
{
pinMode (13, OUTPUT);//Sortie relais ouvert
}
}
}
}
/--------------------------------------------------------------------------/
/*Instructions qui seront répétees indéfiniment/
void loop(){}
void writeEEPROM(int deviceaddress, unsigned int eeaddress, byte data )
{
Wire.beginTransmission(deviceaddress);
Wire.write((int)(eeaddress >> 8)); // MSB
Wire.write((int)(eeaddress & 0xFF)); // LSB
Wire.write(data);
Wire.endTransmission();
delay(5);
}
byte readEEPROM(int deviceaddress, unsigned int eeaddress )
{
byte rdata = 0xFF;
Wire.beginTransmission(deviceaddress);
Wire.write((int)(eeaddress >> 8)); // MSB
Wire.write((int)(eeaddress & 0xFF)); // LSB
Wire.endTransmission();
Wire.requestFrom(deviceaddress,1);
if (Wire.available()) rdata = Wire.read();
return rdata;
{
digitalWrite (13, HIGH); //Sortie relais niveau logique haut
delay (1000); //Délai d’anti-rebondissement
}
}
{
/* Affiche le menu principal */
displayMenu(MAIN_MENU);
/* Démo pour montrer la sortie du menu */
lcd.clear();
lcd.print(F(“Menu ferme”));
delay(2000);
}
void aiguillage(int choix_utilisateur)
{
switch (choix_utilisateur)
{
case 0:
Serial.print("aiguillage = ");Serial.println(“voltmetre”);
Voltmetre ();
break;
case 1:
Serial.print("aiguillage = ");Serial.println(“cons electrique”);
// Cons_Electrique ();
break;
case 2:
Serial.print("aiguillage = ");Serial.println(“Temperature box”);
// Temperature_Box ();
break;
case 3:
Serial.print("aiguillage = ");Serial.println(“Cooling”);
// Cooling();
break;
}
}
/** Fonction retournant le bouton appuyé (s’il y en a un). */
Button_t readPushButton(void) {
/* Lecture de l’entrée A0 */
unsigned int val = analogRead(A0);
/* Test suivant les fourchettes de valeurs */
if (val > 1000) return BP_NONE;
if (val < 50) return BP_RIGTH;
if (val < 195) return BP_UP;
if (val < 380) return BP_DOWN;
if (val < 555) return BP_LEFT;
if (val < 790) return BP_SELECT;
/* Par défaut aucun bouton n’est appuyé */
return BP_NONE;
}
/** Affiche le menu passé en argument */
void displayMenu(const Menu_t &menu) {
/* Variable pour le menu */
byte selectedMenuItem = 0; // Choix selectionné
byte shouldExitMenu = false; // Devient true quand l’utilisateur veut quitter le menu
Button_t buttonPressed; // Contient le bouton appuyé
/* Tant que l’utilisateur ne veut pas quitter pas le menu */
while (!shouldExitMenu) {
/* Affiche le menu */
lcd.clear();
lcd.print(menu.prompt);
lcd.setCursor(0, 1);
lcd.print(menu.items[selectedMenuItem]);
/* Attend le relâchement du bouton */
while (readPushButton() != BP_NONE);
/* Attend l’appui sur un bouton */
while ((buttonPressed = readPushButton()) == BP_NONE);
/* Anti rebond pour le bouton */
delay(30);
/* Attend le relâchement du bouton */
while (readPushButton() != BP_NONE);
/* Gére l’appui sur le bouton */
switch (buttonPressed) {
case BP_UP: // Bouton haut = choix précédent
/* Si il existe un choix précédent */
if (selectedMenuItem > 0) {
/* Passe au choix précédent */
selectedMenuItem–;
}
break;
case BP_DOWN: // Bouton bas = choix suivant
/* Si il existe un choix suivant */
if (selectedMenuItem < (menu.nbItems - 1)) {
/* Passe au choix suivant */
selectedMenuItem++;
}
break;
case BP_LEFT: // Bouton gauche = sorti du menu
shouldExitMenu = true;
break;
case BP_SELECT: //
case BP_RIGTH: // Bouton droit ou SELECT = validation du choix
menu.callbackFnct(selectedMenuItem);
break;
}
}
}
/** Affiche le choix de l’utilisateur */
void doMainMenuAction(byte selectedMenuItem) {
/* Cas spécial pour Cooling */
if (selectedMenuItem == 2) {
/* Affiche le sous-menu pour Point de rosée */
displayMenu(COOLING_MENU);
} else {
/* Affiche le choix de l’utilisateur */
displayChoice(selectedMenuItem, MAIN_MENU_ITEMS);
}
}
/** Affiche le choix de l’utilisateur */
void doCoolingMenuAction(byte selectedMenuItem) {
/* Affiche le choix de l’utilisateur */
displayChoice(selectedMenuItem, COOLING_MENU_ITEMS);
}
/** Affiche le choix de l’utilisateur /
void displayChoice(byte selectedMenuItem, const char* items) {
/* Affiche le choix de l’utilisateur /
lcd.clear();
lcd.print(F(“Z’avez choisi :”));
lcd.setCursor(0, 1);
lcd.print(items[selectedMenuItem]);
Serial.print("selectedMenuItem = ");Serial.println(selectedMenuItem);
/ Attend l’appui sur le bouton gauche ou SELECT */
byte buttonPressed;
do {
buttonPressed = readPushButton();
}
while (buttonPressed != BP_LEFT && buttonPressed != BP_SELECT);
aiguillage(selectedMenuItem);
}