Inhoudsopgave:
- Stap 1: Onderdelen en componenten
- Stap 2: Plan uw voortgang
- Stap 3: Potentiometers gebruiken?
- Stap 4: Bedradingsschema voor (3x) Potentiometer
- Stap 5: AnalogRead() en variabelen gebruiken
- Stap 6: De seriële monitor gebruiken met 1 knop
- Stap 7: De RGB-LED gebruiken
- Stap 8: Potentiometers gebruiken om RGB LED te besturen (met één bug)
- Stap 9: BONUS: Map()-functie en schonere code
Video: Kleurenmixer met Arduino - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:19
Door tliguori330Volg meer van de auteur:
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
Arduino Uno
Potentiometer (x3)
RGB-LED
220 ohm weerstand (x3)
Doorverbindingsdraden (x12)
Broodplank
Stap 2: Plan uw 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?
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
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
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 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)
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:
Digitale klok met netwerktijd met behulp van de ESP8266: 4 stappen (met afbeeldingen)
Digitale netwerkklok met de ESP8266: we leren hoe we een schattige kleine digitale klok kunnen bouwen die communiceert met NTP-servers en de netwerk- of internettijd weergeeft. We gebruiken de WeMos D1 mini om verbinding te maken met een wifi-netwerk, de NTP-tijd te verkrijgen en deze weer te geven op een OLED-module. De video hierboven
DIY slimme weegschaal met wekker (met wifi, ESP8266, Arduino IDE en Adafruit.io): 10 stappen (met afbeeldingen)
DIY Slimme Weegschaal Met Wekker (met Wi-Fi, ESP8266, Arduino IDE en Adafruit.io): In mijn vorige project ontwikkelde ik een slimme weegschaal met Wi-Fi. Het kan het gewicht van de gebruiker meten, het lokaal weergeven en naar de cloud sturen. U kunt hier meer informatie over krijgen op onderstaande link: https://www.instructables.com/id/Wi-Fi-Smart-Scale-wi
Pratende Arduino - Een MP3 afspelen met Arduino zonder enige module - Mp3-bestand afspelen vanaf Arduino met PCM: 6 stappen
Pratende Arduino | Een MP3 afspelen met Arduino zonder enige module | Mp3-bestand van Arduino afspelen met PCM: in deze instructie leren we hoe we een mp3-bestand met arduino kunnen spelen zonder een audiomodule te gebruiken, hier gaan we de PCM-bibliotheek voor Arduino gebruiken die 16 bit PCM van 8 kHz-frequentie speelt, dus laten we dit doen
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino - Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter - RC Helikopter - RC-vliegtuig met Arduino: 5 stappen (met afbeeldingen)
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino | Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter | RC Helikopter | Rc-vliegtuig met Arduino: een Rc-auto besturen | Quadcopter | Drone | RC vliegtuig | RC-boot, we hebben altijd een ontvanger en zender nodig, stel dat we voor RC QUADCOPTER een 6-kanaals zender en ontvanger nodig hebben en dat type TX en RX is te duur, dus we gaan er een maken op onze
Start uw diavoorstelling met vakantiefoto's met een vleugje magie! 9 stappen (met afbeeldingen)
Lanceer uw diavoorstelling met vakantiefoto's met een vleugje magie!: In de loop der jaren heb ik de gewoonte ontwikkeld om een klein beeldje mee te nemen op reis: ik koop vaak een kleine, lege artoy (zoals die op de foto) en verf het past bij de vlag en het thema van het land dat ik bezoek (in dit geval Sicilië). T