I/ Programmation : Différence entre versions
(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; // | + | 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); //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|=(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 | |
− | + | 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(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(" mesure="); | 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 | 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 à 14:29
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...