[RESOLU] lire état d'une sortie digitale

al1fch:
Oui, l'article n'est ni complet ni parfait !
En principe , pour une sortie, PORTB et PINB devrait renvoyer la même valeur binaire. (je testerai dès que possible)
La nuance c'est que PORTB renvoie l'état de la bascule, l'état 'voulu' en quelque sorte et que PINB renvoie une information prélevée plus près de la broche de sortie, l'état logique 'réel' existant sur la broche elle même.
L'article cité simplifie les choses et n'évoque pas le maintien du retour d'info par PINB dans le cas d'une sortie.
On ne peut reprocher cela à l'article qui est naturellement simplificateur : une voie pour la sortie, une autre pour l'entrée, pas de mélange des genres pour ne pas embrouiller.
Si le schéma te dis quelquechose j'ai mis en bleu la sortie par PORTB vers la broche (jaune) et le retour par PINB (le même retour que pour une entrée) en orange.

Ok, pas évident à comprendre tout ça. Mais je vois la différence, merci pour le shéma :wink:

Artouste:
re
test rapide sur un duemilanove (black widow 1.0) je n'ai que ça sous la main

avec ce code je recupere pb sur le serial 0 32 0 32 0 32 0 32 ...

/*

Blink
 Turns on an LED on for one second, then off for one second, repeatedly.

This example code is in the public domain.
*/

// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;
byte pb;
// the setup routine runs once when you press reset:
void setup() {                
 // initialize the digital pin as an output.
 pinMode(led, OUTPUT);  
Serial.begin(9600);

}

// the loop routine runs over and over again forever:
void loop() {
 digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
 delay(1000);               // wait for a second
 pb=PORTB;
 Serial.println(pb);
 digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
 pb=PORTB;
 Serial.println(pb);
 delay(1000);               // wait for a second
}

Tu reçois donc 0 pour un état HIGH et 32 pour un état LOW?
32 en binaire ça nous donne: 0b100000

Comment interpréter le résultat?