- Vereiste materialen:
- LDR:
- RGB-led:
- Schakelschema:
- Programmering Toelichting:
- Werking van Arduino Color Mixing Lamp:
Wat als we met een enkele RGB-led verschillende kleuren kunnen genereren en de hoek van onze kamer aantrekkelijker kunnen maken? Hier is dus een eenvoudige op Arduino gebaseerde kleurenmenglamp die van kleur kan veranderen als er verandering in het licht in de kamer is. Deze lamp verandert dus automatisch van kleur naargelang de lichtomstandigheden in de kamer.
Elke kleur is de combinatie van rode, groene en blauwe kleur. Dus we kunnen elke kleur genereren door rode, groene en blauwe kleuren te gebruiken. Dus hier zullen we PWM variëren, dwz de intensiteit van het licht op LDR's. Dat zal de intensiteit van de rode, groene en blauwe kleur in RGB LED verder veranderen en er zullen verschillende kleuren worden geproduceerd.
Onderstaande tabel toont de kleurencombinaties met respectieve verandering in bedrijfscycli.
Vereiste materialen:
- 1 x Arduino UNO
- 1 x Breadboard
- 3 x 220 ohm weerstanden
- 3 x 1 kilohm weerstanden
- Doorverbindingsdraden
- 3 x LDR's
- 3 x gekleurde stroken (rood, groen, blauw)
- 1 x RGB-led
LDR:
We zullen fotoresistor (of lichtafhankelijke weerstand, LDR of fotogeleidende cel) hier in dit circuit gebruiken. LDR's zijn gemaakt van halfgeleidermaterialen om hun lichtgevoelige eigenschappen te hebben. Deze LDR's of PHOTO RESISTORS werken volgens het principe van "Photo Conductivity". Wat dit principe nu zegt, is dat wanneer er licht op het oppervlak van de LDR valt (in dit geval) de geleiding van het element toeneemt of met andere woorden, de weerstand van de LDR daalt wanneer het licht op het oppervlak van de LDR valt. Deze eigenschap van de afname van de weerstand voor de LDR wordt bereikt omdat het een eigenschap is van halfgeleidermateriaal dat op het oppervlak wordt gebruikt.
Hier worden drie LDR-sensoren gebruikt om de helderheid van individuele rode, groene en blauwe LED's in RGB Led te regelen. Lees hier meer over het besturen van LDR met Arduino.
RGB-led:
Er zijn twee soorten RGB-leds: de ene is een algemeen kathodetype (gemeenschappelijk negatief) en de andere is een algemeen anodetype (gemeenschappelijk positief). In CC (Common Cathode of Common Negative) zijn er drie positieve aansluitingen die elke aansluiting een kleur vertegenwoordigen en een negatieve aansluiting die alle drie de kleuren vertegenwoordigt.
In ons circuit gaan we het CA-type (Common Anode of Common Positive) gebruiken. Als we in het type Common Anode willen dat de RODE LED AAN is, moeten we de RODE LED-pin aarden en het gemeenschappelijke pluspunt voeden. Hetzelfde geldt voor alle leds. Leer hier om RGB LED te koppelen aan Arduino.
Schakelschema:
Het volledige schakelschema van dit project is hierboven gegeven. De + 5V en massa-aansluiting die in het schakelschema wordt getoond, kan worden verkregen via de 5V- en massa-pin van de Arduino. De Arduino zelf kan worden gevoed vanaf uw laptop of via de DC-aansluiting met behulp van een 12V-adapter of 9V-batterij.
We zullen PWM gebruiken om de helderheid van RGB-led te wijzigen. U kunt hier meer over PWM leren. Hier zijn enkele PWM-voorbeelden met Arduino:
- Variabele voeding door Arduino Uno
- DC-motorbesturing met Arduino
- Op Arduino gebaseerde toongenerator
Programmering Toelichting:
Eerst declareren we alle invoer- en uitvoerpennen zoals hieronder weergegeven.
const byte red_sensor_pin = A0; const byte green_sensor_pin = A1; const byte blue_sensor_pin = A2; const byte green_led_pin = 9; const byte blue_led_pin = 10; const byte red_led_pin = 11;
Declareer beginwaarden van sensoren en leds als 0.
unsigned int red_led_value = 0; unsigned int blue_led_value = 0; unsigned int green_led_value = 0; unsigned int red_sensor_value = 0; unsigned int blue_sensor_value = 0; unsigned int green_sensor_value = 0; void setup () { pinMode (red_led_pin, OUTPUT); pinMode (blue_led_pin, OUTPUT); pinMode (green_led_pin, OUTPUT); Serial.begin (9600); }
In de lussectie nemen we de uitvoer van drie sensoren met analogRead (); functie en opslaan in drie verschillende variabelen.
void loop () { red_sensor_value = analogRead (red_sensor_pin); vertraging (50); blue_sensor_value = analogRead (blue_sensor_pin); vertraging (50); green_sensor_value = analogRead (green_sensor_pin);
Druk deze waarden af op de seriële monitor voor foutopsporing
Serial.println ("Ruwe sensorwaarden:"); Serial.print ("\ t Rood:"); Serial.print (red_sensor_value); Serial.print ("\ t Blauw:"); Serial.print (blue_sensor_value); Serial.print ("\ t Groen:"); Serial.println (green_sensor_value);
We krijgen 0-1023 waarden van de sensoren, maar onze Arduino PWM-pinnen hebben 0-255 waarden als uitvoer. Dus we moeten onze ruwe waarden converteren naar 0-255. Daarvoor moeten we onbewerkte waarden delen door 4 OF we kunnen eenvoudig de mapping-functie van Arduino gebruiken om deze waarden om te zetten.
red_led_value = red_sensor_value / 4; // definieer Rode LED blue_led_value = blue_sensor_value / 4; // definieer Blauwe LED green_led_value = green_sensor_value / 4; // definieer Green Led
Druk toegewezen waarden af naar een seriële monitor
Serial.println ("In kaart gebrachte sensorwaarden:"); Serial.print ("\ t Rood:"); Serial.print (red_led_value); Serial.print ("\ t Blauw:"); Serial.print (blue_led_value); Serial.print ("\ t Groen:"); Serial.println (green_led_value);
Gebruik analogWrite () om de output voor RGB LED in te stellen
analogWrite (red_led_pin, red_led_value); // geef rode LED analogWrite aan (blue_led_pin, blue_led_value); // geef blauwe LED analogWrite aan (green_led_pin, green_led_value); // geef groen aan
Werking van Arduino Color Mixing Lamp:
Omdat we drie LDR's gebruiken, verandert de weerstand wanneer er licht op deze sensoren valt, waardoor de spanningen ook veranderen op analoge pennen van Arduino, die fungeren als ingangspennen voor sensoren.
Wanneer de intensiteit van het licht op deze sensoren verandert, zal de respectievelijke led in RGB gloeien met de hoeveelheid veranderende weerstand en we hebben verschillende kleurenmenging in RGB led met PWM.