Čia yra sena dokumento versija!
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 LEDo, nekeičiant jo skirtingo atspalvio lemputėmis. Tam mes naudojame RGB LEDą. RGB LED nėra atskiras LEDas, iš tikrųjų tai trys, vienas šalia kito esantys LEDai: vienas raudonas, vienas žalias ir vienas mėlynas. 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 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
Grandinės schema
Surinkta grandinė
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 LEDo 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 nešvieia arba šviečia neteisingomis spalvomis: Dėl keturių LEDo kontaktų, kurie yra arti vienas kito, kartais nesunku juos sumaišyti. Pabandykite dar kartą patikrinti, ar visi kontaktai savo vietose.
Matome raudoną - RGB LEDo 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ę čia