Utilisation d'une variable pour digitalRead

...ou : digitalRead(variable)

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour à tous,

Alors voilà, je souhaiterais quelques explications complémentaires concernant les déclaration de n° de Pin. Je m'explique :

Je souhaite réaliser un programme qui déplace un chariot. Ce chariot peut s’arrêter à différentes positions. Pour cela, j'utilise un moteur avec une liaison poulie/courroie.

D'un point de vue programmation, j'aimerais réaliser une fonction qui dit : avance jusqu'au capteur X. Afin d'être appelée plusieurs fois et ainsi alléger la quantité de code, cette fonction recevrais en paramètre le capteur où elle doit s’arrêter. Or d'un point de vu matériel, le capteur est relié à un Pin de l'arduino.

Ma question est donc : Quel est le type d'argument à transmettre à ma fonction de sorte à ce que je puisse l'utiliser de la forme :

1
while(digitalRead(variable_X_recuperee_en_argument) == HIGH)

J'espère avoir été suffisamment précis. En vous remerciant d'avance.

Yvan

Édité par Yahounde

+0 -0

La fonction digitalRead prend en argument le numero de la broche. Du coup tu peux simplement faire

1
while(digitalRead(numero-de-la-broche) == HIGH)

Ce numero de broche peut bien sur etre une variable. Par exemple on pourrait imaginer avoir 4 capteurs A, B, C, D branche sur les broches 5, 2, 8, 10. On stocke tout ca dans un tableau dans l'ordre et on a :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
int stations[4] = {5, 2, 8, 10};

void setup() {
    for(char i=0; i<4; i++) {
        pinMode(stations[i], INPUT);
    }
}

void loop() {
    for(char i=0; i<4; i++) {
        traitement(i);
    }
}

void traitement(int cible) {
    while(digitalRead(stations[cible]) == HIGH) {
        // on avance jusqu’à la station cible
    }
    // puis on fait le traitement de la station une fois atteinte
    traiter(cible); // une autre fonction
}

ZdS, le best du Zeste ! Tuto Arduino, blog, etc

+0 -0

Je suppose qu'on aurait aussi pu envoyer un objet String ? (digitalRead(String) )

Absolument pas :D Cette fonction accepte uniquement un entier symbolisant le numéro de la broche. Je déconseille de manière générale fortement les objets de type String (au profit de chose old school comme des tableaux de char pour représenter des chaines de caractères)

PS, n'oublie pas de marquer le sujet comme résolu (barre laterale a gauche) si ce dernier est OK :)

Édité par Eskimon

ZdS, le best du Zeste ! Tuto Arduino, blog, etc

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte