Vuur Lamp – maken

Wat heb ik nodig en hoe kan ik het maken?

De Lampenkap is geprint met gebruik van de Spiral Outer Contour mode in Cura. De layer hoogte die in hier gebruikt is 0.2mm. De Nozzle is 0.4mm. Vergeet niet de Bottom layers op 0 te zetten. Dit zorgt ervoor dat de kap geen bodem heeft. Met 30mm/s (en maximaal koelventilator aan) het printen +/- 4,5 uur.

De basis is hier geprint in Silver ABS (lijkt meer lichtgrijs…). Deze is normaal geprint. Als je de instellingen 0.2mm layer hight, 2 Wall layers, 4 Top&Botom layers en 20% infill gebruikt kost het 13 gram Filament om te printen. Het duurt dan 2 uur om het te printen (infill speed 38mm/s, Wall speed 25mm/s, Top/Bottom speed 25mm/s, Travel speed 40mm/s en initial layer 20mm/s)

Als beide delen geprint zijn moet het als een puzzel passen

In de basis of bodem zit een Arduino Nano geïnstalleerd. Daarboven zweven 6 NeoPixel LED’s.

Dit alles wordt op zijn plaats gehouden met Hot Glue. NeoPixels van AdaFruit kun je tegenwoordig overal kopen voor weinig geld. Deze kleuren LED’s hebben de LED driver al ingebouwd waardoor je maar heel weinig draden nodig hebt om ze te sturen.

Het sturen van de drivers gaat door middel van “pulse width modulation (PWM). Je kunt het zien als een serie pulsen binnen een bepaalde tijd. De Arduino Nano heeft PWM uitgangen dus dat is ideaal. Ook erg ideaal is dat de Arduino ook de 5 volt kan leveren die de NeoPixels nodig hebben.

Hier zie je hoe de NeoPixels aangesloten worden op de Arduino. 3 draden worden door gelust van de een naar de andere Neopixel. De Arduino krijgt zijn stroom gewoon via de Micro Usb poort.

Als je meer dan 6 NeoPixels wilt gebruiken pas dan wel op! Het kan zijn dat je de spanningsregelaar van de Arduino opblaast.

Je hebt ook nog een Sketch (programma) nodig voor je Arduino. Omdat deze NeoPixels van AdaFruit komen zijn er “Librarys” voor te downloaden op hun website . Die heb ik samen met een voorbeeld Sketch toegevoegd onderaan deze pagina. De Sketch zorgt ervoor dat de NeoPixels langzaam van kleur veranderd.

Wil je meer leren over NeoPixels en je eigen Sketch maken? Ga dan naar: https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-use.

Heb je de Librarys en wil je gewoon de voorbeeld Sketch kopieren? Dat kan hieronder.

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

#define PIN 2

// Parameter 1 = number of pixels in strip
// Parameter 2 = Arduino pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
// NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
// NEO_KHZ400 400 KHz (classic ‘v1’ (not v2) FLORA pixels, WS2811 drivers)
// NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products)
// NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
// NEO_RGBW Pixels are wired for RGBW bitstream (NeoPixel RGBW products)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800);

// IMPORTANT: To reduce NeoPixel burnout risk, add 1000 uF capacitor across
// pixel power leads, add 300 – 500 Ohm resistor on first pixel’s data input
// and minimize distance between Arduino and first pixel. Avoid connecting
// on a live circuit…if you must, connect GND first.

void setup() {
// This is for Trinket 5V 16MHz, you can remove these three lines if you are not using a Trinket
#if defined (__AVR_ATtiny85__)
if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
#endif
// End of trinket special code

strip.begin();
strip.setBrightness(50);
strip.show(); // Initialize all pixels to ‘off’
}

void loop() {

rainbow(80);

}

// Fill the dots one after the other with a color
void colorWipe(uint32_t c, uint8_t wait) {
for(uint16_t i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, c);
strip.show();
delay(wait);
}
}

void rainbow(uint8_t wait) {
uint16_t i, j;

for(j=0; j<256; j++) {
for(i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, Wheel((i+j) & 255));
}
strip.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*5; j++) { // 5 cycles of all colors on wheel
for(i=0; i< strip.numPixels(); i++) {
strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
}
strip.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 < strip.numPixels(); i=i+3) {
strip.setPixelColor(i+q, c); //turn every third pixel on
}
strip.show();

delay(wait);

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

//Theatre-style crawling lights with rainbow effect
void theaterChaseRainbow(uint8_t wait) {
for (int j=0; j < 256; j++) { // cycle all 256 colors in the wheel
for (int q=0; q < 3; q++) {
for (uint16_t i=0; i < strip.numPixels(); i=i+3) {
strip.setPixelColor(i+q, Wheel( (i+j) % 255)); //turn every third pixel on
}
strip.show();

delay(wait);

for (uint16_t i=0; i < strip.numPixels(); i=i+3) {
strip.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 strip.Color(255 – WheelPos * 3, 0, WheelPos * 3);
}
if(WheelPos < 170) {
WheelPos -= 85;
return strip.Color(0, WheelPos * 3, 255 – WheelPos * 3);
}
WheelPos -= 170;
return strip.Color(WheelPos * 3, 255 – WheelPos * 3, 0);
}

Vond je dit leuk? 🙂 Geef dan een “like” bovenaan pagina1! ↑↑↑

Heb je vragen? Of wil je iets zeggen? Dat kan in het Reactieveld onderaan deze pagina!  ↓↓↓

Geef een reactie

Share via
Copy link
Powered by Social Snap