User Tools

Site Tools


projektas_nr.3

Čia yra sena dokumento versija!


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 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

Principinė 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 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ę čia

Kitas projektas. Daugiau šviesos diodų

Atgal į projektus

projektas_nr.3.1447683347.txt.gz · Keista: 2015/11/16 16:15 vartotojo simonas