l’IDE génère l’erreur 'PB5 was not declared in this scope'.
Poutrant « PORTB5 » est normalement valide, comme l’atteste la ligne mise en commentaire ; il faut également retirer le #define pour utiliser ladite ligne.
j’obtiens : error: 'PB5' was not declared in this scope
Si j’écris
//#include <avr/io.h>
#define PB5 PORTB5
Le code compile correctement
Si j’écris
#include <avr/io.h>
#define PB5 PORTB5
Le code compile (forcément) correctement.
Donc le
#include <avr/io.h>
ne sert pas.
Pourtant, le fichier io.h est bien présent dans :
arduino/hardaware/tools/avr/avr/include/avr
contents/Resources/Java/hardware/tools/avr/avr/include/avr
Je vais donc rester avec
PORTB |= (1<<PORTB5) ;
et cette incompréhension !
Merci à tous et bonne programmation.
Il a manqué une image à mon précédent post.
Sur le coup, j’ai regroupé les 2 recopies d’écran dans une seule image…
La commande #define PB5 PORTB5 ne fait que bêtement remplacer « PB5 » par « PORTB5 ».
Donc, du point de vue code avant compilation, PB5 n’existe plus, puisque remplacé. #include <avr/io.h> est donc inutile.
Je constate que le MEME code (*):
ne fonctionne pas (voir recopie d'écran de gauche) avec l’IDE Arduino, ;
fonctionne avec Sublime Text, qui utilise le compilateur d’Arduino (Sublime Text n’étant qu’un éditeur de texte).
(*) ce n'est même pas un copier-coller ; j'ouvre le même code source dans l'un ou l'autre des deux éditeurs.