ShiftPWM

Page

Stránky / Súčiastky ku Arduinu / 74HC595 Posuvný register /

ShiftPWM je knižnica, ktorý využíva reťazenie obvodov 74HC595 na ovládanie väčšieho množstva LED. Primárne je určená na ovládanie RGB LED, ale nie je problém ju používať ani s jednofarebnými LED. Knižnica sa nachádza na stránke http://www.elcojacobs.com/shiftpwm/.

Inštalácia

Postupujte takto:

  • Stiahnite si ZIP zo stránky https://github.com/elcojacobs/ShiftPWM/archive/master.zip.
  • Rozbaľte ho do adresára arduino-1.0.5\libraries (alebo do adresára, kde máte svoje arduino a tam do adresára libraries, v ktorom sa nachádzajú všetky knižnice).
  • Keďže sa tam vytvorí adresár ShiftPWM-master, premenujte ho na ShiftPWM.
  • Reštartnite si IDE, aby si našlo novú knižnicu.

Statické nastavenie jednofarebných LED

Ako prvý príklad som napísal program, ktorý nastaví každú z ôsmich diód na konkrétnu hodnotu jasu. Diódy sú v jase odstupňované približne po 50. Program je v súbore hc595_led_shiftpwm.ino. Kód si môžete stiahnuť z GitHub.

unsigned char val[8]={
  255,200,150,100,80,60,40,0};

void setup() {
  ...

  for(int i=0;i<8;i++)
  {
    unsigned char v=val[i];  
    ShiftPWM.SetOne(i,v);  
  }  
}

Na príklade je vidno, že všetku prácu obstará funkcia SetOne, ktorá nerobí nič iné, iba postupne nastaví jas každej diódy.

Dynamické nastavenie jednofarebných LED

Ako druhý som napísal program, ktorý vytvára efekt padajúceho snehu. Je to modifikácia predchádzajúceho príkladu, iba sú upravené hodnoty jasu tak, aby bol začiatok reťazca jasnejší a zvyšok tmavší, čo lepšie vystihne samotný tvar padajúcej vločky.  Program je v súbore hc595_led_shiftpwmmoving.ino. Kód si môžete stiahnuť z GitHub.

unsigned char val[8]={
  255,200,120,100,80,20,5,0};
int x=0;

void loop() {
  for(int i=0;i<8;i++)
  {
    int idx=x+i;
    if(idx>7) idx-=8;
    unsigned char v=val[idx];  
    ShiftPWM.SetOne(i,v);  
  }
  x++;  
  if(x>7) x=0;
  delay(100);
}

Keďže je to na predstavivosť trošku náročnejšie, vytvoril som kratšie video, z ktorého je jasné, čo má daný program robiť.

Viac posuvných registrov

Nasledujúce príklady sú napísane pre dva posuvné registre, ktoré ovládajú 16 LED. Podrobnosti o prepojení dvoch registrov sa nachádzajú na stránke reťazenie posuvných registrov.

Statické nastavenie 16 jednofarebných LED

Na obrázku je vidno, že viac diód dáva priestor pre slobodnejšiu tvorbu. V tomto prípade sú to dva postupne sa zhasínajúce rady, ktoré sa blížia ku stredu. Program je v súbore hc595_led_shiftpwm16.ino. Kód si môžete stiahnuť na GitHub.

Dynamické nastavenie 16 jednofarebných LED

Pre dynamické experimenty som napísal dva programy:

  • hc595_led_shiftpwmmoving16.ino - Je to len obmena predchádzajúcej verzie pre 8 diód. Na tomto príklade je samotné padanie hviezdy krajšie, pretože máme k dispozícii viac bodov. Kód si môžete stiahnuť na GitHub.
  • hc595_led_shiftpwmmoving16a.ino - Na tomto príklade sa pohybujú dva svietiace body, ktoré po sebe zanechávajú postupne slabnúcu stopu. Body sa pohybujú proti sebe, takže sa občas navzájom prekryjú, čo vytvára krásny pulzujúci efekt. Druhý príklad je zachytený na videu. Kód si môžete stiahnuť na GitHub.

RGB LED

Pomocou knižnice ShiftPWM sa dajú ovládať aj RGB LED diódy. Pretože na ovládanie ôsmich LED diód potrebujeme tri posuvné registre 74HC595, skladanie na skúšobnom poli je dosť nepraktické. Ak si chcete zopakovať tieto experimenty so mnou, môžete si objednať dve dosky, na ktoré si prispájkujete potrebné súčiastky.

  • 8x RGB LED board - Na tejto doske je pripravených 8 RGB LED diód aj s predradnými rezistormi.
  • 3x 74HC595 board - Na tejto doske sú tri posuvné registre. Obe dosky sa dajú zastrčiť do skúšobného poľa tak, aby tam nebolo nutné používať žiadne ďalšie prepojovacie vodiče.

Pokiaľ je pre vás SMD technológia príliš drobná, môžete si to poskladať aj na skúšobnom poli, ale budete na to potrebovať veľké množstvo prepojovacích vodičov. Treba iba zopakovať zapojenie podľa schémy na oboch doskách.

Následne môžete vyskúšať tieto dva experimenty:

  • Stmievanie RGB LED diódy
  • Psychedelické farby na RGB LED dióde

18.01.2016


Menu