Inhoudsopgave:

Kleurenmixer met Arduino - Ajarnpa
Kleurenmixer met Arduino - Ajarnpa

Video: Kleurenmixer met Arduino - Ajarnpa

Video: Kleurenmixer met Arduino - Ajarnpa
Video: Arduino Color Mixing Lamp using RGB LED and LDR 2024, Juli-
Anonim
Image
Image

Door tliguori330Volg meer van de auteur:

Kleurenbol met Arduino
Kleurenbol met Arduino
Doodle Bot met ontwerpproces
Doodle Bot met ontwerpproces
Doodle Bot met ontwerpproces
Doodle Bot met ontwerpproces
Arduino Touch-piano
Arduino Touch-piano
Arduino Touch-piano
Arduino Touch-piano

Over: Altijd leren….. Meer over tliguori330 »

Een kleurenmixer is een geweldig project voor iedereen die met Arduino werkt en groeit. Aan het einde van deze instructable kun je bijna elke denkbare kleur mixen en matchen door aan 3 knoppen te draaien. Het vaardigheidsniveau is laag genoeg dat zelfs een complete rookie het met succes kan voltooien, maar ook interessant genoeg om leuk te zijn voor een ervaren dierenarts. De kosten van dit project zijn bijna niets en de meeste Arduino-kits worden geleverd met de benodigde materialen. De kern van deze code zijn enkele fundamentele arduino-functies die iedereen die arduino gebruikt, wil begrijpen. We zullen dieper ingaan op de functies analogRead() en analogWrite() zoals we als een andere gebruikelijke functie map() noemen. Deze links brengen u naar de arduino-referentiepagina's voor deze functies.

Stap 1: Onderdelen en componenten

Onderdelen en componenten
Onderdelen en componenten
Onderdelen en componenten
Onderdelen en componenten
Onderdelen en componenten
Onderdelen en componenten
Onderdelen en componenten
Onderdelen en componenten

Arduino Uno

Potentiometer (x3)

RGB-LED

220 ohm weerstand (x3)

Doorverbindingsdraden (x12)

Broodplank

Stap 2: Plan uw voortgang

Plan je voortgang
Plan je voortgang

Het kan erg handig zijn om te plannen hoe u uw project gaat voltooien. Bij coderen draait alles om de logische voortgang van de ene stap naar de volgende. Ik heb een stroomschema gemaakt dat schetst hoe ik wil dat mijn schets wordt uitgevoerd. Het algemene doel is om 3 knoppen (potentiometers) te hebben die elk van de drie kleuren van een RGB-led regelen. Om dit te bereiken, moeten we een schets maken die overeenkomt met het stroomschema. We zullen willen….

1) Lees 3 verschillende potentiometers af en sla hun waarden op in variabelen.

2) We zullen die waarden converteren zodat ze overeenkomen met het bereik van de RGB-led.

3) Ten slotte zullen we die geconverteerde waarden naar elk van de kleuren van de RGB schrijven.

Stap 3: Potentiometers gebruiken?

Potentiometers gebruiken
Potentiometers gebruiken
Potentiometers gebruiken
Potentiometers gebruiken

Een van de meest elementaire componenten in een elektronicakit, de potentiometer kan in veel verschillende projecten worden gebruikt. potentiometers werken doordat de gebruiker de weerstand van het circuit fysiek kan veranderen. Het meest boerenvoorbeeld van een potentiometer is een lichtdimmer. schuiven of draaien van een knop verandert de lengte van het circuit. een langer pad resulteert in meer weerstand. De verhoogde weerstand verlaagt omgekeerd de stroom en het licht wordt gedimd. Deze kunnen in alle verschillende vormen en maten komen, maar de meeste hebben dezelfde basisopstelling. Een student vroeg om hulp bij het repareren van zijn gitaar en we kwamen erachter dat de knoppen erop precies hetzelfde waren als potentiometers. Over het algemeen was je de buitenpoten verbonden met 5 volt en aarde en gaat het middelste been naar een analoge pin zoals A0

Stap 4: Bedradingsschema voor (3x) Potentiometer

Bedradingsschema voor (3x) Potentiometer
Bedradingsschema voor (3x) Potentiometer
Bedradingsschema voor (3x) Potentiometer
Bedradingsschema voor (3x) Potentiometer
Bedradingsschema voor (3x) Potentiometer
Bedradingsschema voor (3x) Potentiometer

Het meest linkse been wordt verbonden met 5v en het meest rechtse been wordt verbonden met GND. Je kunt deze twee stappen eigenlijk omdraaien en het zal het project niet veel schaden. Het enige dat zou veranderen, is door de knop helemaal naar links te draaien, de volledige helderheid in plaats van helemaal uit. Het middelste been wordt verbonden met een van de analoge pinnen op de Arduino. Omdat we drie knoppen zullen hebben, willen we het werk dat we net hebben gedaan verdrievoudigen. Elke knop heeft 5v en GND nodig, zodat deze kunnen worden gedeeld met behulp van een breadboard. De rode strip op het breadboard is aangesloten op 5 Volt en de blauwe strip is aangesloten op massa. Elke knop heeft zijn eigen analoge pin nodig, zodat ze zijn aangesloten op A0, A1, A2.

Stap 5: AnalogRead() en variabelen gebruiken

Met uw potentiometer correct ingesteld zijn we klaar om die waarden uit te lezen. Wanneer we dit willen doen, gebruiken we de functie analogRead(). De juiste syntaxis is analogRead(pin#); dus om onze middelste potentiometer te lezen, zouden we analogRead (A1); Om te kunnen werken met de nummers die van de knop naar de Arduino worden gestuurd, willen we die nummers ook in een variabele opslaan. De regel code zal deze taak volbrengen als we de potentiometer lezen en het huidige nummer opslaan in de integer-variabele "val"

int val = analoog lezen (A0);

Stap 6: De seriële monitor gebruiken met 1 knop

Image
Image

Momenteel zijn we in staat om waarden uit de knoppen te halen en ze op te slaan in een variabele, maar het zou handig zijn als we deze waarden konden zien. Hiervoor moeten we gebruik maken van de ingebouwde seriële monitor. De onderstaande code is de eerste schets die we daadwerkelijk in de Arduino IDE zullen uitvoeren die op hun site kan worden gedownload. In de void setup() zullen we de analoge pinnen die op elke middelste poot zijn aangesloten activeren als een INPUT en de seriële monitor activeren met behulp van Serial.begin (9600); vervolgens lezen we slechts één van de knoppen en slaan deze op in een variabele zoals eerder. De verandering is nu dat we een regel hebben toegevoegd die afdrukt welk nummer in de variabele is opgeslagen. Als u de schets compileert en uitvoert, kunt u uw seriële monitor openen en cijfers op het scherm zien scrollen. Elke keer dat de code wordt herhaald, lezen en printen we een ander nummer. Als u aan de knop draait die op A0 is aangesloten, ziet u waarden tussen 0-1023. later zal het doel zijn om alle 3 potntiometers uit te lezen waarvoor nog 2 analoge uitlezingen en 2 verschillende variabelen nodig zijn om op te slaan en af te drukken.

ongeldige setup(){

pinMode (A0, INGANG); pinMode (A1, INGANG); pinMode (A2, INGANG); Serieel.begin(9600); } void loop(){ int val = analogRead(A0); Serial.println(val); }

Stap 7: De RGB-LED gebruiken

De RGB-LED gebruiken
De RGB-LED gebruiken
De RGB-LED gebruiken
De RGB-LED gebruiken
De RGB-LED gebruiken
De RGB-LED gebruiken

De 4 Legged RGB LED is een van mijn favoriete componenten voor Arduino. Ik vind de manier waarop het in staat is om eindeloze kleuren te creëren uit mengsels van 3 basiskleuren fascinerend. De opstelling is vergelijkbaar met elke gewone LED, maar hier hebben we in feite rode, blauwe en groene LED's gecombineerd. De korte benen worden elk bestuurd door een van de PWM-pinnen op de Arduino. Het langste been wordt aangesloten op 5 volt of aarde, afhankelijk van of het jouwe is in een gemeenschappelijke anode of een gemeenschappelijke kathode LED. U moet beide manieren uitproberen om dit probleem op te lossen. We hebben al 5v en GND aangesloten op het breadboard, dit moet eenvoudig te veranderen zijn. Het bovenstaande diagram toont ook het gebruik van 3 weerstanden. Ik sla deze stap eigenlijk vaak over omdat ik nog geen LED heb gehad.

Om kleuren te maken, gebruiken we de functie analogWrite() om te bepalen hoeveel rood, blauw of groen moet worden toegevoegd. Om deze functie te gebruiken, moet je zeggen met welke pin# we zullen praten en een getal tussen 0-255. 0 is helemaal uit en 255 is het hoogste aantal van één kleur. Laten we het rode been verbinden met pin 9, groen met pin 10 en blauw met pin 11. Dit kan wat vallen en opstaan kosten om erachter te komen welk been welke kleur heeft. Als ik een paarse tint wilde maken, zou ik veel rood kunnen doen, geen groen en misschien een halve sterkte van blauw. Ik moedig je aan om aan deze cijfers te sleutelen, het is echt spannend. Enkele veelvoorkomende voorbeelden staan in de bovenstaande afbeeldingen:

ongeldige setup(){

pinMode(9, UITGANG); pinMode (10, UITGANG); pinMode (11, UITGANG); } void loop(){ analogWrite(9, 255); analoogWrite(10, 0); analoogWrite(11, 125) }

Stap 8: Potentiometers gebruiken om RGB LED te besturen (met één bug)

Potentiometers gebruiken om RGB LED te besturen (met één bug)
Potentiometers gebruiken om RGB LED te besturen (met één bug)
Potentiometers gebruiken om RGB LED te besturen (met één bug)
Potentiometers gebruiken om RGB LED te besturen (met één bug)
Potentiometers gebruiken om RGB LED te besturen (met één bug)
Potentiometers gebruiken om RGB LED te besturen (met één bug)

Het is tijd om onze twee codes samen te smelten. Je zou net genoeg ruimte op een standaard breadboard moeten hebben om op alle 3 de knoppen en de RGB-led te passen. Het idee is dat we in plaats van de waarden voor rood, blauw en groen in te typen, de waarden die van elke poteniometer zijn opgeslagen, gebruiken om de kleuren constant te veranderen. we hebben in dit geval 3 variabelen nodig. de redval, greenval, blueval zijn allemaal verschillende variabelen. Houd er rekening mee dat u deze variabelen een naam kunt geven die u maar wilt. als u aan de "groene" knop draait en het rode bedrag verandert, kunt u de namen veranderen zodat ze correct overeenkomen. je kunt nu aan elke knop draaien en de kleuren regelen!!

ongeldige setup(){

pinMode (A0, INGANG); pinMode (A1, INGANG); pinMode (A2, INGANG); pinMode(9, UITGANG); pinMode (10, UITGANG); pinMode (11, UITGANG); } void setup(){ int redVal = analogRead(A0); int greenVal = analoog lezen (A1); int blueVal = analoog lezen (A2); analogWrite(9, redVal); analogWrite(10, groeneVal); analogWrite(11, blueVal); }

Stap 9: BONUS: Map()-functie en schonere code

Je merkt misschien dat als je de knop een kleur omhoog draait, deze zal groeien en dan plotseling naar beneden valt. Dit patroon van groeien en dan snel afsluiten herhaalt zich 4 keer als je de knop helemaal omhoog draait. Als je je herinnert, zeiden we dat de potentiometers waarden tussen 0 en 1023 kunnen lezen. De functie analogWrite() accepteert alleen waarden tussen 0 en 255. zodra de potentiometer over 255 gaat, begint hij in feite opnieuw bij 0. Er is een leuke functie om te helpen bij de bug genaamd map(). u kunt in één stap een reeks getallen omzetten in een andere reeks getallen. we zullen getallen van 0-1023 converteren naar getallen van 0-255. Als de knop bijvoorbeeld halverwege was ingesteld, zou deze ongeveer 512 moeten zijn. dat aantal zou worden gewijzigd in 126, wat de halve sterkte is voor de LED. In deze laatste schets heb ik de pinnen voor mijn gemak een naam gegeven met variabele namen. Je hebt nu een voltooide kleurenmixer om mee te experimenteren!!!

// variabele namen voor potentiometer pinnen

int redPot = A0; int greenPot = A1; int bluePot = A2 // namen van variabelen voor RGB-pinnen int redLED = 9; int groene LED = 10; int blauwe LED = 11; void setup(){ pinMode(redPot, INPUT); pinMode (groenPOT, INPUT); pinMode (bluePot, INPUT); pinMode (rode LED, UITGANG); pinMode (groene LED, UITGANG); pinMode (blauwe LED, UITGANG); Serieel, begin (9600); } void loop () {// lees en bewaar waarden van potentiometers int redVal = analogRead (redPot); int greenVal = analogRead (greenPot); int blueVal - analogRead (bluePot); //converteer de waarden van 0-1023 naar 0-255 voor de RGB LED redVal = map (redVal, 0, 1023, 0, 255); greenVal = kaart (greenVal, 0, 1023, 0, 255); blueVal = kaart (blueVal, 0, 1023, 0, 255); // schrijf deze geconverteerde waarden naar elke kleur van de RGB LED analogWrite (redLED, redVal); anaogWrite(groeneLED, groeneVal); analoogWrite(blueLED, blueVal); // toon de waarden op de seriële monitor Serial.print ("red:"); Serial.print(redVal); Serial.print("groen:"); Serial.print(greenVal); Serial.print("blauw:"); Serial.println(blueVal); }

Aanbevolen: