Shield ethernet R3 - blocage de mon programme

Les cartes Arduino, les platines

Shield ethernet R3 - blocage de mon programme

Message non lude chef chaudard » Sam 7 Avr 2012 16:24

Bonjour à tous,

Je vais d'installer un shield ethernet R3 sur une mega non R3 et je constate que la fonction loop ne s’exécute plus.

J'ai un écran LCD branché sur la méga. Je vois que la partie setup s'exécute et qu'au moment de passer à la partie loop l'écran reste sans information.

Est ce que le fait de brancher la carte ethernet fait qu'il faut la configurer tout de suite pour utilser la méga normalement ou est ce que c'est une incompatibilité ?

Merci d'avance pour vos réponses
chef chaudard
 
Messages: 45
Inscription: Sam 31 Mar 2012 18:44
Localisation: IDF - TAVERNY

Re: Shield ethernet R3 - blocage de mon programme

Message non lude Lionel » Mar 10 Avr 2012 09:29

Bonjour,

serait il possible d'avoir plus de détails au niveau du code, de la version de l'ide et du schéma de câblage utilisé pour tout ceci ?
Image - Distributeur officiel Arduino - Conception de shields
Avatar de l’utilisateur
Lionel
 
Messages: 732
Inscription: Mar 21 Déc 2010 09:52
Localisation: Toulouse

Re: Shield ethernet R3 - blocage de mon programme

Message non lude chef chaudard » Mar 10 Avr 2012 11:07

Bonjour,

Pour le moment, j'ai un écran 4 lignes connectées à la mega, 7 boutons poussoirs pour gérer les menus, des sorties numériques pour commander des relais et des capteurs de températures sur les entrées analogiques.

Tout ceci marche correctement avec la mega seule. Pour aller plus loin dans mon projet, j'ai acheté un shield ethernet. À partir du moment que je l'ai installer sur la mega, j'ai constaté que la boucle loop semble ne plus s'exécuter par la boucle setup se s'exécute correctement. Lorsque je retire la carte ethernet, ça marche de nouveau.

Est ce qu'il faut un minimum de configuration pour pouvoir continuer à utiliser ma mega ?

Pour le moment, j'ai juste mis la carte ethernet , je n'ai mis aucune ligne de programmation en conséquence.

Si vous avez besoin plus d'information, je pourrais vous en donner par contre je n'ai pas de schéma de câblage.
chef chaudard
 
Messages: 45
Inscription: Sam 31 Mar 2012 18:44
Localisation: IDF - TAVERNY

Re: Shield ethernet R3 - blocage de mon programme

Message non lude Lionel » Mar 10 Avr 2012 11:19

Re-

En l'absence de schéma, une photo nette c'est bien aussi
Et disons que si vous nous fournissiez le code, on pourrait en déduire le câblage du lcd et voir si vous n'avez pas d'incompatibilité dans le choix de vos sorties.
Une fois ceci vérifié, nous pourrons regarder si il n'existe pas d'incompatibilités entre les librairies utilisées.

Donc en résume :
1. Photo du montage
2. Code qui marche sans shield ethernet
3. Code qui ne marche plus avec shield (si différent)
Image - Distributeur officiel Arduino - Conception de shields
Avatar de l’utilisateur
Lionel
 
Messages: 732
Inscription: Mar 21 Déc 2010 09:52
Localisation: Toulouse

Re: Shield ethernet R3 - blocage de mon programme

Message non lude chef chaudard » Mar 10 Avr 2012 13:25

Ci dessus le programme complet réalisé jusqu'à présent. Le programme est le même avec et sans ethernet.

Dans la phase setup, le programme affiche quelques textes sur le LCD, force les relais à l'état haut et récupère des valeurs de variable dans l'eeprom.

Lorsque la carte ethernet est installée, le dernier texte affiché est "Démarrage du système informatique" puis l'écran devient vierge( ceci correspond à la dernière instruction dans le setup).

Normalement apparait ensuite l'écran d'accueil avec la date et l'heure (ici simulé par du texte pour le moment) et l'affichage de deux température ainsi que le mode de régulation.



 volatile byte rpmcount;

 unsigned int rpm;

 unsigned long timeold;
long previousMillis = 0;




// --- Inclusion des librairies utilisées ---
#include <LiquidCrystal.h> // Inclusion de la librairie pour afficheur LCD
#include <EEPROM.h>
int adresse = 0; // adresses entre 0 et 1023 pour Arduino UNO - 1024 octets
byte valeur=0;
//--------Variables réglages seuils
int TensionR1Zone1 = 0 ;
int R1Zone1 = 20;
int TensionR2Zone1 = 0;
int R2Zone1 = 30;
//********************************************************************************


//----------Variable Temperatures----------------------------------------------------------
#define TCZone1 1
int tempZone1;
int tempZone2;
int tempZone3;
int tempZone4;
int tempZone5;
int tempZoneAmbiant;

int VitesseZ1 = 0;

//****************************************************************************************
//--------Variable Menu LCD
int Droit = 0;
int Centre = 0;
int Gauche = 0;
int EtatMenu = 0;
int EtatCentre = 0;
int lcdRAZ = 0; // Variable empechant l'effacement de l'écran d'un menu à chaque boucle alors que la page n'a pas changé
int Accueil = 0;
int etatPrecedentCentre = 0;
int etatPrecedentGauche = 0;
int etatPrecedentDroit = 0;
int etatPrecedentHaut = 0;
int etatPrecedentBas = 0;
int etatPrecedentD = 0;
int etatPrecedentG = 0;
int Haut = 0;
int Bas = 0;
int D = 0;
int G = 0;
int LigneSup = 0; // Variable pour supprimer uniquement la fleche précédente sans l'écran complet
int Ligne=0; // Variable de selection de la ligne
int Colonne4 = 3;
int Ligne4 = 1;
int Ligne4Sup = 0;
int Colonne4Sup = 0;
int C3=0; // Variable gérant le nombre de colonne pour la page des seuils au niveau des boutons D et G
int Valid = 0;
int Mode = 1;
//*******************************************************************************
//--------------Variable LCD----------------------------------------------------------
byte degrees[8] = {
  B00000,
  B01000,
  B10100,
  B01000,
  B00000,
  B00000,
  B00000,
  B00000,
};
const int RS=2; //declaration constante de broche
const int E=22; //declaration constante de broche
const int D4=23; //declaration constante de broche
const int D5=24; //declaration constante de broche
const int D6=25; //declaration constante de broche
const int D7=26; //declaration constante de broche
// --- Initialisation des fonctionnalités utilisées ---
LiquidCrystal lcd(RS, E, D4, D5, D6, D7);// initialisation LCD en mode 4 bits
//****************************************************


void setup() { // debut de la fonction setup()

Serial.begin(9600);


  
 //--------------Voies pour les relais régulation températures -------------------------------
 pinMode(27, OUTPUT); //met la broche en sortie
 pinMode(28, OUTPUT);
 pinMode(29, OUTPUT);
 pinMode(30, OUTPUT);
 pinMode(31, OUTPUT);
 pinMode(32, OUTPUT);
 pinMode(33, OUTPUT);
 pinMode(34, OUTPUT);
 pinMode(35, OUTPUT);
 pinMode(36, OUTPUT);
 pinMode(37, OUTPUT);
 
 //--------------Voies boutons MENU LCD-------------------------------------------
 pinMode(51, INPUT); // Bouton droit
 pinMode(52, INPUT); // Bouton Centre
 pinMode(53, INPUT); // Bouton gauche
  pinMode(50, INPUT); //Bouton Haut
 pinMode(49, INPUT); // Bouton Bas
 pinMode(48, INPUT); // Bouton Valid
  pinMode(47, INPUT);
//**************************************************************************

//-----------INITIALISATION LCD-------------------------------------------
lcd.begin(20,4); // Initialise le LCD avec 20 colonnes x 4 lignes
delay(10); // pause rapide pour laisser temps initialisation
lcd.createChar(1, degrees );
//*********************************************************************

// --------------Séquence de démarrage---------------------------
digitalWrite(27, HIGH);
digitalWrite(28, HIGH);
digitalWrite(29, HIGH);
digitalWrite(30, HIGH);
digitalWrite(31, HIGH);
digitalWrite(32, HIGH);
digitalWrite(33, HIGH);
digitalWrite(34, HIGH);
digitalWrite(35, HIGH);
digitalWrite(36, HIGH);

R1Zone1 = EEPROM.read(0);
R2Zone1 = EEPROM.read(1);

lcd.setCursor(1, 0) ;
lcd.print("INITIALISATION DU") ;
lcd.setCursor(1, 1) ;
lcd.print("SYSTEME C.P.I.S.I.") ;
lcd.setCursor(0, 3) ;
lcd.print("Ver:1.0 build 090212") ;

delay(4000);
lcd.clear(); // // efface écran et met le curseur en haut à gauche
delay(10); // pour laisser temps effacer écran

lcd.setCursor(4, 1) ;
lcd.print("DEMARRAGE DU") ;
lcd.setCursor(0, 2) ;
lcd.print("SYSTEME INFORMATIQUE") ;

delay(2000);
lcd.clear(); // // efface écran et met le curseur en haut à gauche
delay(10);
}




void loop(){ // debut de la fonction loop()
  unsigned long currentMillis = millis();

   Droit = digitalRead(51);
Centre = digitalRead(52);
Gauche = digitalRead(53);
Haut = digitalRead(49);
Bas = digitalRead(50);
G = digitalRead(48); // Bouton droit selection
D = digitalRead(47); // Bouton gauche selection

//--------------ECRAN D'ACCUEIL--------------------------------------
//time = millis();
Serial.print (Valid);

if (Accueil == 2){
  EtatMenu = 0;
   lcdRAZ = 0;
   Accueil = 0;
   
  
 
}

//********************************************************************



//--------------Gestion régulattion-----------------------------------

 
 if(currentMillis - previousMillis > 5000) {
    previousMillis = currentMillis;  
    analogRead (0);
    delay(20);
    tempZone1 = analogRead(0) * 5000L / 1024L / 10;
   analogRead (1);
    delay(20);
    tempZone2 = analogRead(1) * 5000L / 1024L / 10;
       analogRead (2);
    delay(20);
    tempZone3 = analogRead(2) * 5000L / 1024L / 10;
       analogRead (3);
    delay(20);
    tempZone4 = analogRead(3) * 5000L / 1024L / 10;
       analogRead (4);
    delay(20);
    tempZone5 = analogRead(4) * 5000L / 1024L / 10;
       analogRead (5);
    delay(20);
    tempZoneAmbiant = analogRead(5) * 5000L / 1024L / 10;
 }
 
    //-------------ZONE 1 -------------------------------------------
   
   switch (Mode)
   {
   case 1 :
   
    if (tempZone1 >=R2Zone1)
    {
     digitalWrite (27, HIGH) ;
     digitalWrite (28, HIGH);
     VitesseZ1 = 2;
    }
    else if (tempZone1 <= R1Zone1)
    {
      digitalWrite (28, LOW) ;
      VitesseZ1 = 0;
    }
    else
    {
      digitalWrite (28, HIGH) ;
      digitalWrite (27, LOW) ;
      VitesseZ1 = 1;
    } 
    break;
    
    case 0 :
    
     if (tempZone1 <= R1Zone1)
    {
      digitalWrite (28, LOW) ;
      VitesseZ1 = 0;
    }
    else
    {
      digitalWrite (28, HIGH) ;
      digitalWrite (27, LOW) ;
      VitesseZ1 = 1;
    } 
    break;
    
    case 2:
    
     digitalWrite (27, HIGH) ;
     digitalWrite (28, HIGH);
     VitesseZ1=2;
     break;
   }
    
   //**************************************************************
   //---------- ZONE 2 --------------------------------------------
    if (tempZone2 >=R2Zone1)
    {
     digitalWrite (30, HIGH) ;
    }
    else if (tempZone2 <= R1Zone1)
    {
      digitalWrite (29, LOW) ;
    }
    else
    {
      digitalWrite (29, HIGH) ;
      digitalWrite (30, LOW) ;
    } 
    //*************************************************************
    //---------- ZONE 3 --------------------------------------------
    if (tempZone3 >=R2Zone1)
    {
     digitalWrite (31, HIGH) ;
    }
    else if (tempZone3 <= R1Zone1)
    {
      digitalWrite (32, LOW) ;
    }
    else
    {
      digitalWrite (32, HIGH) ;
      digitalWrite (31, LOW) ;
    } 
    //*************************************************************
       //---------- ZONE 4 --------------------------------------------
   if (tempZone4 >=R2Zone1)
    {
     digitalWrite (33, HIGH) ;
    }
    else if (tempZone4 <= R1Zone1)
    {
      digitalWrite (34, LOW) ;
    }
    else
    {
      digitalWrite (34, HIGH) ;
      digitalWrite (33, LOW) ;
    } 
    //*************************************************************
          //---------- ZONE 5 --------------------------------------------
   if (tempZone5 >=R2Zone1)
    {
     digitalWrite (35, HIGH) ;
    }
    else if (tempZone5 <= R1Zone1)
    {
      digitalWrite (36, LOW) ;
    }
    else
    {
      digitalWrite (36, HIGH) ;
      digitalWrite (35, LOW) ;
    } 
    //*************************************************************

//*********************************************************************


//----------Gestion boutons menu LCD -------------------------------



 if ((Gauche == HIGH) && (etatPrecedentGauche == LOW))
    {
     
   // if (Valid == 1)
 // {
  // }
   // else
    // {
      EtatMenu = EtatMenu+1;
     Accueil = 0;
     lcdRAZ = 0;
     Colonne4 = 3;
Ligne4 = 1;
C3=0;
     delay(10);
    }  
    etatPrecedentGauche = Gauche;
 // }
/*
 if ((Centre == HIGH) && (etatPrecedentCentre == LOW))                            
    {
    EtatCentre = 1 ;
     Accueil = Accueil + 1;
   
     lcdRAZ = 0;
      lcd.clear();
      delay(10);
    } 
    etatPrecedentCentre = Centre;
    */
 if ((Droit == HIGH) && (etatPrecedentDroit == LOW))
    {
     // if (Valid == 1)
  // {
   // }
  // else
   // {
      EtatMenu = EtatMenu-1;
     Accueil = 0;
     lcdRAZ = 0;
      Colonne4 = 3;
 Ligne4 = 1;
 C3=0;
     delay(10);
    } 
    etatPrecedentDroit = Droit;
 // }
         
 /* if ((Haut == HIGH) && (etatPrecedentHaut == LOW))
    {
  R1Zone1 = R1Zone1 + 1;
  // lcd.setCursor(Colonne4, Ligne4) ; 
            // lcd.print("R1Zone1") ;
  
     lcdRAZ = 0;
   

     delay(10);
    }  
    etatPrecedentHaut = Haut;
    */
 //*********************************************************************
 
 
 
// ---------------------------MENU LCD ----------------------------------------------------
    switch (EtatMenu){
  
       
     case 0 :
     if (lcdRAZ == 0){
                lcd.clear();
             }
  lcd.setCursor(0, 1) ;
  lcd.print("04/03/2012 09:18") ;
  lcd.setCursor(0, 0) ;
  lcd.print("MODE SYST.: ") ;
  lcd.setCursor(12, 0) ;
   if ((D == HIGH) && (etatPrecedentD == LOW))
 {
    Mode = Mode +1;
    
  }
  etatPrecedentD = D;
 if ((G == HIGH) && (etatPrecedentG == LOW))
 {
   
   Mode = Mode -1;
 }
 
  etatPrecedentG = G;
  
  
  switch (Mode)
 {
  case 0 :
 lcd.print("Silence");
 break;
   case 1 :
   lcd.print(" ");
     lcd.setCursor(12, 0) ;
 lcd.print("Auto");
 break;
   case 2 :
 lcd.print("Maximum");
 break;
 }
 

  lcd.setCursor(0, 2) ;
  lcd.print("TExt:") ;
  lcd.print(tempZoneAmbiant);
  lcd.write( 1 );
  lcd.print("C");
  lcd.setCursor(11, 2) ;
  lcd.print("TInt:") ;
  lcd.print(tempZone1);
  lcd.write( 1 );
  lcd.print("C");
  delay(100);
    EtatMenu = 0;
    lcdRAZ = 1;
            break;

     
     
     
     
     
     
     
      case 1 : // MENU TEMPERATURES 1/2
        
             if (lcdRAZ == 0){
                lcd.clear();
             }
             //******************************
            switch (VitesseZ1)
            {
              case 2 :
            
          
                lcd.setCursor(12,1 ) ;
                lcd.print("V:FORT ") ;
                break;
            case 0 :
                          
          
              lcd.setCursor(12, 1) ;
              lcd.print("V:OFF ") ;
              break;
            
            case 1 :
            
               lcd.setCursor(12,1 ) ;
               lcd.print("V:MOYEN") ;
               break;
            }
             
             //***************************
               if (tempZone2 >=R2Zone1)
             {
                lcd.setCursor(12,2 ) ;
                lcd.print("V:FORT ") ;
             }
                          
            else if (tempZone2 <=R1Zone1)
            {
              lcd.setCursor(12, 2) ;
              lcd.print("V:OFF ") ;
            }
            else
            {
               lcd.setCursor(12,2 ) ;
               lcd.print("V:MOYEN") ;
             } 
             //*********************************
               if (tempZone3 >=R2Zone1)
             {
                lcd.setCursor(12,3 ) ;
                lcd.print("V:FORT ") ;
             }
                          
            else if (tempZone3 <=R1Zone1)
            {
              lcd.setCursor(12, 3) ;
              lcd.print("V:OFF ") ;
            }
            else
            {
               lcd.setCursor(12,3 ) ;
               lcd.print("V:MOYEN") ;
             } 
             
            //---------------AFFICHAGE TEMERATURES-----------------------------------------------
            lcd.setCursor(0, 0) ;
            lcd.print("Temperatures PAGE 1") ;
 
            lcd.setCursor(0, 1) ;
            lcd.print("ZONE 1:") ;
            lcd.print(tempZone1) ;
            lcd.write( 1 );
            lcd.print("C");

            lcd.setCursor(0, 2) ;
            lcd.print("ZONE 2:") ;
            lcd.print(tempZone2) ;
            lcd.write( 1 );
            lcd.print("C");

            lcd.setCursor(0, 3) ;
            lcd.print("ZONE 3:") ;
            lcd.print(tempZone3) ;
            lcd.write( 1 );
            lcd.print("C");

            delay (100);
            lcdRAZ = 1;
            break;
            
      case 2 : // MENU TEMPERATURES 2/2
            if (lcdRAZ == 0){
              lcd.clear();
            }
        if (tempZone4 >=R2Zone1)
             {
                lcd.setCursor(12,1 ) ;
                lcd.print("V:FORT ") ;
             }
                          
            else if (tempZone4 <=R1Zone1)
            {
              lcd.setCursor(12, 1) ;
              lcd.print("V:OFF ") ;
            }
            else
            {
               lcd.setCursor(12,1 ) ;
               lcd.print("V:MOYEN") ;
             } 
             //***************************
               if (tempZone5 >=R2Zone1)
             {
                lcd.setCursor(12,2 ) ;
                lcd.print("V:FORT ") ;
             }
                          
            else if (tempZone5 <=R1Zone1)
            {
              lcd.setCursor(12, 2) ;
              lcd.print("V:OFF ") ;
            }
            else
            {
               lcd.setCursor(12,2 ) ;
               lcd.print("V:MOYEN") ;
             } 
            lcd.setCursor(0, 0) ;
            lcd.print("Temperatures PAGE 2") ;
 
            lcd.setCursor(0, 1) ;
            lcd.print("ZONE 4:") ;
            lcd.print(tempZone4) ;
            lcd.write( 1 );
            lcd.print("C");

            lcd.setCursor(0, 2) ;
            lcd.print("ZONE 5:") ;
            lcd.print(tempZone5) ;
            lcd.write( 1 );
            lcd.print("C");

            lcd.setCursor(0, 3) ;
            lcd.print("ZONE EXT:") ;
            lcd.print(tempZoneAmbiant) ;
            lcd.write( 1 );
            lcd.print("C");
            
            lcdRAZ = 1;
            break;
     
  
     case 3 : // MENU REGLAGES SEUILS 1/2
        
         if (lcdRAZ == 0){
            lcd.clear();
         }
Haut = digitalRead(49);
Bas = digitalRead(50);
G = digitalRead(48); // Bouton droit selection
D = digitalRead(47); // Bouton gauche selection


 if ((D == HIGH) && (etatPrecedentD == LOW))
 {
    if (Valid == 1)
    {
    }
    else
    {
   
      C3=C3+1;
      if (C3 >2 )
      {
        C3 =2;
       // Colonne4 = 3;
     // Ligne4 = 1;
       // lcd.setCursor(12, 1) ;
      // lcd.print(" ") ;
      } 
      if( C3 == 1)
      { 
        lcd.setCursor(Colonne4, Ligne4) ;
        lcd.print("->") ;
      }
      if (C3 == 2)
      {
        Colonne4 = 12;
        Colonne4Sup = 3;
        lcd.setCursor(Colonne4, Ligne4) ;
        lcd.print("->") ;
        lcd.setCursor(Colonne4Sup, Ligne4) ;
        lcd.print(" ") ;
      }
    }  
  }
  etatPrecedentD = D;
 if ((G == HIGH) && (etatPrecedentG == LOW))
 {
     if (Valid == 1)
     {
     }
    else
    {
    C3=C3-1; 
    if (C3 < 1 ) // Condition surveillant le dépassement de déplacement G et D
    {
      C3 =1;
     // Colonne4 = 12; // On réinitialise la position de la fleche
  // Ligne4 = 1;
  // lcd.setCursor(Colonne4, Ligne4) ;
    // lcd.print("->") ;
     } 
     if( C3 == 1)
     {  
      Colonne4 = 3;
      Colonne4Sup = 12;
      lcd.setCursor(Colonne4, Ligne4) ;
      lcd.print("->") ;
      lcd.setCursor(Colonne4Sup, Ligne4) ;
      lcd.print(" ") ;
     }
     if (C3 == 2)
     {
       Colonne4 = 12;
       Colonne4Sup = 3;
       lcd.setCursor(Colonne4, Ligne4) ;
       lcd.print("->") ;
       lcd.setCursor(Colonne4Sup, Ligne4) ;
       lcd.print(" ") ;
      }
    } 
  }
  etatPrecedentG = G;
 if ((Centre == HIGH) && (etatPrecedentCentre == LOW))
 {
   Valid = Valid +1;
   if (Valid == 1)
   {
     lcd.setCursor(Colonne4, Ligne4) ;
     lcd.print("+>") ;
   }
   if (Valid == 2)
   {
     lcd.setCursor(Colonne4, Ligne4) ;
     lcd.print("->") ;
     Valid = 0;
   }
   lcdRAZ = 0;
   delay(10);
   }
 
 if (Valid == 1)
 {
   //----------- Gestion de la consigne R1Zone1-------------
   if (Colonne4 == 3 && Ligne4 == 1)
       {  
         if ((Haut == HIGH) && (etatPrecedentHaut == LOW))
         {
           R1Zone1 = R1Zone1 + 1;
           delay(10);
         }  
         etatPrecedentHaut = Haut;
         if ((Bas == HIGH) && (etatPrecedentBas == LOW))
         {
         R1Zone1 = R1Zone1 - 1; 
         delay(10);
         }  
         etatPrecedentBas = Bas;   
        }
        EEPROM.write(0, R1Zone1);
   //----------Gestion de la consigne R2Zone1 ------------------
       if (Colonne4 == 12 && Ligne4 == 1)
       {  
         if ((Haut == HIGH) && (etatPrecedentHaut == LOW))
         {
           R2Zone1 = R2Zone1 + 1;
           delay(10);
         }  
         etatPrecedentHaut = Haut;
         if ((Bas == HIGH) && (etatPrecedentBas == LOW))
         {
         R2Zone1 = R2Zone1 - 1; 
         delay(10);
         }  
         etatPrecedentBas = Bas;   
        }
         EEPROM.write(1, R2Zone1);
  }       
// ***************************************************       
         lcd.setCursor(0, 0) ;
         lcd.print("REGLAGES SEUILS 1/2") ;
         
         lcd.setCursor(0, 1) ;
         lcd.print("Z1:") ;
      
          lcd.setCursor(5, 1) ;
          lcd.print("1=") ;
         lcd.print(R1Zone1) ;
         lcd.write( 1 ); // affiche le signe degré
         lcd.print("C");
          lcd.setCursor(14, 1) ;
         lcd.print("2=") ;
         lcd.print(R2Zone1) ;
         lcd.write( 1 ); // affiche le signe degré
         lcd.print("C");
         
               
         delay(100);
         lcdRAZ = 1;
         break;
         
  
}
}



Ci-dessous le montage. Je l'ai un peu épuré. Je n'ai pas câblé les capteurs de températures qui sont sur les ports A0 à A5 ni les boutons poussoirs qui vont de D47 à D51.

Les fils blancs correspondent à la commande des relais. Ils sont sur les ports D27 à D36.

L'écran LCD est câblé en 4 fils au lieu de 8. Les signaux D4 à D7 sont sur les ports D23 à D26. le signal est RS est sur D2 et E sur D22.

Le 5V est pris sur l'arduino.

Image
Image
Image

J'espère que vous avez assez d'information et je vous remercie pour votre aide.
chef chaudard
 
Messages: 45
Inscription: Sam 31 Mar 2012 18:44
Localisation: IDF - TAVERNY

Re: Shield ethernet R3 - blocage de mon programme

Message non lude chef chaudard » Mar 10 Avr 2012 18:03

J'ai fais un test complémentaire en envoyant le programme blink sur la méga. La led clignote sans et avec la carte ethernet. Il y a donc un problème avec ma programmation ... mais alors la je ne vois pas ce qui peut se passer

edit :
J'ai inclus le code pour faire clignoter la led 13 et elle clignote avec la carte Ethernet installée. Le problème a l'air de se focaliser sur l'écran LCD.
chef chaudard
 
Messages: 45
Inscription: Sam 31 Mar 2012 18:44
Localisation: IDF - TAVERNY

Re: Shield ethernet R3 - blocage de mon programme

Message non lude chef chaudard » Mar 10 Avr 2012 18:40

Je pense avoir trouvé le problème. J'ai une variable "EtatMenu" qui me permet en fonction de sa valeur d'afficher une page sur le LCD.

Il s'avère que lorsque je regarde la valeur de cette variable, au démarrage elle passe de 0 à -1 ce qui ne correspond à rien dans mon programme d'où un écran LCD vierge.

Ce sont les boutons "DROITE" et "GAUCHE" qui changent la valeur de cette variable. Pour passer de 0 à -1 il faut un appui sur la touche droite qui est connecté sur le port 51. En forçant l'entrée à 0 en la reliant à la masse, le programme fonctionne. Bien sur le bouton droit n'est plus opérationnel.

Une question subsiste. Le bus SPI est sur les ports 50 à 53 sur la mega. La carte Ethernet utilise ce bus mais elle est connectée sur les ports dédié de la MEGA.

Est ce que le fait d'utiliser le bus SPI avec les connecteurs spéciaux de la mega font que malgré tout les ports 50 à 53 ne sont plus disponibles comme E/S digital mais comme bus SPI. De ce fait, il faudrait que mes boutons soient connectés ailleurs et ce qui expliquerait le bug que j'ai rencontré ?
chef chaudard
 
Messages: 45
Inscription: Sam 31 Mar 2012 18:44
Localisation: IDF - TAVERNY


Retourner vers Arduino

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités