====== Projektas Nr. 3. Spalvota šviesa – RGB šviesos diodas ====== **Ką mes darome:**\\ Pradėję su pirmuoju projektu, džiaugiamės gavę mirksinčią lemputę. Bet tai jau praeita, taip? Tu nori oranžinės, žydros! Mūsų laimei, yra būdas matyti skirtingas šviesas iš vieno LED'o, nekeičiant jo skirtingo atspalvio lemputėmis. Tam mes naudojame RGB LED'ą. RGB LED'as yra sudarytas iš trijų, vienas šalia kito esančių (raudono, mėlyno ir žalio)LED'ų. Kai juos įjungiame, šios šviesos maišosi – taip gauname kitas spalvas. Šviesa, kurią gauni, priklauso nuo tam tikros raudono, žalio ir mėlyno LED'ų intensyvumo. Intensyvumą reguliuojame su Pulse Width Modulation (PWM), kurį jau naudojome prieš tai, LED'o ryškumui ir motoriniam greičiui reguliuoti. **Grandinės dalys:** *CIRC-12 konstravimo plokštė x1 *2 kontaktų kištukas x4 *RGB LED x1 *Laidai x6 *560 Ohm rezistorius (Žalia-Mėlyna-Ruda) x3 **Principinė schema** {{:ardu_pro3.jpg?300|}} **Surinkta grandinė** {{:ardu_pro31.png?600|}} **Kodas** /* RGB_LED_Color_Fade_Cycle.pde RGB LED spalvų ciklas Parašytas SparkFun Arduino Inventor's Kit CIRC-RGB */ // LED laidai prijungti prie PWM kontaktų const int RED_LED_PIN = 9; const int GREEN_LED_PIN = 10; const int BLUE_LED_PIN = 11; // Naudojamas konkretaus LED'o spalvos intensyvumo lygio saugojimui int redIntensity = 0; int greenIntensity = 0; int blueIntensity = 0; // Švietimo laiko tarpas const int DISPLAY_TIME = 100; // milisekundėmis void setup() { // nustatymai nereikalaujami. } void loop() { // Darome spalvų ciklą iš raudonos į žalą // (Šiame cikle mes keičiam 100% raudoną, 0% žalią į 0% raudoną, 100% žalią) for (greenIntensity = 0; greenIntensity <= 255; greenIntensity+=5) { redIntensity = 255-greenIntensity; analogWrite(GREEN_LED_PIN, greenIntensity); analogWrite(RED_LED_PIN, redIntensity); delay(DISPLAY_TIME); } // Darome spalvų ciklą iš žalios į mėlyną // (Šiame cikle mes keičiam 100% žalią, 0% mėlyną į 0% žalią, 100% mėlyną) for (blueIntensity = 0; blueIntensity <= 255; blueIntensity+=5) { greenIntensity = 255-blueIntensity; analogWrite(BLUE_LED_PIN, blueIntensity); analogWrite(GREEN_LED_PIN, greenIntensity); delay(DISPLAY_TIME); } // Darome spalvų ciklą iš mėlynos į raudoną // (Šiame cikle mes keičiam 100% mėlyną, 0% raudoną į 0% mėlyną, 100% raudoną) for (redIntensity = 0; redIntensity <= 255; redIntensity+=5) { blueIntensity = 255-redIntensity; analogWrite(RED_LED_PIN, redIntensity); analogWrite(BLUE_LED_PIN, blueIntensity); delay(DISPLAY_TIME); } } **Problemų sprendimas:** LED'as nešviečia arba šviečia neteisingomis spalvomis: Dėl keturių LED'o kontaktų, kurie yra arti vienas kito, kartais nesunku juos sumaišyti. Pabandykite dar kartą patikrinti, ar visi kontaktai yra savo vietose. Matome raudoną - RGB LED'o raudonas diodas gali būti ryškesnis už kitus du. Norint subalansuoti spalvas galima naudoti didesnės varžos rezistorių arba pakeisti raudonos spalvos vertę kode: analogWrite(RED_LED_PIN, redIntensity); Pakeisime į: analogWrite(RED_LED_PIN, redIntensity/3); **Ieškai daugiau?** Daugiau idėjų rasite apsilankę [[http://www.SparkFun.com|čia]] [[projektas_nr.4|Kitas projektas. Daugiau šviesos diodų]] [[arduivadas_projektai|Atgal į projektus]]