Besoins d aide pour la gestion d'une alimentation avec menu de commande

Bonjour

Besoin d’aide pour le programme je suis nul en langage C

Cahier des charges

MATERIEL:
Arduino mini Pro 5v ou Atme128
DHT11-DHT22 -PIN D2
ACS712 -PIN A8
DS18B20 -PIN 3
Relais 5v -PIN 13
LCD 16X4 -PIN (9; 8; 4; 5; 6; 7)
EPROM 24LC256 -PIN SDATA; SCLK
Pont diviseur -PIN A1; A2; A3; A6; A7
Bouton (Rigth; Up; Down; Left; Select) -PIN A0

Fonction :
-Voltmètre 5 voie sur pont diviseur.
-Calcule du point de rosée (DHT11-DHT22) (Relais5v)*.
-Calcule consommation électrique A ; W ; Ah ; Wh ; mA ; (ACS712 30A).
-Calcule température (DS18B20).
-Intro de 5s

Menu système:
VOLTMETRE / POINT DE ROSEE / CONSOMMATION ELECTRIQUE / TEMPERATURE INT.

  • Par le biais du DHT11, calcule le point de rosée, qui enclenche le relais pour alimenter un régulateur de résistance chauffante.

Ci joint un diagramme de ce que je recherche

Merci.

Programme de ma premiere alimentation voltmètre integre

qui fonctionne.

/*--------------------------------------------------------------
  Program:      voltmeter_LCD

  
Description: 4 canaux voltmètre DC avec des tensions affichées 
                 sur l'écran LCD à 1a décimale 
  
   Matériel: Arduino Uno avec des diviseurs de tension sur A1 à A4. 
                 4 x 16 LCD relié aux broches standards utilisés dans 
                 Exemple Arduino esquisse de IDE. 
                
   Logiciel: Développé en utilisant le logiciel Arduino 1.0.5 
                 Doivent être compatibles avec Arduino 1.0 + 

   Date: 14/07/2014
--------------------------------------------------------------*/
#include <LiquidCrystal.h>


// nombre d'échantillons analogiques à prendre par la lecture, par canal
#define NUM_SAMPLES 10
// 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
// Valeur de tension de référence ADC / calibration
#define V_REF    4.95

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
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
 
void setup()    // Initialisation
{
    lcd.begin(16, 4);    // Démarrer la librairie
 
 //Message de bienvenue
 lcd.setCursor(0,0); //En haut à gauche (numéroté depuis 0)
 lcd.print("Alim Astro"); // Afficher un petit message
 lcd.setCursor(0,1);   //Ligne du bas
 lcd.print("Mogenot D. V2.1");   // 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("Choisir 1 bouton"); // Afficher un petit message
}

void loop()   // Fonction principale
{
     
  // prendre un certain nombre d'échantillons analogiques et de les additionner
    while (sample_count < NUM_SAMPLES) {
        // sample each channel A1 to A4
        for (l_cnt = 0; l_cnt < 4; l_cnt++) {
            sum[l_cnt] += analogRead(A1 + l_cnt);
        }
        sample_count++;
        delay(10);
    }
    // calculer la tension de chaque canal
    for (l_cnt = 0; l_cnt < 4; l_cnt++) {
        voltage[l_cnt] = ((float)sum[l_cnt] / (float)NUM_SAMPLES * V_REF) / 1024.0;
    }
    // tensions d'affichage sur l'écran LCD
    // chaque tension est multipliée par le réseau de résistances
    // facteur de division pour calculer la tension réelle
   // tension 1 - A (pin A1)
    lcd.setCursor(0, 0);
    lcd.print("A ");
    lcd.print(voltage[0] * DIV_1, 1);
    lcd.print("V ");
    
    // tension 2 - B (pin A2)
    lcd.setCursor(8, 0);
    lcd.print("B ");
    lcd.print(voltage[1] * DIV_2, 1);
    lcd.print("V ");
    
    // tension 3 - C (pin A3)
    lcd.setCursor(0, 1);
    lcd.print("C ");
    lcd.print(voltage[2] * DIV_3, 1);
    lcd.print("V ");
    
    // tension 4 - D (pin A4)
    lcd.setCursor(8, 1);
    lcd.print("D ");
    lcd.print(voltage[3] * DIV_4, 1);
    lcd.print("V ");
    
    // réinitialiser le nombre et les montants
    sample_count = 0;
    for (l_cnt = 0; l_cnt < 4; l_cnt++) {
        sum[l_cnt] = 0;
    }
}

Ci-joint une photo du final.