2nd chaîne d'information
Introduction
Acquérir
Traiter
Communiquer
Communiquer
Une fois la trame traitée par le programme du pic, il lui reste à faire correspondre l'ordre associé à la trame trouvée.
C'est la partie "ordre robot" qui réalise cette fonction:
Toutes ces sous parties sont regroupées dans une boucle infinie qui permet de réaliser constamment les tests, et donc d'obéir à plusieurs ordre consécutifs. On obtient donc le programme suivant que nous avons intégré dans le pic.
#include <pic.h>
#include "delay.c"
#define PORTBIT(adr, bit) ((unsigned)(&adr)*8+(bit))
static bit entree @ PORTBIT(PORTA,0); //définition des entrées et sorties du pic
static bit moteur0 @ PORTBIT(PORTB,0);
static bit moteur1 @ PORTBIT(PORTB,1);
static bit moteur2 @ PORTBIT(PORTB,2);
static bit moteur3 @ PORTBIT(PORTB,3);
int E1; //déclaration de variable test E1; E2 et E3
int E2=1;
int E3=1;
main(void)
{
TRISA = 0xFF; //on déclare les portA en entree
TRISB = 0x00; //on déclare les portB en sortis
moteur1=0; moteur0=0; moteur2=0; moteur3=0;
while(1)
{
if (entree==0)
{
DelayMs(12);
E2=entree;
DelayMs(85);
E3=entree;
DelayMs(85);
E4=entree;
DelayMs(505);
}
if (E1==0 && E2==0 && E3==0)
{
moteur0=1;moteur1=0;moteur2=1;moteur3=0;
}
if (E1==0 && E2==0 && E3==1)
{
moteur0=1;moteur1=0;moteur2=0;moteur3=0;
}
if (E1==0 && E2==1 && E3==0)
{
moteur0=0;moteur1=1;moteur2=0;moteur3=0;
}
if (E1==0 && E2==1 && E3==1)
{
moteur0=0;moteur1=1;moteur2=0;moteur3=1;
}
if (E1==1 && E2==0 && E3==0)
{
moteur0=0;moteur1=0;moteur2=1;moteur3=0;
}
if (E1==1 && E2==0 && E3==1)
{
moteur0=0;moteur1=0;moteur2=0;moteur3=1;
}
if (E1==1 && E2==1 && E3==0)
{
moteur0=0;moteur1=0;moteur2=0;moteur3=0;
}
}
}