I/ Programmation

De troyesGEII
Révision datée du 20 avril 2015 à 12:31 par Troyesgeii (discussion | contributions) (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... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

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

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


void loop(){
  for (int i=0; i<4; i++)    //pour chaque led  
{    PORTB&=~(0xFF);    //innitialisation 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...