Advertisement
Guest User

Untitled

a guest
Feb 18th, 2020
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.11 KB | None | 0 0
  1. 1. Rozblikejte LED se stridou 50% a najdete T, kdy LED "neblika".
  2. 2. Doimplementujte nize uvedenou a popsanou ukazku programu.
  3. 3. Nastavte ruzny jas kazde LED.
  4. 4. Ovladejte jas u vybranych LED tlacitky.
  5. 5. Rozsireni o RGB
  6.  
  7. #define N_CERVENE               8               // pocet cervenych LED
  8. #define T                       ??              // delka casove periody ms
  9.  
  10. struct PwmArg
  11. {
  12.         DigitalOut *m_leds;             // ledky
  13.         int *m_leds_t0;                 // cas T0 pro ledky
  14.         int m_t;                        // aktualni cas v T
  15. };
  16.  
  17. void pwm( PwmArg *t_arg )
  18. {
  19.         // dalsi casova perioda??
  20.         if ( t_arg->m_t >= T )
  21.         {
  22.                 t_arg->m_t = 0; // cas nula
  23.                 for ( int i = 0; t_arg->m_leds_t0[ i ] >= 0; i++ )
  24.                 {       // na zacatku vsechny ledky zhasnou
  25.                         t_arg->m_leds[ i ] = 0;
  26.                 }
  27.         }
  28.         // kontrola vsech LED, zda uz nastal cas...
  29.         for ( int i = 0; t_arg->m_leds_t0[ i ] >= 0; i++ )
  30.         {
  31.                 // pokud cas m_t prekroci t0[ i ], tak se led[ i ] rozsviti
  32.                 if ( t_arg->m_leds_t0[ i ] .... )
  33.                         // rozsvitit t_arg->m_leds[ i ]
  34.         }
  35.         t_arg->m_t++; // posun casu
  36. }
  37.  
  38. // ledky, index ledky, jas ledky <0,100>
  39. void nastav_jas( PwmArg *t_arg, int t_inx, int t_jas )
  40. {
  41.         //t_arg->m_leds_t0[ t_inx ] = vypocet_t0( t_jas, T ); // funkce T a jasu
  42. }
  43.  
  44. int main()
  45. {
  46.         Ticker l_pwm_cervene;                                                                   // ticker pro cervene LED
  47.  
  48.         DigitalOut l_cervene[ N_CERVENE ] = {    ......  };     // pole cervenych LED
  49.         int l_cervene_t0[ N_CERVENE + 1 ] = { 0, 0, ..., -1 };  // pole casu T0 pro cervene LED
  50.         PwmArg l_cervene_arg = { l_cervene, l_cervene_t0, 0 };  // argument pro funkci tickeru
  51.  
  52.         l_pwm_cervene.attach_us(callback( pwm, &l_cervene_arg ), 1ms/500ms ); // propojeni pwm() a cervenych LED
  53.  
  54.         for ( int l = 0; l < N_CERVENE; l++ )
  55.                 nastav_jas( &l_cervene_arg, l, 10 * l + 10 );
  56.  
  57.         while ( 1 );
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement