dusanrs

z2

Jun 1st, 2022 (edited)
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<arduinoPlatform.h>
  2. #include<tasks.h>
  3. #include<interrupts.h>
  4. #include<stdio.h>
  5. #include<serial.h>
  6. #include<pwm.h>
  7. #include<data.h>
  8.  
  9. #define PIN 26
  10.  
  11. extern serial Serial;
  12.  
  13. #define PIN 26
  14. #define poslednjih_10 10
  15. int staro_stanje,novo_stanje;
  16. int pocetno_vreme;
  17. int proteklo_vreme;
  18. int vremenski_period; // za ispisivanje vremenskom perioda
  19.  
  20. int redni_broj_greske_signala;
  21. int broj_signala_generisanih;
  22.  
  23. int signali[poslednjih_10];
  24.  
  25. void prati_gresku(int a,void *b){
  26.  
  27.     static int first=true; // za preskakanje prvog intervala
  28.     novo_stanje=digitalRead(PIN);
  29.     if(staro_stanje==1 && novo_stanje==0){
  30.             proteklo_vreme=millis()-pocetno_vreme;
  31.     }else if(staro_stanje==0 && novo_stanje==1){
  32.         int vreme=millis();
  33.         vremenski_period=vreme-pocetno_vreme;
  34.         pocetno_vreme=vreme;
  35.  
  36.         if(!first){
  37.             Serial.print(proteklo_vreme);
  38.             Serial.print(' ');
  39.             Serial.println(vremenski_period);
  40.             signali[broj_signala_generisanih%poslednjih_10]=proteklo_vreme; // stavljam na nultu poziciju taj prvi signal
  41.             if(broj_signala_generisanih>=3){
  42.                 int pr1=(broj_signala_generisanih-1)%poslednjih_10;
  43.                 int pr2=(broj_signala_generisanih-2)%poslednjih_10;
  44.                 if( (signali[pr1]*0.9>proteklo_vreme || signali[pr1]*1.1<proteklo_vreme) &&
  45.                 (signali[pr2]*0.9>proteklo_vreme || signali[pr2]*1.1<proteklo_vreme) ){
  46.                     redni_broj_greske_signala++;
  47.                     Serial.print("Doslo je do greske br:");
  48.                     Serial.println(redni_broj_greske_signala);
  49.                     Serial.print("Procenat greske");
  50.                     Serial.println(redni_broj_greske_signala*100/broj_signala_generisanih);
  51.                 }
  52.  
  53.             }
  54.             broj_signala_generisanih++;
  55.         }
  56.         first=false;
  57.     }
  58.  
  59.     staro_stanje=novo_stanje;
  60.  
  61. }
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68. void setup()
  69. {
  70.     Serial.begin(9600);
  71.     pinMode(PIN,OUTPUT);
  72.     pwm(PIN,2000,750,0.2);
  73.     staro_stanje=digitalRead(PIN);
  74.     pocetno_vreme=millis();
  75.     proteklo_vreme=0;
  76.     vremenski_period=0;
  77.     redni_broj_greske_signala=0;
  78.     broj_signala_generisanih=0;
  79.  
  80.     createTask(prati_gresku,50,TASK_ENABLE,NULL);
  81. }
  82.  
  83.  void loop()
  84.  {
  85.  
  86.  }
  87.  
Add Comment
Please, Sign In to add comment