Étape 6: Comment ça marche ?
Le composant du récepteur IR contient deux récepteurs IR que la séquence de leur changement d’État indique le sens de rotation (00 10 11 01 00... et 00 01 11 10 00...).Un des récepteurs IR est relié à la goupille de l’A4 et l’autre est connecté à la broche de B0. Chaque fois que l’état des changements de code pin B0 de 0 à 1 le microcontrôleur augmente ou diminue les « Ticks » variable dépendent de l’état de l’axe A4, A4 élevé indique une rotation vers l’avant et A4 faible indique une rotation vers l’arrière :
Sub interrupt(void)
{
Si (INTCON. INTF)
{
Si (Capteur1)
{
Si (RButton)
{
Si (OneMeterTicks == MaxOneMeterTicks) OneMeterTicks = 0 ;
OneMeterTicks ++ ;
}
d’autre
Tiques ++ ;
}
d’autre
{
Si (RButton)
{
OneMeterTicks--;
Si (OneMeterTicks == 0) OneMeterTicks = MaxOneMeterTicks ;
}
d’autre
Tiques--;
}
Si (abs(Ticks) > = OneMeterTicks * 10) Ticks = 0 ;
INTCON. INTF = 0 ;
}
}
Le nombre de graduations faite par le changement d’état de pin B0 détermine la distance parcourue après la mise à l’échelle de facteur « OneMeterTicks ». La valeur de « OneMeterTicks » peut être modifiée en tournant le volant tout en maintenant enfoncé le bouton « RESET ».
Si (les tiques < 0)
n = - tiques ;
d’autre
n = tiques ;
n * = 100 ;
Si (UButton == 1)
n / = (unsigned long int)(OneMeterTicks * 2.54) ; pouces
d’autre
n / = (unsigned long int) OneMeterTicks ; cm
Chiffres [2] = n / 100 ;
n = n % 100 ;
Chiffres [1] = n / 10 ;
Chiffres [0] = n % 10 ;
J’ai utilisé « mikroC PRO pour PIC » pour écrire le programme.