MartinSRB

[НРС] Колоквијум - Група 23А

May 15th, 2023 (edited)
3,141
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.83 KB | None | 0 0
  1. /* ФОТОГРАФИЈА ЗАДАТКА ЈЕ У ЛИНКУ У КОМЕНТАРУ ДОЛЕ */
  2. #include<arduinoPlatform.h>
  3. #include<tasks.h>
  4. #include<interrupts.h>
  5. #include<stdio.h>
  6. #include<serial.h>
  7. #include <pwm.h>
  8. #include<data.h>
  9.  
  10. extern serial Serial;
  11.  
  12. /* --------> Prva tacka <--------*/
  13. int x1 = 0,
  14.     x2 = 0;
  15. /* -------------------------------*/
  16.  
  17. /*========> Druga tacka <==========*/
  18. const int SW123[] = {2, 7, 8};
  19. int fun1(){
  20.     int lampica_pin = 26,
  21.         counter     = 0;
  22.     for(int i = 0; i < 3; ++i){ //posto proveravamo 3 prekidaca petlja ide do 3
  23.         if(digitalRead(SW123[i])){
  24.             digitalWrite(lampica_pin++, HIGH);
  25.             ++counter;
  26.         }else{
  27.             digitalWrite(lampica_pin++, LOW);
  28.         }
  29.     }
  30.     return counter;
  31. }
  32. /*==================================*/
  33. /********** TRECA TACKA ***************/
  34. const int BTN1 = 4,
  35.           BTN2 = 34;
  36. int       BTN1_old_state,
  37.           BTN2_old_state;
  38. void task1(int id, void* ptrt){
  39.     if(BTN1_old_state < digitalRead(BTN1)){
  40.         x1 = fun1();
  41.         Serial.print("task1: x1=");
  42.         Serial.println(x1);
  43.         BTN1_old_state = digitalRead(BTN1);
  44.     }else{
  45.         BTN1_old_state = digitalRead(BTN1);
  46.     }
  47.     if(BTN2_old_state < digitalRead(BTN2)){
  48.         x2 = 2 * x1;
  49.         Serial.print("task1: x2=");
  50.         Serial.println(x2);
  51.         BTN2_old_state = digitalRead(BTN2);
  52.     }else{
  53.         BTN2_old_state = digitalRead(BTN2);
  54.     }
  55. }
  56. /**************************************/
  57. /*~~~~~~~~~~~ CETVRTA TACKA ~~~~~~~~~~~~*/
  58. typedef void interruptFunction();
  59.  
  60. interruptFunction* sw4_rising_edge = NULL;
  61.  
  62. void sw4_attach_interrupt(interruptFunction* func){
  63.     sw4_rising_edge = func;
  64. }
  65.  
  66. const int SW4 = 35;
  67. int sw4_old_state;
  68. void sw4_check(int id, void* ptrt){
  69.     if(sw4_old_state < digitalRead(SW4)){
  70.         if(sw4_rising_edge != NULL){
  71.             sw4_rising_edge();
  72.         }
  73.         sw4_old_state = digitalRead(SW4);
  74.     }else{
  75.         sw4_old_state = digitalRead(SW4);
  76.     }
  77. }
  78.  
  79. void sw4_rising_function(){
  80.     int dec = x1 + x2,
  81.         i   = 30;
  82.     while(dec / 2 > 0 || i <= 33){
  83.         digitalWrite(i++, dec % 2);
  84.         dec /= 2;
  85.     }
  86.     Serial.println("interupt SW4");
  87. }
  88. /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
  89.  
  90. /*=-=-=-=-=-=-= PETA TACKA =-=-=-=-=-=-=*/
  91. void sw4_detach_interrupt(){
  92.     sw4_rising_edge = NULL;
  93. }
  94.  
  95. const int BTN3 = 36;
  96. int BTN3_start_time,
  97.     BTN3_old_state;
  98. void task2(int id, void* ptrt){
  99.     if(BTN3_old_state < digitalRead(BTN3)){
  100.         BTN3_start_time = millis();
  101.         BTN3_old_state = digitalRead(BTN3);
  102.     }else if(BTN3_old_state > digitalRead(BTN3)){
  103.         if(millis() - BTN3_start_time >= 2000){
  104.             sw4_detach_interrupt();
  105.             Serial.println("task2: brisanje interupt-a sa prekidaca SW4");
  106.         }
  107.         BTN3_old_state = digitalRead(BTN3);
  108.     }
  109. }
  110. /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
  111.  
  112. void setup()
  113. {
  114.     /*------> Prva tacka <------*/
  115.     Serial.begin(9600);
  116.     for(int i = 26; i <= 33; ++i){
  117.         pinMode(i, OUTPUT);
  118.         digitalWrite(i, LOW);
  119.     }
  120.     Serial.println("Martin Muharemovic PR130/2021 - Grupa 7");
  121.     /*--------------------------*/
  122.     /********* TRECA TACKA ************/
  123.     BTN1_old_state = digitalRead(BTN1);
  124.     BTN2_old_state = digitalRead(BTN2);
  125.     createTask(task1, 30, TASK_ENABLE, NULL);
  126.     /**********************************/
  127.     /*~~~~~~~~~~~ CETVRTA TACKA ~~~~~~~~~~~~~*/
  128.     sw4_old_state = digitalRead(SW4);
  129.     sw4_attach_interrupt(sw4_rising_function);
  130.     createTask(sw4_check, 50, TASK_ENABLE, NULL);
  131.     /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
  132.     /*=-=-=-=-=-=-= PETA TACKA =-=-=-=-=-=-=*/
  133.     BTN3_old_state = digitalRead(BTN3);
  134.     createTask(task2, 25, TASK_ENABLE, NULL);
  135.     /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
  136. }
  137.  
  138. void loop()
  139. {
  140.  
  141. }
  142.  
Advertisement
Comments
Add Comment
Please, Sign In to add comment