Advertisement
Guest User

Untitled

a guest
Feb 19th, 2020
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.23 KB | None | 0 0
  1. // **************************************************************************
  2. //
  3. //               Demo program for labs
  4. //
  5. // Subject:      Computer Architectures and Parallel systems
  6. // Author:       Petr Olivka, petr.olivka@vsb.cz, 09/2019
  7. // Organization: Department of Computer Science, FEECS,
  8. //               VSB-Technical University of Ostrava, CZ
  9. //
  10. // File:         Main program for LEDs
  11. //
  12. // **************************************************************************
  13.  
  14.  
  15.  
  16.  
  17.  
  18. // Serial line for printf output
  19. Serial g_pc(USBTX, USBRX);
  20.  
  21. // LEDs on K64F-KIT - instances of class DigitalOut
  22. DigitalOut g_led1(PTA1);
  23. DigitalOut g_led2(PTA2);
  24.  
  25. DigitalOut g_led3(PTC0);
  26. DigitalOut g_led4(PTC1);
  27.  
  28. DigitalOut g_led5(PTC7);
  29. DigitalOut g_led6(PTC8);
  30.  
  31. DigitalOut g_led7(PTC2);
  32. DigitalOut g_led8(PTC3);
  33. DigitalOut g_led9(PTC4);
  34. DigitalOut g_led10(PTC5);
  35.  
  36.  
  37. // Button on K64F-KIT - instance of class DigitalIn
  38. DigitalIn g_but9(PTC9);
  39. DigitalIn g_but10(PTC10);
  40. DigitalIn g_but11(PTC11);
  41. DigitalIn g_but12(PTC12);
  42.  
  43. unsigned int i = 0;
  44. unsigned int period = 20;
  45.  
  46. void fn_inc(){
  47.     i++;//1000us
  48. }
  49.  
  50. void fn_jas(float percindecimal, DigitalOut& led1){
  51.     //ton/(toff+ton), toff==0 20ms rozdelit na procenta
  52.     unsigned int t_on = period * percindecimal;
  53.     //int t_off = period - t_on;
  54.  
  55.     if(i%period <= t_on)
  56.     {
  57.         led1 = 1;
  58.  
  59.     }
  60.     else{
  61.         led1 = 0;
  62.     }
  63.  
  64. }
  65.  
  66. void fn_jas2(float percindecimal, DigitalOut& led1,unsigned int in){
  67.     //ton/(toff+ton), toff==0 20ms rozdelit na procenta
  68.     unsigned int t_on = period * percindecimal;
  69.     //int t_off = period - t_on;
  70.  
  71.     if(in%period <= t_on)
  72.     {
  73.         led1 = 1;
  74.  
  75.     }
  76.     else{
  77.         led1 = 0;
  78.     }
  79. }
  80.  
  81.  
  82. //podminka jas jedne led diody
  83. //kdyz zmacknu ulozim si cas a resim zakmity
  84.  
  85. int main()
  86. {
  87.     // Serial line initialization
  88.     //g_pc.baud(115200);
  89.     Ticker l_t1;
  90.  
  91.     l_t1.attach_us(callback( fn_inc ), 1000);
  92.     g_led2 = 1;
  93.     /*unsigned int timer_button;
  94.     float float_percent;
  95.     //bool clicked = false;
  96.     int changed = 0;DigitalOut g_led5(PTC7);
  97. DigitalOut g_led6(PTC8);
  98.     unsigned int timer_hold;
  99.     //unsigned int in = 0;*/
  100.     unsigned int timer_pressed = 0;
  101.     unsigned int timer_blicked = 0;
  102.     unsigned int test_timer = 500;
  103.  
  104.     bool left_blinker = false;
  105.     bool right_blinker = false;
  106.     bool break_lights = false;
  107.  
  108.     bool lights = false;
  109.     bool lbon = false;
  110.     bool rbon = false;
  111.     while (1)
  112.         {
  113.  
  114.             //in++;
  115.             /*int l_delay = 10;
  116.  
  117.             g_led1 = !g_led1;         // invert LED1 state
  118.  
  119.             if (g_but9 == 0)         // button pressed?
  120.             {
  121.                 l_delay /= 10;        // speed up blinking
  122.                 g_led2 = !g_led2;
  123.             }
  124.             else
  125.                 g_led2 = 0;         // LED2 off*/
  126.         /*          fn_jas(0.3,g_led5);
  127.             fn_jas(0.3,g_led6);
  128.             if(float_percent < 100.0 && !g_but9){
  129.                 timer_button = i;
  130.                 float_percDigitalOut g_led5(PTC7);
  131. DigitalOut g_led6(PTC8);ent += 0.05;
  132.  
  133.                 if( timer_button + 3000 > i && !g_but9){
  134.                         timer_hold = i;
  135.                         if(float_percent < 100.0 && timer_hold + 1000 < i){
  136.                             float_percent += 0.05;
  137.                             timer_hold = i;
  138.                         }
  139.                 }
  140.             }
  141.             fn_jas(0.3,g_led5);
  142.             fn_jas(0.3,g_led6);
  143.         if(float_percent > 0.0 && !g_but10){
  144.                 timer_button = i;
  145.  
  146.                 float_percent -= 0.05;
  147.  
  148.                 if( timer_button + 3000 < i && !g_but10){
  149.                         timer_hold = i;
  150.                         if(float_percent > 0.0 && timer_hold + 1000 < i){
  151.                             float_percent -= 0.05;
  152.                             timer_hold = i;
  153.                         }
  154.                 }
  155.             }
  156.  
  157.             fn_jas(float_percent,g_led1);
  158.             //fn_jas2(0.05,g_led1,in);
  159.             //wait_ms(1);
  160.              *
  161.              */
  162.  
  163.         if(lights){
  164.             if(!lbon){
  165.                 fn_jas(0.3,g_led3);
  166.                 fn_jas(0.3,g_led4);
  167.             }
  168.             else{
  169.                 fn_jas(1,g_led3);
  170.                 fn_jas(1,g_led4);
  171.             }
  172.             if(!rbon){
  173.                 fn_jas(0.3,g_led5);
  174.                 fn_jas(0.3,g_led6);
  175.             }
  176.             else {
  177.                 fn_jas(1,g_led5);
  178.                 fn_jas(1,g_led6);
  179.             }
  180.             if(!break_lights){
  181.                 fn_jas(0.3,g_led7);
  182.                 fn_jas(0.3,g_led8);
  183.                 fn_jas(0.3,g_led9);
  184.                 fn_jas(0.3,g_led10);
  185.             }
  186.             else{
  187.                 fn_jas(1,g_led7);
  188.                 fn_jas(1,g_led8);
  189.                 fn_jas(1,g_led9);
  190.                 fn_jas(1,g_led10);
  191.             }
  192.         }
  193.         ////Left blincker
  194.         if(!g_but9 && !left_blinker && timer_pressed + 200 < i){
  195.             timer_pressed = i;
  196.             left_blinker = true;
  197.             right_blinker = false;
  198.         }
  199.         if(!g_but9 && left_blinker && timer_pressed + 200 < i){
  200.             timer_pressed = i;
  201.             left_blinker = false;
  202.         }
  203.         if(left_blinker && i%test_timer == 0 && timer_blicked + 51 < i){
  204.             timer_blicked = i;
  205.             g_led3 = !g_led3;
  206.             g_led4 = g_led3;
  207.             if(g_led3)
  208.                 lbon = true;
  209.             else
  210.                 lbon = false;
  211.         }
  212.         else if(!left_blinker){
  213.             g_led3 = 0;
  214.             g_led4 = 0;
  215.             lbon = false;
  216.         }
  217.         ////
  218.         //Right blincker
  219.         if(!g_but10 && !right_blinker && timer_pressed + 200 < i){
  220.             timer_pressed = i;
  221.             right_blinker = true;
  222.             left_blinker = false;
  223.         }
  224.         if(!g_but10 && right_blinker && timer_pressed + 200 < i){
  225.             timer_pressed = i;
  226.             right_blinker = false;
  227.         }
  228.         if(right_blinker && i%test_timer == 0 && timer_blicked + 50 < i){
  229.             timer_blicked = i;
  230.             g_led5 = !g_led5;
  231.             g_led6 = g_led5;
  232.             if(g_led5)
  233.                 rbon = true;
  234.             else
  235.                 rbon = false;
  236.         }
  237.         else if(!right_blinker){
  238.             g_led5 = 0;
  239.             g_led6 = 0;
  240.         }
  241.         //Break lights
  242.         if(!g_but11){
  243.             break_lights = true;
  244.             g_led7 = 1;
  245.             g_led8 = 1;
  246.             g_led9 = 1;
  247.             g_led10 = 1;
  248.         }
  249.         else if(g_but11){
  250.             break_lights = false;
  251.             g_led7 = 0;
  252.             g_led8 = 0;
  253.             g_led9 = 0;
  254.             g_led10 = 0;
  255.         }
  256.  
  257.  
  258.         if(!g_but12 && !lights && timer_pressed + 200 < i){
  259.                     timer_pressed = i;
  260.                     lights = true;
  261.  
  262.         }
  263.         if(!g_but12 && lights && timer_pressed + 200 < i){
  264.                     timer_pressed = i;
  265.                     lights = false;
  266.  
  267.         }
  268.  
  269.  
  270. /*
  271.         if(right_blinker && i%700 == 0 && timer_blicked + 100 < i){
  272.             timer_blicked = i;
  273.             g_led5 = !g_led5;
  274.             g_led6 = !g_led6;
  275.         }
  276. */
  277.         }
  278.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement