Question Niveau Débutant

Bonjour à tous,

Une question très simple qui me gène..
Sur mon Project book,

j'ai un projet qui me dit :

const int sensorPin = A0;

//ok c'est c clair je comprends bien cette ligne

sur un pdf (LivretarduinoFr06.pdf) j'ai

int capteur1 = 0;

//je ne comprends pas pourquoi il comprendrait la valeur comme une entree A0 plutôt que le chiffre 0

vous voyer ce que je cherche à comprendre ?

Salut,

C'est pareil, ce sont juste des #define dans les lib correspondante.

Comme pour les pin digitaux, tu peux faire

digitalWrite(D8,LOW)

ou

digitalWrite(8,LOW)

Même tembouille our LOW, HIGH et INPUT, OUTPUT ... J'aurais pu écrire /

digitalWrite(8,0)

C'était encore pareil

Merci de ta réponse, j'ai rien compris :slight_smile:

qu'est ce que un #define ?

surtout la question pour être plus précis ( je suis en train de bouquiner toutes les docs donc ca va venir)

quand j'ecris :

int capteur1 = 0;

cela ne veut pas dire "je crée une variable "capteur1" qui est égale à 0 ???

Ouvre le fichier pins_arduino.h avec un éditeur de texte, tu y trouveras les définitions des pins de la carte, par exemple pour la MEGA

static const uint8_t A0 = 54;
static const uint8_t A1 = 55;
static const uint8_t A2 = 56;
static const uint8_t A3 = 57;

Ca signifie que la constante A0 sera remplacée partout à la compilation par la valeur qui lui a été attribuée (54).

Tu peux aussi coder les n° de pin directement dans ton code (sans passer par les noms A0, ...) mais le code sera moins portable si tu change de modèle de carte (Uno, ..), et un peu moins lisible (le préfixe A permet de reconnaître plus facilement une entrée analogique).

Si si ça veut dire ça, mais la fonction digitalWrite() prend en premier argument un integer, donc c'est bon.

Un #define c'est simplement un moyen de remplacer certaines expression par d'autres juste avant de compiler. Dans le jargon c'est une directive pré-processeur.

Par exemple on peut faire en en-tête :

#define MON_PIN_DIGITAL 8

puis dans la loop() par exemple :

digitalWrite(MON_PIN_DIGITAL,LOW);

De la même manière, si on farfouille dans Arduino 1.5.8\hardware\arduino\avr\cores\arduino\arduino.h on trouve :

#define HIGH 0x1
#define LOW  0x0

#define INPUT 0x0
#define OUTPUT 0x1
#define INPUT_PULLUP 0x2

Donc si je fais

pinMode(8,2);

ça sera exactement pareil que

pinmode(8,INPUT_PULLUP);

Puisqu'après le préprocesseur mon code ressemblera exactement au premier

merci beaucoup de vos reponses

A bientot

johan

un doute persiste dans ma compréhension de ce simple exemple :

si j’écris

int sortie = 13; //car je souhaite attribuer ma variable "sortie" au Pin 13

et

int valeur = 13; // car je souhaite donner la "valeur" le "nombre 13" et pas la sortie 13

comment mon Uno fait la différence ?

Bonsoir,
Il fait la différence parce que les variables n'ont pas le même nom. Tu ne confonds pas la porte de la salle de bain et de la cuisine. :slight_smile:

Akshobya23:
un doute persiste dans ma compréhension de ce simple exemple :

si j’écris

int sortie = 13; //car je souhaite attribuer ma variable "sortie" au Pin 13

Tu n'attribues pas ta variable "sortie" à la pin 13. Tu affectes la valeur 13 à la variable sortie.
Ensuite le reste dépend de ce que tu fais de la variable.
Si tu écris

digitalWrite(sortie,HIGH);

Alors effectivement tu modifies l'état de la sortie 13.

Merci à tous,

J'ai compris !

Thanks to you..

A bientôt