Cours:TpiiChenillardSimple : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
Ligne 6 : Ligne 6 :
 
*ne modifiez pas la fonction printbits, elle sert uniquement à faire un affichage binaire
 
*ne modifiez pas la fonction printbits, elle sert uniquement à faire un affichage binaire
 
*il suffit de décommenter les lignes utiles pour faire l'affichage sur les leds de la carte
 
*il suffit de décommenter les lignes utiles pour faire l'affichage sur les leds de la carte
 +
 +
=Solution détaillée=
 +
 +
Pour réaliser un chenillard simple, nous devons envoyer successivement les valeurs suivantes sur le port parallèle :
 +
 +
{|
 +
!
 +
! colspan="8"|Binaire
 +
!
 +
! Décimal
 +
|-
 +
|val2 = ||0||0||0||0||0||0||0||1|| ||align="center"| 1
 +
|-
 +
|val2 = ||0||0||0||0||0||0||1||0 ||align="center"| 2
 +
|-
 +
|val3 = ||0||0||0||0||0||1||0||0 ||align="center"| 4
 +
|-
 +
|val4 = ||0||0||0||0||1||0||0||0 ||align="center"| 8
 +
|-
 +
|val5 = ||0||0||0||1||0||0||0||0 ||align="center"| 16
 +
|-
 +
|val6 = ||0||0||1||0||0||0||0||0 ||align="center"| 32
 +
|-
 +
|val7 = ||0||1||0||0||0||0||0||0 ||align="center"| 64
 +
|-
 +
|val8 = ||1||0||0||0||0||0||0||0 ||align="center"| 128
 +
|}
 +
  
 
=Solution avec une boucle while=
 
=Solution avec une boucle while=

Version du 19 décembre 2012 à 21:57

retour vers la page des Tps II

Remarques

Si vous copiez les solutions telles quelles

  • l'affichage se fait par défaut sur votre PC avec des printf
  • ne modifiez pas la fonction printbits, elle sert uniquement à faire un affichage binaire
  • il suffit de décommenter les lignes utiles pour faire l'affichage sur les leds de la carte

Solution détaillée

Pour réaliser un chenillard simple, nous devons envoyer successivement les valeurs suivantes sur le port parallèle :

Binaire Décimal
val2 = 0 0 0 0 0 0 0 1 1
val2 = 0 0 0 0 0 0 1 0 2
val3 = 0 0 0 0 0 1 0 0 4
val4 = 0 0 0 0 1 0 0 0 8
val5 = 0 0 0 1 0 0 0 0 16
val6 = 0 0 1 0 0 0 0 0 32
val7 = 0 1 0 0 0 0 0 0 64
val8 = 1 0 0 0 0 0 0 0 128


Solution avec une boucle while

#include "commcarte.h"
void printbits(unsigned char n)
{
  int i;
  for (i=7;i>=0;i--)  printf("%d", (n >> i ) & 1);
}

int main()
{
  int device;
  //device=openParPort("/dev/parport0");
  unsigned char val,cpt=0;
  while (cpt<3)
  {
    cpt++;
    val=0x01;
    while (val)
    {
      //ecrireParPort(device,val);
      printbits(val);printf("\n"); 
      val=val<<1 ;
      //usleep(100000);
    }
  }
  //closeParPort(device); 
}

Solution avec boucle for

multiplication par 2

#include "commcarte.h"
void printbits(unsigned char n)
{
  int i;
  for (i=7;i>=0;i--)  printf("%d", (n >> i ) & 1);
}

int main()
{
  int device;
  //device=openParPort("/dev/parport0");
  unsigned char i,cpt;
  for (cpt=0;cpt<3;cpt++)
  {
    for (i=1;i>0;i*=2)
    {
      //ecrireParPort(device,i);
      printbits(i);printf("\n");
      //usleep(100000);
    }
  }
  //closeParPort(device);
}

décalage de n bits

#include "commcarte.h"
void printbits(unsigned char n)
{
  int i;
  for (i=7;i>=0;i--)  printf("%d", (n >> i ) & 1);
}

int main()
{
  int device;
  //device=openParPort("/dev/parport0");
  unsigned char i,cpt;
  for (cpt=0;cpt<3;cpt++)
  {
    for (i=0;i<8;i++)
    {
      //ecrireParPort(device,1<<i);
      printbits(1<<i);printf("\n");
      //usleep(100000);
    }
  }
  //closeParPort(device); 
}

retour vers la page des Tps II