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 :

AssassinsCreedClock-by-MagicManuTélécharger

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);
}

6 Commentaires

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,
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
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.
Sailormars
J’ai enfin réussi à faire fonctionner mon anneau mais je n’ai que la moitié qui fonctionne ! C tellement frustrant
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.
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

Article précédent Article suivant