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 :
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);
}
Merci de nous suivre et de nous liker :
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,
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
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.
J’ai enfin réussi à faire fonctionner mon anneau mais je n’ai que la moitié qui fonctionne ! C tellement frustrant
Bonjour, vous avez le même anneau ? Si il y a plus de LED il faut les déclarer au début du programme.
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.