Bnjour , barbudor
quand, je compile le programme que voici il me met certaines érreurs
j'aimerai savoir pourquoi? svp!
#include <Wire.h>
// enlever le commentaire pour un PCF 16 bit
//#define PCF8575 1
#ifdef PCF8575
#define BITS_PER_CHIP 16
#else
#define BITS_PER_CHIP 8
#endif
#define NBCHIP_OUT 1
#define NBCHIP_IN 1
uint8_t AdrChipOut[NBCHIP_OUT] = { 0x20 };
uint8_t AdrChipIn[NBCHIP_IN] = { 0x24 };
uint16_t MemChipOut[NBCHIP_OUT];
uint16_t ResChipIn[NBCHIP_IN];
void pcfWriteOutWord( uint8_t idOut, uint16_t val )
{
MemChipOut[idOut] = val;
Wire.beginTransmission(AdrChipOut[idOut]);
Wire.write(val);
#ifdef PCF8575
Wire.write(val >> ;
#endif
Wire.endTransmission();
}
void pcfWriteInWord( uint8_t idIn, uint16_t val )
{
Wire.beginTransmission(AdrChipIn[idIn]);
Wire.write(val);
#ifdef PCF8575
Wire.write(val >> ;
#endif
Wire.endTransmission();
}
uint16_t pcfReadInWord( uint8_t idIn )
{
uint16_t val;
Wire.requestFrom( AdrChipIn[idIn], (uint8_t)(BITS_PER_CHIP/8) );
val = Wire.read();
#ifdef PCF8575
val = (val << | Wire.read();
#endif
return val;
}
void pcfWriteOutBit( uint8_t bit, uint8_t val )
{
uint8_t idOut = bit / BITS_PER_CHIP;
bit = bit & (BITS_PER_CHIP-1);
if ( val )
MemChipOut[idOut] |= _BV(bit);
else
MemChipOut[idOut] &= ~_BV(bit);
Wire.beginTransmission(AdrChipOut[idOut]);
Wire.write(MemChipOut[idOut]);
#ifdef PCF8575
Wire.write(MemChipOut[idOut] >> ;
#endif
Wire.endTransmission();
}
void setup()
{
Serial.begin( 9600 );
Wire.begin();
// initialiser les Out à 1 :
int id;
for ( id = 0 ; id < NBCHIP_OUT ; ++id )
pcfWriteOutWord( id, 0xFFFF );
// initialiser les in à 1 (mode entrée)
for ( id = 0 ; id < NBCHIP_OUT ; ++id )
pcfWriteInWord( id, 0XFFFF );
}
void loop()
{
int bit;
int in;
Serial.println( "--- Debut de test ------------------" );
// On va tester en allumant tous les bits de sortie 1 par 1
for ( bit = 0 ; bit < (NBCHIP_OUT * BITS_PER_CHIP) ; ++bit )
{
// Mettre le bit a 0
pcfWriteOutBit( bit, 0 );
// lisons les entrées
for ( in = 0 ; in < NBCHIP_IN ; ++in )
ResChipIn[in] = pcfReadInWord( in );
// Mettre le bit a 1
pcfWriteOutBit( bit, 1 );
// Afficher le résultat
Serial.print( "Bit#" );
Serial.print( bit );
Serial.print( " :" );
for ( in = 0 ; in < NBCHIP_IN ; ++in )
{
Serial.print( " " );
Serial.print( ResChipIn[in], BIN );
}
Serial.println();
}
delay( 5000 );
}