Problème serial monitor

Bonjour, je travaille sur un projet de lecteur de carte à puce (téléphonique) et j'ai un problème au niveau du serial monitor j'aimerais qu'il me stocke les bits de la carte mais je n'y arrive pas j'ai bien une communication entre ma carte arduino et le logiciel mais ce qui apparait n'est pas les bits présents sur la carte ( car j'ai pu vérifier à l'oscilloscope)
Voici mon code:

int RAZ = 0;
int H = 1;
int W = 2;
int ACK = 3;
int S = 4;
int val ;

void setup() {

Serial.begin(9600);

// prints title with ending line break
// initialisation des entrées analogiques;
pinMode(RAZ, OUTPUT);
pinMode(H, OUTPUT);
pinMode(S, INPUT);
pinMode(ACK, INPUT);

}

void loop (){

boolean CarteState = digitalRead(ACK);

while ( CarteState == HIGH ){

Serial.println("carte absente") ;
delay (1000);
CarteState = digitalRead(ACK);
}

Serial.println("carte presente");

//initialisation de la carte

digitalWrite (RAZ, LOW); //début RAZ
digitalWrite (H,LOW);
delay (25);

digitalWrite (RAZ, LOW);
digitalWrite (H, HIGH);
delay (25);

digitalWrite (RAZ, LOW);
digitalWrite (H, LOW);

delay (50);
//fin initialisation de la carte
digitalWrite (RAZ, HIGH); // lecture bit 1
digitalWrite (H, LOW);
delay (25);
boolean BitState = digitalRead(S);
if (BitState==HIGH){
Serial.println("haut"); }
else{Serial.println("bas");}
//delay (25);

//debut de lecture carte

for (int i=0; i <= 25; i++)
{

// impulsion de ratio HAUT/BAS fonction de i sur la broche 10
digitalWrite (H, HIGH);
delay (25);
digitalWrite (H, LOW);

delay (25);
boolean BitState = digitalRead(S);
if (BitState==HIGH){
Serial.println("haut"); } else{Serial.println("bas");}
delay (25);

} // fin de la boucle for

delay (5000);

}

S est l'entrée sur laquelle je stocke les valeurs, dans ce programme je ne cherche à lire que les 26 premiers bits mais ça ne change pas grand chose si il y en a 256bit
Merci

int RAZ = 0;
int H = 1;

digitalWrite (RAZ, LOW);
digitalWrite (H, HIGH);

Tu n'utiliserais pas les ports correspondant au port série pin0 et pin1 de ton arduino, conflit ?
Le logiciel interagit avec l'arduino via son port série je suppose ?
(Utilise plutôt des macro #define au lieux d'utilisé des int de 2 octet)

Merci de ta réponse alors par contre si je comprends bien les ports 0 et 1 sont destinés au serial monitor?
Je ne comprends pas ce que tu veux dire par utilisé define à la place de int, c'est une histoire de place?

Yep!

Sur les arduino le port usb est partagé avec le port 0 et 1 (rx/tx). Il faut donc pour garantir la communication via l'Usb selectionner d'autres ports digitaux pour les sondes/capteurs/supports externes.

Pour le #define, je ne me prononcerais pas plus que çà, cela dépend du contexte et sachant que le langage arduino est autant en c qu'en c++, ben çà depend des cas. Entre #define, const int ou enum, mon coeur balance...
Dans l'optique d'Osaka, le #define ici permettra de remplacer automatiquement les variables par leur valeur lors de la compilation du code. C'est donc plus une histoire de linkage entre les variables si je ne me trompe. Il y a peu être un gain de place.

@+

Zoroastre.

ichigocool:
si je comprends bien les ports 0 et 1 sont destinés au serial monitor?

En effet ils sont destinés au port série de ton arduino celui-ci correspond également à ta liaison usb/série utilisé par l'ide arduino, l'application sérial monitor de l'ide arduino ou autre comme le spécifie zoroastre. (sur une mega ça sera de même pin0 et pin1 port série 0)

ichigocool:
Je ne comprends pas ce que tu veux dire par utilisé define à la place de int, c'est une histoire de place?

C'est ça, comme son nom l'indique une variable peut être variable et demande un espace mémoire dans la ram et comme ici je suppose que tes port seront toujours les même ils n'ont pas besoin d'être changé donc aucune manipulation sur ceux ci.
Ce lien l'expliquera mieux que moi pour le #define.
http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.Define