Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1. Rozblikejte LED se stridou 50% a najdete T, kdy LED "neblika".
- 2. Doimplementujte nize uvedenou a popsanou ukazku programu.
- 3. Nastavte ruzny jas kazde LED.
- 4. Ovladejte jas u vybranych LED tlacitky.
- 5. Rozsireni o RGB
- #define N_CERVENE 8 // pocet cervenych LED
- #define T ?? // delka casove periody ms
- struct PwmArg
- {
- DigitalOut *m_leds; // ledky
- int *m_leds_t0; // cas T0 pro ledky
- int m_t; // aktualni cas v T
- };
- void pwm( PwmArg *t_arg )
- {
- // dalsi casova perioda??
- if ( t_arg->m_t >= T )
- {
- t_arg->m_t = 0; // cas nula
- for ( int i = 0; t_arg->m_leds_t0[ i ] >= 0; i++ )
- { // na zacatku vsechny ledky zhasnou
- t_arg->m_leds[ i ] = 0;
- }
- }
- // kontrola vsech LED, zda uz nastal cas...
- for ( int i = 0; t_arg->m_leds_t0[ i ] >= 0; i++ )
- {
- // pokud cas m_t prekroci t0[ i ], tak se led[ i ] rozsviti
- if ( t_arg->m_leds_t0[ i ] .... )
- // rozsvitit t_arg->m_leds[ i ]
- }
- t_arg->m_t++; // posun casu
- }
- // ledky, index ledky, jas ledky <0,100>
- void nastav_jas( PwmArg *t_arg, int t_inx, int t_jas )
- {
- //t_arg->m_leds_t0[ t_inx ] = vypocet_t0( t_jas, T ); // funkce T a jasu
- }
- int main()
- {
- Ticker l_pwm_cervene; // ticker pro cervene LED
- DigitalOut l_cervene[ N_CERVENE ] = { ...... }; // pole cervenych LED
- int l_cervene_t0[ N_CERVENE + 1 ] = { 0, 0, ..., -1 }; // pole casu T0 pro cervene LED
- PwmArg l_cervene_arg = { l_cervene, l_cervene_t0, 0 }; // argument pro funkci tickeru
- l_pwm_cervene.attach_us(callback( pwm, &l_cervene_arg ), 1ms/500ms ); // propojeni pwm() a cervenych LED
- for ( int l = 0; l < N_CERVENE; l++ )
- nastav_jas( &l_cervene_arg, l, 10 * l + 10 );
- while ( 1 );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement