Horloge à LED Assassin’s Creed
horloge-led-assassins-creed-8

Horloge à LED Assassin’s Creed

Dremel m’a proposé de tester leur coffret Dremel 3000, j’ai réalisé une horloge qui prend la forme du logo d’Assassin’s Creed Origins.
Fabriquée en bois et plexiglass, elle intégré un simple mécanisme d’horloge à aiguille, et un anneau NeoPixel de 24 LED RVB qui se rempli au rythme des secondes. Les LEDs sont pilotées par un Arduino Nano.
Le logo est peint en Or antique pour coller avec l’univers du jeu : l’Egypte antique.
L’horloge peut être fixée au mur ou posée sur un support en plexi.

Hauteur totale : 47 cms
Temps passé : 1 journée
Principal outillage : Dremel 3000 + Adaptateur défonceuse 335, outillage à main

Programme Arduino et logo en PDF à télécharger ici :
https://goo.gl/ooCUuY

 

horloge-led-assassins-creed-1
horloge-led-assassins-creed-1
horloge-led-assassins-creed-10
horloge-led-assassins-creed-10
horloge-led-assassins-creed-2
horloge-led-assassins-creed-2
horloge-led-assassins-creed-3
horloge-led-assassins-creed-3
horloge-led-assassins-creed-4
horloge-led-assassins-creed-4
horloge-led-assassins-creed-5
horloge-led-assassins-creed-5
horloge-led-assassins-creed-6
horloge-led-assassins-creed-6
horloge-led-assassins-creed-7
horloge-led-assassins-creed-7
horloge-led-assassins-creed-8
horloge-led-assassins-creed-8
horloge-led-assassins-creed-9
horloge-led-assassins-creed-9
Arduino Nano et Neopixel
Arduino Nano et Neopixel

 

Code Arduino :

// Assassin's Creed LED Clock
// MagicManu - 02/2018
// http://blog.magicmanu.com
// https://www.youtube.com/MagicManu

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
  #include <avr/power.h>
#endif

#define PIN            6
#define NUMPIXELS      24

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

uint16_t delayval = 500; // delay for half a second
uint16_t j;
uint16_t LastCol;
uint16_t NbCycle = 0;

uint32_t TheColors [12] [3] {
  {0, 0, 0}, 
  {255, 0, 0},    
  {0, 255, 0},
  {0, 0, 255},
  {255, 255, 0},
  {0, 255, 255},
  {255, 0, 255},
  {34, 66, 124},
  {233, 56, 63},
  {109, 7, 26},
  {127, 0, 255},
  {0, 201, 87}
};


void setup() {
  randomSeed(analogRead(0)); // This initializes the random value
  
  pixels.begin(); // This initializes the NeoPixel library.

  theaterChase(pixels.Color(120, 120, 120), 30);
}

void loop() {
  // Never same color 2 time
  for(uint16_t c=0; c<10; c++) {
    j = random(1, 12);
    if (j != LastCol)
      break;
  }
  LastCol = j;
 
  colorWipe(0, 2);   // OFF  
  colorWipe(j, 230); // Color
  
  NbCycle++;

  // Rainbow
  if (NbCycle >= 10){
    rainbowCycle(5);
    NbCycle = 0;
  }
}


void colorWipe(int j, uint8_t wait) {
  for(uint16_t i=0; i<pixels.numPixels(); i++) {
    for(int b=10; b>0; b--) {
      pixels.setPixelColor(i, pixels.Color(TheColors[j][0] / b, TheColors[j][1] / b, TheColors[j][2] / b));
      pixels.show();
      delay(wait);
    }
  }
}


// Slightly different, this makes the rainbow equally distributed throughout
void rainbowCycle(uint8_t wait) {
  uint16_t i, j;

  for(j=0; j<256*2; j++) { // 2 cycles of all colors on wheel
    for(i=0; i< pixels.numPixels(); i++) {
      pixels.setPixelColor(i, Wheel(((i * 256 / pixels.numPixels()) + j) & 255));
    }
    pixels.show();
    delay(wait);
  }
}

//Theatre-style crawling lights.
void theaterChase(uint32_t c, uint8_t wait) {
  for (int j=0; j<10; j++) {  //do 10 cycles of chasing
    for (int q=0; q < 3; q++) {
      for (uint16_t i=0; i < pixels.numPixels(); i=i+3) {
        pixels.setPixelColor(i+q, c);    //turn every third pixel on
      }
      pixels.show();

      delay(wait);

      for (uint16_t i=0; i < pixels.numPixels(); i=i+3) {
        pixels.setPixelColor(i+q, 0);        //turn every third pixel off
      }
    }
  }
}


// Input a value 0 to 255 to get a color value.
// The colours are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos) {
  WheelPos = 255 - WheelPos;
  if(WheelPos < 85) {
    return pixels.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  }
  if(WheelPos < 170) {
    WheelPos -= 85;
    return pixels.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
  WheelPos -= 170;
  return pixels.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}

Cet article a 6 commentaires

  1. Sailormars

    Bonjour,
    J’ai télécharger votre programme pour l’Arduino mais j’ai le message d’erreur suivant : AssassinsCreedClock:6:31: error: Adafruit_NeoPixel.h: No such file or directory
    Je ne comprends pas. Savez-vous pourquoi ?
    Merci Bien,

    1. Manu

      Bonjour, il faut ajouter la librairie Neopixel et les autres libraires nécessaires.
      Le ne suis pas sur PC pour l’instant mais vous trouverez comment faire en cherchant « arduino ajouter une librairie ».
      Sinon je regarderai dès que j’aurai le temps

      1. Sailormars

        Bonjour
        Merci pour votre retour. J’ai bien ajouté la librairie et changer le type de carte. Le programme s’est bien télèversé sur la carte mais l’anneau led ne fonctionne pas je ne comprends pas pourquoi car j’ai bien respecté votre schéma électronique.

        1. Sailormars

          J’ai enfin réussi à faire fonctionner mon anneau mais je n’ai que la moitié qui fonctionne ! C tellement frustrant

          1. Manu

            Bonjour, vous avez le même anneau ? Si il y a plus de LED il faut les déclarer au début du programme.

          2. Sailormars

            Bonjour
            C’est un anneau de 24 led, même réfèrence qu’écrite sur votre blog.
            Merci de m’avoir répondu.
            Je vous souhaite de bonnes fêtes de fin d’année.

Laisser un commentaire