Dernière révision : mars 2025










Projet Arduino n° 2

Philippe Notez (philippe.notez@inmc.fr)





Sommaire

Introduction

L’électronique et l’informatique ont profondément modifié notre société. C’est certainement la révolution industrielle la plus rapide de l’histoire de l’humanité. Aujourd'hui, les systèmes embarqués sont omniprésents dans notre vie quotidienne et nous emmènent vers un monde de plus en plus connecté, avec ses avantages et ses inconvénients...

L’auteur ne pourra en aucun cas être tenu responsable des dommages qui résulteraient de l’utilisation des informations publiées sur ce site, sous licence Creative Commons BY-NC-SA. Toute reproduction ou modification d'un document, même partielle, est autorisée à condition que son origine et le nom de l'auteur soient clairement indiqués (BY), qu'il soit utilisé à des fins non commerciales (NC), que son mode de diffusion soit identique au document initial (SA), et que cela ne porte pas atteinte à l’auteur.

Ce document présente un projet utilisant une carte Arduino, en espérant toujours être le plus clair et précis possible. Malgré tout le soin apporté à la rédaction, l'auteur vous remercie de bien vouloir le contacter si vous relevez la moindre erreur ou omission, et vous souhaite une agréable lecture.


Objectif

Utiliser une détection radar (module HW-MS03) pour déclencher une interruption,
sortir l'Arduino du mode veille et afficher un jeu de lumière sur 2 leds RVB (module KY-009).


Niveau




Matériel utilisé
  • un support pour Arduino Nano ou une plaque d'essai (breadboard) 170 / 400 / 830 points
  • une carte Arduino Nano
  • un module HW-MS03 (radar)
  • deux modules KY-009 (led RVB)
  • led rouge = 1,8 V : 2 résistances de 330 ohm (10 mA) ou 150 ohm (20 mA)
  • leds verte et bleue = 2,8 V : 4 résistances de 220 ohm (10 mA) ou 100 ohm (20 mA)
  • des câbles Dupont
  • un câble USB pour la liaison avec l'ordinateur

Programme (sketch)

ky-009_radar.ino
// utiliser une détection radar (module HW-MS03) pour déclencher une interruption,
// sortir l'Arduino du mode veille et afficher un jeu de lumière sur 2 leds RVB (module KY-009)

#include <avr/sleep.h>

#define r1 7
#define v1 6
#define b1 8
#define r2 4
#define v2 3
#define b2 5
#define radar 2
#define delai 15

void delayMilliseconds(unsigned temps)
  {
  unsigned i=0;

  while (i<temps)
    {
    yield();
    delayMicroseconds(1000);
    i++;
    }
  }

void isr()  // Interrupt Service Routine
  {
  sleep_disable();
  }

void aff_couleurs()
  {
  int i=0;

  // vert et rouge augmentent
  while (i<=255)
    {
    analogWrite(v1,i);
    analogWrite(r1,i);
    analogWrite(v2,i);
    analogWrite(r2,i++);
    delayMilliseconds(delai);
    }
	// vert diminue et bleu augmente
  i=0;
  while (i<=255)
    {
    analogWrite(v1,255-i);
    analogWrite(b1,i);
    analogWrite(v2,255-i);
    analogWrite(b2,i++);
    delayMilliseconds(delai);
    }
  // rouge diminue et vert augmente
  i=0;
  while (i<=255)
    {
    analogWrite(r1,255-i);
    analogWrite(v1,i);
    analogWrite(r2,255-i);
    analogWrite(v2,i++);
    delayMilliseconds(delai);
    }
	// bleu et vert diminuent
  i=255;
  while (i>=0)
    {
    analogWrite(b1,i);
    analogWrite(v1,i);
    analogWrite(b2,i);
    analogWrite(v2,i--);
    delayMilliseconds(delai);
    }
  }

void setup()
  {
  pinMode(r1,OUTPUT);
  pinMode(v1,OUTPUT);
  pinMode(b1,OUTPUT);
  pinMode(r2,OUTPUT);
  pinMode(v2,OUTPUT);
  pinMode(b2,OUTPUT);
  pinMode(radar,INPUT);
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);  // économie d'énergie max.
  attachInterrupt(digitalPinToInterrupt(2),isr,RISING);
  }

void loop()
  {
  sleep_enable();
  sleep_mode();
  detachInterrupt(digitalPinToInterrupt(2));
  aff_couleurs();
  attachInterrupt(digitalPinToInterrupt(2),isr,RISING);
  }




Haut de page