I/ Programmation

De troyesGEII
Aller à : navigation, rechercher

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...