I/ Programmation
Révision datée du 21 avril 2015 à 14:29 par Troyesgeii (discussion | contributions)
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);
}
}
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);
}
}
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...