I/ Programmation : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
(Page créée avec « {{Todo|premier programme: test des leds témoins}} <source lang=c> void setup(){ DDRB=0xFF; //declaration des leds en sortie } void loop(){ for (int i=0; i<4... »)
 
 
Ligne 2 : Ligne 2 :
 
<source lang=c>
 
<source lang=c>
 
void setup(){  
 
void setup(){  
  DDRB=0xFF;        //declaration des leds en sortie
+
  DDRB=0xFF;        //déclaration des leds en sortie
 
}
 
}
  
Ligne 8 : Ligne 8 :
 
void loop(){
 
void loop(){
 
   for (int i=0; i<4; i++)    //pour chaque led   
 
   for (int i=0; i<4; i++)    //pour chaque led   
{   PORTB&=~(0xFF);    //innitialisation du port D a 0  
+
{ PORTB&=~(0xFF);    //initialisation du port D a 0  
 
   PORTB|=(0x01<<i);  // puis écriture des sorties (led de gauche à droite, attention pb de cablage avec notre carte (led mg inversée avec g))   
 
   PORTB|=(0x01<<i);  // puis écriture des sorties (led de gauche à droite, attention pb de cablage avec notre carte (led mg inversée avec g))   
 
   delay(250);
 
   delay(250);
Ligne 23 : Ligne 23 :
  
 
void loop(){  
 
void loop(){  
 +
 
  for (int i=0; i<4; i++)    //pour chaque led  
 
  for (int i=0; i<4; i++)    //pour chaque led  
  {   PORTD&=~(0xFF);    //innitialisation du port D a 0
+
  {  
 +
    PORTD&=~(0xFF);    //innitialisation du port D a 0
 
     PORTD|=(0x10<<i);  // puis écriture des sorties (led de gauche à droite, attention pb de cablage avec notre carte (led mg inversée avec g))
 
     PORTD|=(0x10<<i);  // puis écriture des sorties (led de gauche à droite, attention pb de cablage avec notre carte (led mg inversée avec g))
 
     delay(250);
 
     delay(250);
Ligne 39 : Ligne 41 :
 
{{Todo|troisième programme: test de validation du fonctionnement global de la carte}}
 
{{Todo|troisième programme: test de validation du fonctionnement global de la carte}}
 
<source lang=c>
 
<source lang=c>
void setup(){
+
void setup()
 +
{
 
   DDRD=0xFF;                //déclaration des led(capteur et témoins) en sortie   
 
   DDRD=0xFF;                //déclaration des led(capteur et témoins) en sortie   
 
   DDRC=0x00;                //déclaration des mesures du capteur en entrées
 
   DDRC=0x00;                //déclaration des mesures du capteur en entrées
Ligne 51 : Ligne 54 :
 
       PORTD &=~(0xFF);
 
       PORTD &=~(0xFF);
 
       PORTC &=~(0xFF);    //innitialisation des sortie à 0   
 
       PORTC &=~(0xFF);    //innitialisation des sortie à 0   
    PORTD |= (0x10<<i);    //allumage de la led capteur     
+
      PORTD |= (0x10<<i);    //allumage de la led capteur     
  PORTC |= (0x01<<i);    //lecture du capteur correspondant
+
      PORTC |= (0x01<<i);    //lecture du capteur correspondant
 
       const char* capteur[4]={                                                                      // tableau de la position du capteur lu       
 
       const char* capteur[4]={                                                                      // tableau de la position du capteur lu       
 
  "capteur milieu gauche","capteur gauche",  "capteur milieu droite", "capteur droite"                          };  
 
  "capteur milieu gauche","capteur gauche",  "capteur milieu droite", "capteur droite"                          };  
Ligne 60 : Ligne 63 :
 
  if (maxi<=mesure)      {   
 
  if (maxi<=mesure)      {   
 
       maxi=mesure;      }  
 
       maxi=mesure;      }  
    Serial.println(maxi);  
+
      Serial.println(maxi);  
    Serial.println(mini);
+
      Serial.println(mini);
 
       float etalon=((mesure-mini)/(maxi-mini))*100.0;   
 
       float etalon=((mesure-mini)/(maxi-mini))*100.0;   
    Serial.print(capteur[i+1]);            //affichage de la position du capteur lu   
+
      Serial.print(capteur[i+1]);            //affichage de la position du capteur lu   
 
       Serial.print("  mesure=");     
 
       Serial.print("  mesure=");     
Serial.print(  mesure);          //affichage de cette valeur sur le port serie  
+
      Serial.print(  mesure);          //affichage de cette valeur sur le port serie  
    Serial.print("    etalonnage=" );  
+
      Serial.print("    etalonnage=" );  
    Serial.println(  etalon);   
+
      Serial.println(  etalon);   
      if (etalon>=50) {  
+
 +
  if (etalon>=50) {  
 
       PORTD |=(0x01<<i);            // allumage de la led temoin si ligne noire detecte   
 
       PORTD |=(0x01<<i);            // allumage de la led temoin si ligne noire detecte   
 
     }      else {   
 
     }      else {   
     PORTD &=~(0x01<<i);     }  
+
     PORTD &=~(0x01<<i);
     delay(500);   }   
+
      }  
}
+
     delay(500);
 +
    }   
 +
  }
 
}
 
}
  

Version actuelle datée du 21 avril 2015 à 15:29

Todo.jpg premier programme: test des leds témoins

void setup(){ 
 DDRB=0xFF;         //déclaration des leds en sortie
}


void loop(){
  for (int i=0; i<4; i++)    //pour chaque led  
{  PORTB&=~(0xFF);    //initialisation du port D a 0 
   PORTB|=(0x01<<i);  // puis écriture des sorties (led de gauche à droite, attention pb de cablage avec notre carte (led mg inversée avec g))  
  delay(250);
  }
}

Todo.jpg second programme: test des leds du capteur CNY

void setup(){ 
 DDRD=0xFF;
 }

void loop(){ 

 for (int i=0; i<4; i++)    //pour chaque led 
 { 
    PORTD&=~(0xFF);    //innitialisation du port D a 0
    PORTD|=(0x10<<i);  // puis écriture des sorties (led de gauche à droite, attention pb de cablage avec notre carte (led mg inversée avec g))
    delay(250);
  }
}




Todo.jpg troisième programme: test de validation du fonctionnement global de la carte

void setup()
{
  DDRD=0xFF;                //déclaration des led(capteur et témoins) en sortie  
  DDRC=0x00;                //déclaration des mesures du capteur en entrées
  Serial.begin(9600);       //initialisation du port serie
}
void loop(){
  float mini=1023;
  float maxi=0;
  while(1) {
    for (int i=0; i<4; i++)    {                       // note: les capteurs sont lu de la gauche vers la droite
      PORTD &=~(0xFF);
      PORTC &=~(0xFF);    //innitialisation des sortie à 0  
      PORTD |= (0x10<<i);    //allumage de la led capteur    
      PORTC |= (0x01<<i);    //lecture du capteur correspondant
      const char* capteur[4]={                                                                       // tableau de la position du capteur lu       
 "capteur milieu gauche","capteur gauche",  "capteur milieu droite", "capteur droite"                          }; 
     float mesure= analogRead((PORTC|=(0x01<<i)));  //stockage de la mesure du capteur revoir association capteur lu/affiché
      if (mesure<mini){ 
       mini=mesure;      }     
 if (maxi<=mesure)      {  
      maxi=mesure;      } 
      Serial.println(maxi); 
      Serial.println(mini);
      float etalon=((mesure-mini)/(maxi-mini))*100.0;  
      Serial.print(capteur[i+1]);             //affichage de la position du capteur lu   
      Serial.print("  mesure=");     
      Serial.print(  mesure);          //affichage de cette valeur sur le port serie 
      Serial.print("    etalonnage=" ); 
      Serial.println(  etalon);  
 
  if (etalon>=50) { 
       PORTD |=(0x01<<i);             // allumage de la led temoin si ligne noire detecte  
    }      else {   
     PORTD &=~(0x01<<i);
      } 
     delay(500);
    }  
  }
}


note: ces trois programmes seront prochainement fusionnés en un seul unique programme de test qui fera interagir l'utilisateur...