1ere Chaîne d'information

2nd chaîne d'information

Introduction
Acquérir
Traiter
Communiquer

Chaîne d'énergie

Bilan électronique

 

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;
}

}
}

page suivante