Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // **************************************************************************
- //
- // Demo program for labs
- //
- // Subject: Computer Architectures and Parallel systems
- // Author: Petr Olivka, petr.olivka@vsb.cz, 09/2019
- // Organization: Department of Computer Science, FEECS,
- // VSB-Technical University of Ostrava, CZ
- //
- // File: Main program for LEDs
- //
- // **************************************************************************
- // Serial line for printf output
- Serial g_pc(USBTX, USBRX);
- // LEDs on K64F-KIT - instances of class DigitalOut
- DigitalOut g_led1(PTA1);
- DigitalOut g_led2(PTA2);
- DigitalOut g_led3(PTC0);
- DigitalOut g_led4(PTC1);
- DigitalOut g_led5(PTC7);
- DigitalOut g_led6(PTC8);
- DigitalOut g_led7(PTC2);
- DigitalOut g_led8(PTC3);
- DigitalOut g_led9(PTC4);
- DigitalOut g_led10(PTC5);
- // Button on K64F-KIT - instance of class DigitalIn
- DigitalIn g_but9(PTC9);
- DigitalIn g_but10(PTC10);
- DigitalIn g_but11(PTC11);
- DigitalIn g_but12(PTC12);
- unsigned int i = 0;
- unsigned int period = 20;
- void fn_inc(){
- i++;//1000us
- }
- void fn_jas(float percindecimal, DigitalOut& led1){
- //ton/(toff+ton), toff==0 20ms rozdelit na procenta
- unsigned int t_on = period * percindecimal;
- //int t_off = period - t_on;
- if(i%period <= t_on)
- {
- led1 = 1;
- }
- else{
- led1 = 0;
- }
- }
- void fn_jas2(float percindecimal, DigitalOut& led1,unsigned int in){
- //ton/(toff+ton), toff==0 20ms rozdelit na procenta
- unsigned int t_on = period * percindecimal;
- //int t_off = period - t_on;
- if(in%period <= t_on)
- {
- led1 = 1;
- }
- else{
- led1 = 0;
- }
- }
- //podminka jas jedne led diody
- //kdyz zmacknu ulozim si cas a resim zakmity
- int main()
- {
- // Serial line initialization
- //g_pc.baud(115200);
- Ticker l_t1;
- l_t1.attach_us(callback( fn_inc ), 1000);
- g_led2 = 1;
- /*unsigned int timer_button;
- float float_percent;
- //bool clicked = false;
- int changed = 0;DigitalOut g_led5(PTC7);
- DigitalOut g_led6(PTC8);
- unsigned int timer_hold;
- //unsigned int in = 0;*/
- unsigned int timer_pressed = 0;
- unsigned int timer_blicked = 0;
- unsigned int test_timer = 500;
- bool left_blinker = false;
- bool right_blinker = false;
- bool break_lights = false;
- bool lights = false;
- bool lbon = false;
- bool rbon = false;
- while (1)
- {
- //in++;
- /*int l_delay = 10;
- g_led1 = !g_led1; // invert LED1 state
- if (g_but9 == 0) // button pressed?
- {
- l_delay /= 10; // speed up blinking
- g_led2 = !g_led2;
- }
- else
- g_led2 = 0; // LED2 off*/
- /* fn_jas(0.3,g_led5);
- fn_jas(0.3,g_led6);
- if(float_percent < 100.0 && !g_but9){
- timer_button = i;
- float_percDigitalOut g_led5(PTC7);
- DigitalOut g_led6(PTC8);ent += 0.05;
- if( timer_button + 3000 > i && !g_but9){
- timer_hold = i;
- if(float_percent < 100.0 && timer_hold + 1000 < i){
- float_percent += 0.05;
- timer_hold = i;
- }
- }
- }
- fn_jas(0.3,g_led5);
- fn_jas(0.3,g_led6);
- if(float_percent > 0.0 && !g_but10){
- timer_button = i;
- float_percent -= 0.05;
- if( timer_button + 3000 < i && !g_but10){
- timer_hold = i;
- if(float_percent > 0.0 && timer_hold + 1000 < i){
- float_percent -= 0.05;
- timer_hold = i;
- }
- }
- }
- fn_jas(float_percent,g_led1);
- //fn_jas2(0.05,g_led1,in);
- //wait_ms(1);
- *
- */
- if(lights){
- if(!lbon){
- fn_jas(0.3,g_led3);
- fn_jas(0.3,g_led4);
- }
- else{
- fn_jas(1,g_led3);
- fn_jas(1,g_led4);
- }
- if(!rbon){
- fn_jas(0.3,g_led5);
- fn_jas(0.3,g_led6);
- }
- else {
- fn_jas(1,g_led5);
- fn_jas(1,g_led6);
- }
- if(!break_lights){
- fn_jas(0.3,g_led7);
- fn_jas(0.3,g_led8);
- fn_jas(0.3,g_led9);
- fn_jas(0.3,g_led10);
- }
- else{
- fn_jas(1,g_led7);
- fn_jas(1,g_led8);
- fn_jas(1,g_led9);
- fn_jas(1,g_led10);
- }
- }
- ////Left blincker
- if(!g_but9 && !left_blinker && timer_pressed + 200 < i){
- timer_pressed = i;
- left_blinker = true;
- right_blinker = false;
- }
- if(!g_but9 && left_blinker && timer_pressed + 200 < i){
- timer_pressed = i;
- left_blinker = false;
- }
- if(left_blinker && i%test_timer == 0 && timer_blicked + 51 < i){
- timer_blicked = i;
- g_led3 = !g_led3;
- g_led4 = g_led3;
- if(g_led3)
- lbon = true;
- else
- lbon = false;
- }
- else if(!left_blinker){
- g_led3 = 0;
- g_led4 = 0;
- lbon = false;
- }
- ////
- //Right blincker
- if(!g_but10 && !right_blinker && timer_pressed + 200 < i){
- timer_pressed = i;
- right_blinker = true;
- left_blinker = false;
- }
- if(!g_but10 && right_blinker && timer_pressed + 200 < i){
- timer_pressed = i;
- right_blinker = false;
- }
- if(right_blinker && i%test_timer == 0 && timer_blicked + 50 < i){
- timer_blicked = i;
- g_led5 = !g_led5;
- g_led6 = g_led5;
- if(g_led5)
- rbon = true;
- else
- rbon = false;
- }
- else if(!right_blinker){
- g_led5 = 0;
- g_led6 = 0;
- }
- //Break lights
- if(!g_but11){
- break_lights = true;
- g_led7 = 1;
- g_led8 = 1;
- g_led9 = 1;
- g_led10 = 1;
- }
- else if(g_but11){
- break_lights = false;
- g_led7 = 0;
- g_led8 = 0;
- g_led9 = 0;
- g_led10 = 0;
- }
- if(!g_but12 && !lights && timer_pressed + 200 < i){
- timer_pressed = i;
- lights = true;
- }
- if(!g_but12 && lights && timer_pressed + 200 < i){
- timer_pressed = i;
- lights = false;
- }
- /*
- if(right_blinker && i%700 == 0 && timer_blicked + 100 < i){
- timer_blicked = i;
- g_led5 = !g_led5;
- g_led6 = !g_led6;
- }
- */
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement