User Tools

Site Tools


projektas_nr.3

Čia yra sena dokumento versija!



Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/admin/domains/robotikosmokykla.lt/public_html/wiki/inc/parser/handler.php on line 1552

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 Pin Header x4
RGB LED x1
Laidai x6
560 Ohm rezistorius (Žalia-Mėlyna-Ruda) x3

Grandinės schema:

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 kaiščių
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

Kitas projektas. Daugiau šviesos diodų

Atgal į projektus

projektas_nr.3.1445793386.txt.gz · Keista: 2015/10/25 19:16 vartotojo 193.219.47.27