Inhoudsopgave:

RGB LED-pen voor Lightpainting - Ajarnpa
RGB LED-pen voor Lightpainting - Ajarnpa

Video: RGB LED-pen voor Lightpainting - Ajarnpa

Video: RGB LED-pen voor Lightpainting - Ajarnpa
Video: The Small LaserCube 2024, November
Anonim
RGB LED-pen voor lichtschilderen
RGB LED-pen voor lichtschilderen
RGB LED-pen voor lichtschilderen
RGB LED-pen voor lichtschilderen
RGB LED-pen voor lichtschilderen
RGB LED-pen voor lichtschilderen

Dit is een complete bouwinstructie voor een tool voor het schilderen van licht die een RGB LED-controller gebruikt. Ik gebruik deze controller veel in mijn geavanceerde tools en dacht dat een documentaire over hoe deze is gebouwd en geprogrammeerd, sommige mensen kan helpen.

Deze tool is een modulaire RGB-lichtpen bedoeld voor licht schrijven, lichttekenen en het verlichten van graffiti. Het is makkelijk in gebruik omdat je alleen de pen in je hand hebt en je snel van kleur kunt wisselen.

Het hulpmiddel bestaat uit:

  • een hoesje dat 3D geprint is
  • een Arduino Micro
  • een WS2816B-LED
  • twee potentiometers (10K of 100K)
  • twee schakelaars
  • een drukknop
  • en wat kabels.

Een Arduino Micro is hier perfect voor omdat hij extreem klein is en geweldig om RGB-LED's aan te sturen. Je kunt ook nog kleinere microcontrollers gebruiken, zoals een LilyPad of zelfs een ATtiny85, maar ik gebruik de Micro vaak omdat hij gemakkelijk te gebruiken is omdat hij wordt geleverd met een kant-en-klare USB-connector. Zowel de Arduino als de LED worden gevoed met 5V, dus je moet zorgen voor een goede stroomondersteuning. Deze tool is ontworpen om vier oplaadbare AAA-batterijen te gebruiken, omdat ze meestal 1,2 V en gecombineerd 4,8 V hebben, wat voldoende is om zowel de Arduino als de LED van stroom te voorzien. Zorg ervoor dat u geen gewone AAA-batterijen gebruikt, omdat deze 1,5 V hebben en de gecombineerde spanning te hoog kan zijn voor de componenten en deze kan beschadigen. Als u gewone batterijen wilt gebruiken, gebruik er dan slechts drie, de spanning zou nog steeds voldoende moeten zijn. Ik heb nog een mooi 3D-geprint onderdeel van iemand anders gebruikt voor de batterijhouder die hier te vinden is: "Flexing batterijhouders".

Stap 1: Programmeren

Eerst heb je de Arduino IDE nodig om de microcontroller te programmeren die gratis te downloaden en te gebruiken is. Dit klinkt op het eerste gezicht best ingewikkeld, maar is eigenlijk best simpel. Na het installeren van de software krijgt u een eenvoudig teksteditorvenster dat wordt gebruikt om de schets te coderen die naar de Arduino is geüpload. Deze tool maakt ook gebruik van de FastLED-bibliotheek, een geweldige en gebruiksvriendelijke bibliotheek die bijna elke soort RGB-led die u kunt kopen, kan bedienen. Na het downloaden van de bibliotheek moet u deze installeren door de bestanden in de bibliotheekmap te plaatsen die is gemaakt door de Arduino IDE. Dit is meestal te vinden onder „C:\Users\{User Name}\Documents\Arduino\libraries“als u dit niet hebt gewijzigd. Nadat u de bibliotheek in deze map hebt geplaatst, moet u de IDE opnieuw opstarten als deze al actief is. Nu zijn we klaar om de code voor de controller te maken.

Stap 2: De code

Om de FastLED-bibliotheek eerst te gebruiken, moeten we deze in onze code opnemen. Dit wordt boven aan de code gedaan, voor alles met deze regel:

#erbij betrekken

Vervolgens gaan we een paar constanten definiëren. Dit wordt gedaan omdat deze waarden niet veranderen terwijl de code wordt uitgevoerd en ook om deze leesbaarder te houden. Je zou deze waarden rechtstreeks in de code kunnen plaatsen, maar als je dan iets moet veranderen, moet je de hele code doorlopen en elke regel wijzigen waarin de waarde wordt gebruikt. Door gedefinieerde constanten te gebruiken, hoef je deze maar op één plaats te wijzigen en hoeft u de hoofdcode niet aan te raken. Eerst definiëren we de pinnen die door deze controller worden gebruikt:

#define HUE_PIN A0

#define BRIGHT_PIN A1 #define LED_PIN 3 #define LIGHT_PIN 6 #define COLOR_PIN 7 #define RAINBOW_PIN 8

De nummers of namen zijn dezelfde die op de Arduino zijn afgedrukt. Analoge pinnen worden geïdentificeerd door een A voor het nummer, digitale pinnen gebruiken het nummer alleen in code, maar worden soms bedrukt met een leidende D op het bord.

De potentiometer op pin A0 wordt gebruikt om de tint van de kleur te regelen, de potentiometer op pin A1 wordt gebruikt om de helderheid te regelen. Pin D3 wordt gebruikt als een signaal naar de LED, zodat de Arduino gegevens kan verzenden om de kleur te regelen. Pin D6 wordt gebruikt om het licht te schakelen en pin D7 en D8 worden gebruikt om de modus van de controller in te stellen. Ik heb modi in deze controller geïmplementeerd, de ene zet eenvoudig de kleur die wordt gedefinieerd door de kleurpotentiometer op de LED, en de andere zal door alle kleuren vervagen. Vervolgens hebben we nog een paar definities nodig voor de FastLED-bibliotheek:

#define COLOR_ORDER GRB

#define CHIPSET WS2811 #define NUM_LEDS 5

Chipset wordt gebruikt om de bibliotheek te vertellen wat voor soort LED we gebruiken. FastLED ondersteunt bijna alle beschikbare RGB-leds (zoals NeoPixel, APA106, WS2816B, enz.). De LED die ik gebruik wordt verkocht als WS2816B, maar lijkt een beetje anders te zijn, dus het werkt het beste met de WS2811-chipset. De volgorde van bytes die naar de LED worden gestuurd om de kleur in te stellen, kan ook verschillen tussen fabrikanten, dus we hebben ook een definitie voor de bytevolgorde. De definitie hier vertelt de bibliotheek alleen om de kleur in de volgorde groen, rood, blauw te verzenden. De laatste definitie is voor het aantal LED's dat is aangesloten. Je kunt altijd minder LED's gebruiken dan je in code definieert, dus ik heb het aantal op 5 gezet omdat ik met deze tool geen pennen met meer dan 5 LED's zal ontwerpen. Je zou het aantal veel hoger kunnen zetten, maar vanwege de prestaties houd ik het zo klein als ik het nodig heb.

Voor de hoofdcode hebben we ook een paar variabelen nodig:

int helderheid = 255;

unsigned int pot_Reading1 = 0; unsigned int pot_Reading1 = 0; unsigned long lastTick = 0; unsigned int wheel_Speed = 10;

Deze variabelen worden gebruikt voor helderheid, metingen van de potentiometers, onthouden wanneer de code voor het laatst is uitgevoerd en hoe snel de kleur zal vervagen.

Vervolgens definiëren we een array voor de LED's, wat een gemakkelijke manier is om de kleur in te stellen. Het gedefinieerde aantal LED's wordt gebruikt om de grootte van de array hier in te stellen:

CRGB-leds [NUM_LEDS];

Nadat we voor definities hebben gezorgd, kunnen we nu de setup-functie schrijven. Dit is vrij kort voor dit programma:

ongeldige setup() {

FastLED.addLeds(leds, NUM_LEDS).setCorrection(TypicalLEDStrip); pinMode (LIGHT_PIN, INPUT_PULLUP); pinMode (COLOR_PIN, INPUT_PULLUP); pinMode (RAINBOW_PIN, INPUT_PULLUP); }

De eerste regel initialiseert de FastLED-bibliotheek met behulp van de definities die we eerder hebben ingesteld. De laatste drie regels vertellen de Arduino dat deze pinnen worden gebruikt als invoer en dat als ze nergens op zijn aangesloten, hun spanning op hoog moet worden ingesteld (PULLUP). Dit betekent dat we deze pinnen met GND moeten verbinden om iets te activeren.

Nu kunnen we het hoofdprogramma verzorgen. Dit gebeurt in de loop-functie. Eerst stellen we enkele variabelen in en lezen we de potentiometers uit:

lege lus() {

statisch uint8_t tint = 0; statisch uint8_t wheel_Hue = 0; pot_Reading1 = analoogRead (HUE_PIN); tint = kaart (pot_Reading1, 0, 1023, 0, 255); pot_Reading2 = analoogRead (BRIGHT_PIN); helderheid = kaart (pot_Reading2, 0, 1023, 0, 255);

De eerste twee regels stellen variabelen in die later voor de kleur worden gebruikt. De twee volgende blokken zorgen voor het aflezen van de potentiometerwaarden. Omdat je een waarde tussen 0 en 1023 krijgt als je een pin uitleest met "analogRead", maar de tint en helderheid een waarde tussen 0 en 255 nodig hebben, gebruiken we de "map" -functie om de uitlezing van het ene waardegebied naar het andere te vertalen. De eerste parameter van deze functie is de waarde die u wilt vertalen, de laatste vier zijn het minimum en maximum van de regio's die u voor vertaling wilt gebruiken.

Vervolgens gaan we de drukknop evalueren:

if (digitalRead (LIGHT_PIN) == LAAG) {

We controleren de waarde tegen LAAG omdat we de pin als hoog hebben gedefinieerd als deze niet wordt geactiveerd. Dus als de drukknop wordt ingedrukt, wordt de pin verbonden met GND en zou deze laag zijn. Als de pinnen niet worden ingedrukt, is er niet veel te doen.

Laten we er eerst voor zorgen dat de LED alleen in één kleur wordt verlicht:

if (digitalRead (COLOR_PIN) == LAAG) {

if (tint < 2) { FastLED.showColor (CRGB::Wit); FastLED.setHelderheid (helderheid); } else { FastLED.showColor (CHSV (tint, 255, helderheid)); FastLED.setHelderheid (helderheid); } vertraging(10);

We moeten de kleurpin evalueren om te weten dat we deze modus willen gebruiken. Dan kunnen we kijken welke kleur nodig is. Omdat hier het HSV-kleurmodel wordt gebruikt, hebben we alleen de tint nodig om een kleur te definiëren. Maar dit creëert ook het probleem dat we geen manier hebben om de kleur op wit in te stellen. Omdat hue 0 en hue 255 beide naar rood worden vertaald, gebruik ik hier een klein trucje en controleer of de waarde van de hue-potentiometer kleiner is dan 2. Dit betekent dat de potentiometer helemaal naar één kant is gedraaid en we dit kunnen gebruiken om wit in te stellen. We hebben nog steeds rood aan de andere kant, dus we zullen hier niets verliezen.

Dus ofwel stellen we de kleur in op wit en vervolgens op de helderheid, of we stellen de kleur in op basis van de tintmeting en ook de helderheid.

Daarna heb ik een kleine vertraging toegevoegd omdat het veel beter is om de controller een beetje downtime te geven om stroom te besparen en een vertraging van 10 milliseconden zal niet worden gevoeld.

Vervolgens coderen we de kleurvervaging:

anders if (digitalRead (RAINBOW_PIN) == LAAG) {

wheel_Speed = kaart (pot_Reading1, 0, 1023, 2, 30); if (lastTick + wheel_Speed 255) { wheel_Hue = 0; } lastTick = millis(); } FastLED.showColor (CHSV (wheel_Hue, 255, helderheid)); }

Eerst wordt de pin aangevinkt om van deze modus te wisselen. Omdat ik geen derde potentiometer wilde toevoegen om de snelheid van de fade te regelen en omdat de tintpotentiometer in deze modus niet wordt gebruikt, kunnen we die potentiometer gebruiken om de snelheid in te stellen. Door opnieuw de kaartfunctie te gebruiken, kunnen we de uitlezing vertalen naar een vertraging die wordt vertaald in de snelheid van de vervaging. Ik heb een waarde tussen 2 en 30 gebruikt voor de vertraging omdat dit uit ervaring een goede snelheid is. De functie "millis" retourneert de milliseconden sinds de Arduino werd ingeschakeld, dus we kunnen dit gebruiken om de tijd te meten. De laatste verandering van tint wordt opgeslagen in een variabele die we eerder hebben gedefinieerd en deze wordt elke keer vergeleken om te zien of we de tint opnieuw moeten veranderen. De laatste regel stelt alleen de kleur in die vervolgens moet worden weergegeven.

Om de code af te maken:

} anders {

FastLED.showColor (CRGB::Zwart); } }

We hoeven alleen de LED uit te schakelen als de knop niet wordt ingedrukt door de kleur in te stellen op zwart en eventuele open haakjes te sluiten.

Zoals je kunt zien, is dit een vrij korte en gemakkelijke code die kan worden gebruikt voor veel tools die RGB-LED's gebruiken.

Zodra je de volledige code hebt, kun je deze uploaden naar de Arduino. Sluit hiervoor de Arduino aan op je pc met een USB-kabel en selecteer het Arduino-type in de IDE.

In deze handleiding gebruik ik de Arduino Pro Micro. Na het instellen van het Arduino-model moet je de poort selecteren waar de IDE het kan vinden. Open het poortmenu en je zou je aangesloten Arduino moeten zien.

Nu hoef je alleen nog maar de code naar de Arduino te uploaden door op de tweede ronde knop bovenaan het venster te drukken. De IDE zal de code bouwen en uploaden. Nadat dit is gelukt, kunt u de Arduino loskoppelen en doorgaan met het monteren van de controller.

Stap 3: Montage van de elektronica voor de controller

Omdat we de Arduino hebben gecodeerd, kunnen we nu de hardware van de controller in elkaar zetten. We beginnen met het plaatsen van de componenten in de behuizing. De potmeters gaan in de twee ronde gaten aan de linkerkant, de schakelaar voor de voeding zit onderaan, de schakelaar voor de modus zit rechtsboven en de Arduino gaat in de houder in het midden.

Stap 4:

Afbeelding
Afbeelding

Begin met het solderen van een rode kabel van de aan / uit-schakelaar naar de RAW-pin van de Arduino. Deze pin is de go-to-pin voor voeding, omdat deze is aangesloten op een spanningsregelaar, dus zelfs als de spanning hoger is dan 5V, kan deze pin worden gebruikt om de Arduino van stroom te voorzien. Soldeer vervolgens nog een rode draad aan de VCC-pin, omdat we de hoogspanning voor de potentiometer nodig hebben. Soldeer twee witte draden aan de A0- en A1-pinnen die moeten worden gebruikt voor de potentiometermetingen.

Stap 5:

Afbeelding
Afbeelding

Steek nu een lange witte en een lange groene draad door de opening aan de bovenkant die later worden gebruikt om de LED aan te sluiten. Soldeer de groene op pin 3 en de witte op pin 6 en druk ze plat op de Arduino. Soldeer twee zwarte draden aan de GND-pinnen aan de linkerkant van de Arduino, deze worden gebruikt voor de lage spanning voor de potentiometers. Soldeer twee blauwe draden aan pin 7 en pin 8 om te gebruiken voor de modusschakelaar.

Stap 6:

Afbeelding
Afbeelding
Afbeelding
Afbeelding

De rode kabel die we op de VCC-pin hebben gesoldeerd, moet nu worden gesoldeerd aan een van de buitenste pinnen van de eerste potentiometer. Gebruik een andere rode kabel om deze door te trekken naar de tweede potentiometer. Zorg ervoor dat u aan beide potentiometers dezelfde kant gebruikt, zodat de volle kant aan beide potentiometers dezelfde kant is. Soldeer de twee zwarte kabels aan de andere kant van de potentiometers en de witte kabels van pinnen A0 en A1 op de middelste pin. Potentiometers werken door de spanning op de middelste pin in te stellen op een spanning tussen de spanningen op de buitenste pinnen, dus als we hoge en lage spanning aansluiten, kunnen we een spanning tussen de middelste pin krijgen. Dit voltooide de bedrading voor de potentiometers en ze kunnen een beetje worden gedraaid zodat de pinnen uit de weg zitten.

Stap 7:

Afbeelding
Afbeelding

Soldeer een zwarte kabel aan de middelste pin van de modusschakelaar en steek een lange zwarte kabel door de opening die naar de voeding leidt. Steek nog een lange zwarte kabel door de bovenste opening om als GND voor de LED te gebruiken.

Stap 8:

Afbeelding
Afbeelding

De zwarte kabel die uit de voeding komt, is gesoldeerd aan een andere zwarte draad die is aangesloten op de laatste vrije GND-pin van de Arduino. Soldeer de draad die naar de LED leidt en de zwarte draad op de modusschakelaar aan elkaar en soldeer tenslotte de twee paar zwarte draden die je nu hebt aan elkaar. Gebruik een krimpkous om het soldeer te isoleren om kortsluiting in de controller te voorkomen.

Stap 9:

Afbeelding
Afbeelding

Als laatste stap kunnen we nu de twee blauwe draden aan de modusschakelaar solderen. Deze schakelaars werken door de middelste pin te verbinden met een van de buitenste pinnen, afhankelijk van aan welke kant de schakelaar zich bevindt. Omdat pin 7 en 8 zijn ingesteld om te worden geactiveerd wanneer ze zijn aangesloten op GND, kunnen we de buitenste pinnen van de schakelaar gebruiken voor de pinnen en de middelste voor GND. Op deze manier wordt altijd een van de pinnen getriggerd.

Steek tot slot een rode draad door de stroomopening en soldeer deze op de middelste pin van de stroomschakelaar en steek nog een lange rode draad door de opening naar de LED en soldeer deze aan dezelfde pin op de stroomschakelaar waarop de Arduino is aangesloten.

Stap 10:

Afbeelding
Afbeelding

Soldeer de stroomkabels aan de batterijhouder en schroef de clip vast die de kabels naar de LED vasthoudt. Hiermee is de bedrading voor de controller voltooid.

Stap 11: Montage van de lichtpen

Aangezien deze tool modulair bedoeld is en verschillende pennen gebruikt, hebben we een connector op de draden voor de LED nodig. Ik gebruikte een goedkope 4-polige molex-connector die meestal te vinden is op kabels die worden gebruikt voor ventilatoren in een computer. Deze kabels zijn goedkoop en gemakkelijk te verkrijgen, dus ze zijn perfect.

Stap 12:

Afbeelding
Afbeelding
Afbeelding
Afbeelding

Toen ik begon met het bedraden van de controller, heb ik de kleuren van de kabels op de connectoren niet gecontroleerd, dus ze zijn een beetje anders, maar gemakkelijk te onthouden. Ik heb de zwarte draden aangesloten, stroom op geel, groen op groen en wit op blauw, maar je kunt elke gewenste combinatie gebruiken, onthoud het ook voor de andere pennen. Zorg ervoor dat u de gesoldeerde gebieden isoleert met een krimpkous om kortsluiting te voorkomen.

Stap 13:

Afbeelding
Afbeelding
Afbeelding
Afbeelding

Steek een lange rode en een lange groene draad door de pen en soldeer zwarte draden aan de ene kant van de drukknop en witte draad aan de andere kant. Dit soort drukknoppen hebben vier pinnen waarvan er twee paarsgewijs zijn verbonden. Je kunt zien welke pinnen verbonden zijn door naar de onderkant van de knop te kijken, er is een opening tussen de paren die verbonden zijn. Als je op de knop drukt, zijn de twee zijden met elkaar verbonden. De witte en een zwarte kabel worden vervolgens doorgetrokken naar het uiteinde van de pen, beginnend bij de opening voor de knop. De andere zwarte kabel wordt naar voren getrokken. Zorg voor voldoende kabel aan beide kanten om mee te werken.

Stap 14:

Afbeelding
Afbeelding
Afbeelding
Afbeelding

Druk de knop in de opening en bereid de rest van de kabels voor. Het is het beste om de kabels aan de LED te solderen, zodat ze naar het midden van de LED zijn gericht, omdat de kabels door het midden van de pen lopen. Soldeer de rode draad aan het 5V-soldeerpad, de zwarte draad aan het GND-soldeerpad en de groene draad aan het Din-soldeerpad. Als je meer dan één LED hebt, wordt het Dout-soldeerpad van de eerste LED verbonden met de Din van de volgende LED enzovoort.

Stap 15:

Afbeelding
Afbeelding
Afbeelding
Afbeelding

Druk nu op de knop aan de voorkant van de pen en doe er een druppel lijm achter om hem op zijn plaats te houden.

Nu hoef je alleen maar de draden aan het uiteinde van de pen aan de andere kant van de connector te solderen, rekening houdend met de kleuren.

Het is het beste om een druppel lijm en wat tape te gebruiken om de kabels aan het uiteinde van de pen los te maken om te voorkomen dat ze breken. Hiermee is de montage van de lichtpen voltooid.

Stap 16: Voorbeelden

Voorbeelden
Voorbeelden
Voorbeelden
Voorbeelden
Voorbeelden
Voorbeelden
Voorbeelden
Voorbeelden

Tot slot wil ik je een paar voorbeelden laten zien waar ik deze tool heb gebruikt. De schuine pen is geweldig om de lijnen van een graffiti te verlichten en de rechte pen is geweldig om dingen in de lucht te tekenen en te schrijven (waar ik maar weinig talent voor heb).

Dit is het hoofddoel van deze tool. Zoals je kunt zien, zijn de mogelijkheden geweldig als je lange belichtingen combineert met deze tool.

Probeer om met dit soort fotografie te beginnen de laagste ISO-instelling te gebruiken die uw camera ondersteunt en een groot diafragma. Een goede manier om de juiste instellingen te vinden, is door je camera in de diafragmamodus te zetten en het diafragma te sluiten totdat je camera een belichtingstijd aangeeft die ongeveer de tijd is die je nodig hebt om te tekenen wat je aan de foto wilt toevoegen. Schakel vervolgens over naar handmatig en gebruik die belichtingstijd of gebruik de bulb-modus.

Veel plezier met het uitproberen van deze! Het is een geweldige kunstvorm.

Ik heb deze instructie toegevoegd aan de challenge voor uitvinders en ongebruikelijk gebruik, dus als je het leuk vindt, laat dan een stem achter;)

Stap 17: De bestanden

Ik heb ook modellen toegevoegd voor riemhouders die bedoeld zijn om aan de onderkant van de controllerbehuizing te worden geplakt, zodat je hem aan je arm kunt vastmaken en een clip voor de pen die aan het deksel kan worden geplakt voor als je de pen niet nodig hebt in je hand.

Er zijn ook diffusorkappen die kunnen worden gebruikt om het licht vloeiender te maken en overstraling te voorkomen wanneer de pen rechtstreeks in de camera wijst.

Aanbevolen: