LOCODUINO

Aide
Forum de discussion
Dépôt GIT Locoduino
Flux RSS

jeudi 25 avril 2024

Visiteurs connectés : 51

Les entrées sorties de l’Arduino

. Par : Dominique, Guillaume, Jean-Luc

Si la plupart des broches d’entrées/sorties disponibles à la périphérie des Arduino permettent d’émettre ou de recevoir une valeur numérique binaire (0 ou 1), elles offrent aussi des fonctions spécialisées et on peut, par programme, décider de la fonction allouée à une broche particulière. Quelque soit la broche de l’Arduino, on ne peut y (...)

Retourner à l'article

Vous répondez à :

Les entrées sorties de l’Arduino 19 mars 2023 11:55, par Jean-Luc

Bonjour,
 
On peut faire exactement ce que l’on veut.
 
Par exemple, pour votre application, supposons que vous ayez N sorties, numérotées de 0 à N-1, on peut, par exemple tirer une sortie au hasard puis lui appliquer un état, allumé ou éteint, au hasard. Fixons N au nombre d’entrées/sorties de l’Arduino Uno : 20, cela donnerait le loop suivant :

const byte N = 20;
const int PERIODE = 5000;

void loop() {
  const byte sortie = random(N);  /* 0 à N-1 */
  const byte etat = random(2);    /* 0 ou 1  */
  digitalWrite(sortie, etat);
  delay(PERIODE);
}

C’est sans doute le programme le plus simple que l’on puisse écrire mais vous aurez toujours au moins PERIODE millisecondes entre deux changements d’état d’une des lumières de l’ensemble de maisons. Une autre solution est de tirer au sort un intervalle de temps pour chaque lumière. Il faut donc avoir un tableau avec un élément par lumière pour mémoriser cet intervalle de de temps et un tableau pour la date du dernier changement. Cela donnerait ceci :

const uint32_t PERIODE_MAX = 240000; /* 4 minutes */
const uint32_t PERIODE_MIN = 30000;  /* 30 secondes */
const byte N = 20;
uint32_t intervalle[N];
uint32_t derniere_date[N];

void loop() {
  uint32_t date = millis();
  for (byte sortie = 0; sortie < N; sortie++) {
    if (date - derniere_date[sortie] > intervalle[sortie]) {
      derniere_date[sortie] = date;
      intervalle[sortie] = random(PERIODE_MIN, PERIODE_MAX);
      digitalWrite(sortie, ! digitalRead(sortie));
    }
  }
}

Ici, chaque lumière suit une suite de changements d’état séparés par une durée tirée aléatoirement entre PERIODE_MIN et PERIODE_MAX indépendamment des autres lumières. Notez également qu’au démarrage toutes les lumières vont s’allumer simultanément. Il faudrait dans setup tirer aléatoirement un état initial pour chaque lumière.
 
Je n’ai ni compilé, ni testé, ces deux programmes.

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

89 Messages

Rubrique Atelier

LOCODUINO, l’Arduino pour le train miniature

Débuter en Arduino sans Arduino ! (1)

Débuter en Arduino sans Arduino ! (2)

Comment alimenter l’Arduino sans ordinateur ?

Faire de jolis schémas avec Fritzing

Les entrées sorties de l’Arduino

Installer une bibliothèque

La compilation d’un projet Arduino

Entrées numériques et résistance pull-up (1)

Entrées numériques et résistance pull-up (2)

Monter une bibliothèque !

Démarrer en électronique

Conférence sur Arduino faite à Trainsmania (avril 2017)

LOCODUINO à Fédérail 2017

Comment réussir son projet Arduino

Utiliser les composants CMS

Que peut-on alimenter avec un Arduino

Salade de broches

Comment utiliser Arduino sans apprendre à programmer ?

Du sketch à l’exécutable

Programmer vos Arduino avec un fichier hexadécimal

Où et comment demander de l’aide ?

LOCODUINO raconté sur la chaîne Aiguillages

Les derniers articles

LOCODUINO raconté sur la chaîne Aiguillages


Dominique

Débuter en Arduino sans Arduino ! (2)


Christian

Où et comment demander de l’aide ?


Christian, Dominique, Jean-Luc, msport, Thierry

Débuter en Arduino sans Arduino ! (1)


Christian

Comment utiliser Arduino sans apprendre à programmer ?


Christian

Programmer vos Arduino avec un fichier hexadécimal


Christian

Du sketch à l’exécutable


Christian

Salade de broches


Thierry

Que peut-on alimenter avec un Arduino


Jean-Luc

La compilation d’un projet Arduino


Thierry

Les articles les plus lus

Les entrées sorties de l’Arduino

Comment alimenter l’Arduino sans ordinateur ?

Entrées numériques et résistance pull-up (1)

Que peut-on alimenter avec un Arduino

Programmer vos Arduino avec un fichier hexadécimal

Débuter en Arduino sans Arduino ! (1)

La compilation d’un projet Arduino

Faire de jolis schémas avec Fritzing

Installer une bibliothèque

Où et comment demander de l’aide ?