Une boîte à lumière est un objet composé d’une structure qui diffuse la lumière à travers une gravure pour en révéler des motifs ou des formes.

La programmation permettra de contrôler l’éclairage afin de produire différents effets lumineux et de personnaliser l’ambiance créée.

Programmation pour contrôler une lumière

Défis de programmation

Série de défis de programmation permettant d’explorer différentes façons de contrôler des effets lumineux.

Défi 1

  1. Copie le programme dans le compilateur de code.

  2. Vérifie qu’il fonctionne en cliquant sur « Vérifier ».

  3. Clique sur « Téléverser » pour le téléverser dans ton microcontrôleur.

  4. Modifie la donnée « delay() » et observe les changements qui se produisent.

Défi 1
#include <Adafruit_NeoPixel.h>
#define PIN 8

Adafruit_NeoPixel pixel(1, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  pixel.begin();
}

void loop() {

  // Allume en blanc
  pixel.setPixelColor(0, pixel.Color(255, 255, 255));
  pixel.show();

  delay(500);

  // Éteint
  pixel.setPixelColor(0, pixel.Color(0, 0, 0));
  pixel.show();

  delay(500);
}

Défi 2

  1. Copie le programme dans le compilateur de code.

  2. Vérifie qu’il fonctionne en cliquant sur « Vérifier ».

  3. Clique sur « Téléverser » pour le téléverser dans ton microcontrôleur.

  4. Modifie la donnée « pixel.setBrightness() » et observe les changements qui se produisent.

Défi 2
#include <Adafruit_NeoPixel.h>

#define PIN 8

Adafruit_NeoPixel pixel(1, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  pixel.begin();

  pixel.setBrightness(50);  // Change cette valeur

  pixel.setPixelColor(0, pixel.Color(0, 0, 255));

  pixel.show();
}

void loop() {
}

Défi 3

  1. Copie le programme dans le compilateur de code.

  2. Vérifie qu’il fonctionne en cliquant sur « Vérifier ».

  3. Clique sur « Téléverser » pour le téléverser dans ton microcontrôleur.

  4. Modifie la donnée « pixel.color() » et observe les changements qui se produisent.

Défi 3
#include <Adafruit_NeoPixel.h>
#define PIN 8

Adafruit_NeoPixel pixel(1, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  pixel.begin();
}

void loop() {

  // Rouge
  pixel.setPixelColor(0, pixel.Color(255, 0, 0));
  pixel.show();
  delay(1000);

  // Vert
  pixel.setPixelColor(0, pixel.Color(0, 255, 0));
  pixel.show();
  delay(1000);

  // Bleu
  pixel.setPixelColor(0, pixel.Color(0, 0, 255));
  pixel.show();
  delay(1000);
}
Liste de couleurs
// Rouge
pixel.setPixelColor(0, pixel.Color(255, 0, 0));

// Vert
pixel.setPixelColor(0, pixel.Color(0, 255, 0));

// Bleu
pixel.setPixelColor(0, pixel.Color(0, 0, 255));

// Blanc
pixel.setPixelColor(0, pixel.Color(255, 255, 255));

// Noir (éteint)
pixel.setPixelColor(0, pixel.Color(0, 0, 0));

// Jaune
pixel.setPixelColor(0, pixel.Color(255, 255, 0));

// Cyan
pixel.setPixelColor(0, pixel.Color(0, 255, 255));

// Magenta
pixel.setPixelColor(0, pixel.Color(255, 0, 255));

// Orange
pixel.setPixelColor(0, pixel.Color(255, 100, 0));

// Rose
pixel.setPixelColor(0, pixel.Color(255, 50, 100));

// Violet
pixel.setPixelColor(0, pixel.Color(128, 0, 255));

// Turquoise
pixel.setPixelColor(0, pixel.Color(0, 180, 180));

// Vert lime
pixel.setPixelColor(0, pixel.Color(150, 255, 0));

// Bleu ciel
pixel.setPixelColor(0, pixel.Color(100, 180, 255));

// Rouge foncé
pixel.setPixelColor(0, pixel.Color(100, 0, 0));

// Vert foncé
pixel.setPixelColor(0, pixel.Color(0, 100, 0));

// Bleu foncé
pixel.setPixelColor(0, pixel.Color(0, 0, 100));

// Ambre
pixel.setPixelColor(0, pixel.Color(255, 191, 0));

// Or
pixel.setPixelColor(0, pixel.Color(255, 215, 0));

// Lavande
pixel.setPixelColor(0, pixel.Color(200, 120, 255));

Assemblage de la boîte

Création lumineuse

En modifiant le code suivant, crée l'effet lumineux de ton choix.

Par exemple, tu peux essayer de reproduire :

  • les gyrophares d’un véhicule de police, de pompiers ou d’une ambulance;

  • un phénomène naturel (orage, aurore boréale, coucher de soleil, etc.);

  • une bougie;

  • un feu de circulation;

  • ou tout autre effet lumineux de ton invention.

Défi principal
#include <Adafruit_NeoPixel.h>
// Le NeoPixel intégré du Flora est branché sur la broche 8
#define PIN 8

// Création de l'objet NeoPixel
Adafruit_NeoPixel pixel(1, PIN, NEO_GRB + NEO_KHZ800);

void setup() {

  // Initialise le NeoPixel
  pixel.begin();

  // S'assure qu'il est éteint au départ
  pixel.clear();
  pixel.show();
}

void loop() {

  // ====================
  // 1. BLINK
  // ====================

  for(int i = 0; i < 5; i++) {

    pixel.setPixelColor(0, pixel.Color(255, 255, 255));
    pixel.show();
    delay(500);

    pixel.setPixelColor(0, pixel.Color(0, 0, 0));
    pixel.show();
    delay(500);
  }

  delay(1000);

  // ====================
  // 2. INTENSITÉ
  // ====================

  pixel.setPixelColor(0, pixel.Color(0, 0, 255));

  for(int luminosite = 0; luminosite <= 255; luminosite++) {

    pixel.setBrightness(luminosite);
    pixel.show();
    delay(10);
  }

  for(int luminosite = 255; luminosite >= 0; luminosite--) {

    pixel.setBrightness(luminosite);
    pixel.show();
    delay(10);
  }

  delay(1000);

  // Remet la luminosité maximale
  pixel.setBrightness(255);

  // ====================
  // 3. COULEURS
  // ====================

  pixel.setPixelColor(0, pixel.Color(255, 0, 0));
  pixel.show();
  delay(1000);

  pixel.setPixelColor(0, pixel.Color(0, 255, 0));
  pixel.show();
  delay(1000);

  pixel.setPixelColor(0, pixel.Color(0, 0, 255));
  pixel.show();
  delay(1000);

  pixel.setPixelColor(0, pixel.Color(255, 255, 0));
  pixel.show();
  delay(1000);

  pixel.setPixelColor(0, pixel.Color(0, 255, 255));
  pixel.show();
  delay(1000);

  pixel.setPixelColor(0, pixel.Color(255, 0, 255));
  pixel.show();
  delay(1000);

  // ====================
  // 4. TRANSITION
  // ====================

  for(int r = 0; r <= 255; r++) {

    pixel.setPixelColor(0, pixel.Color(r, 255 - r, 0));
    pixel.show();
    delay(10);
  }

  delay(1000);
}