gringotopies

Projekt arduino

May 29th, 2019
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. #include <TM1638.h>
  3.  
  4.  
  5. #define trigPin 12
  6. #define echoPin 11
  7.  
  8. byte buttons;
  9.  
  10. float pomiary[50];
  11. int licznik=0;
  12. int suma=0;
  13. String s;
  14. int mode=0;
  15. float wynik;
  16.  
  17. bool wykonano=false;
  18. bool zresetowano=false;
  19.  
  20. TM1638 module(8, 9, 7);
  21.  
  22. float calculatedSD(float data[])
  23. {
  24.     float sum = 0.0, mean, standardDeviation = 0.0,sd;
  25.  
  26.     int i,k=0;
  27.     float * nowa = new float[k];    
  28.     for(i = 0; i < 50; ++i)
  29.     {
  30.         sum += data[i];
  31.     }
  32.  
  33.     mean = sum/50;
  34.  
  35.     for(i = 0; i < 50; ++i)
  36.         standardDeviation += pow(data[i] - mean, 2);
  37.  
  38.     sd = sqrt(standardDeviation / 50);
  39.     for(i = 0; i < 50; ++i)
  40.     {
  41.      if(data[i]<mean+2*sd && data[i]>mean-2*sd)
  42.         {
  43.             nowa[k]=data[i];
  44.             k+=1;
  45.         }
  46.     }
  47.     sum =0.0;
  48.     for(i = 0; i < k; ++i)
  49.     {
  50.         sum += nowa[i];
  51.     }
  52.     return sum/k;
  53. }
  54.  
  55.  
  56. void setup() {
  57.   Serial.begin (9600);
  58.   pinMode(trigPin, OUTPUT);
  59.   pinMode(echoPin, INPUT);
  60.   module.setDisplayToString("----",0,4);
  61. }
  62.  
  63. void loop() {  
  64.  
  65.    buttons = module.getButtons();
  66.  
  67.    if(isButtonBeingPressed(1) && mode==0){
  68.  
  69.      mode=1;
  70.    }
  71.    
  72.    if(isButtonBeingPressed(2) && mode==1){
  73.  
  74.     mode=0;
  75.    }
  76.    
  77.    if(mode==1){
  78.     if(wykonano==false){
  79.       module.setDisplayToString("     ",0,4);
  80.       wynik=pomiar();
  81.       s = String(wynik);
  82.       if(wynik<100)module.setDisplayToString(s,0,4);
  83.       else{
  84.         module.setDisplayToString(s,0,3);
  85.       }
  86.      
  87.       Serial.println(s);
  88.       wykonano=true;
  89.       zresetowano=false;
  90.     }
  91.    
  92.    }
  93.    if(mode==0){
  94.     if(zresetowano==false){
  95.      module.setDisplayToString(" ----",0,3);
  96.      float pomiary[50];
  97.      float wynik;
  98.      int licznik=0;
  99.      int suma=0;
  100.      s="    ";
  101.      wykonano=false;
  102.      zresetowano=true;
  103.     }
  104.      
  105.      
  106.    }
  107.  
  108. }
  109.  
  110. int zmierzOdleglosc() {
  111.   long czas, dystans;
  112.  
  113.   digitalWrite(trigPin, LOW);
  114.   delayMicroseconds(2);
  115.   digitalWrite(trigPin, HIGH);
  116.   delayMicroseconds(10);
  117.   digitalWrite(trigPin, LOW);
  118.  
  119.   czas = pulseIn(echoPin, HIGH);
  120.   dystans = czas / 0.58;
  121.  
  122.   return dystans;
  123. }
  124.  
  125. float pomiar(){
  126.  
  127.   while(licznik<50){
  128.      
  129.      pomiary[licznik]=(float)zmierzOdleglosc();
  130.      licznik++;
  131.  
  132.  
  133.      delay(100);
  134.      
  135.   }
  136.  
  137.    float wynik= calculatedSD(pomiary)/100;
  138.    licznik=0;
  139.    float wynikr = round(wynik * 10.0) / 10.0;
  140.    return wynikr;
  141.    
  142.      
  143.    
  144.  
  145. }
  146.  
  147.  
  148. boolean isButtonBeingPressed(int n){
  149.  
  150.  
  151.  if(n < 1 or n > 8) return false;
  152.  
  153.  
  154.  buttons = module.getButtons();
  155.  
  156.  int bitToLookAt = n - 1;
  157.  
  158.  byte theValueOfTheBit = bitRead(buttons, bitToLookAt);
  159.  
  160.  if(theValueOfTheBit == 1)
  161.    return true;
  162.  else
  163.    return false;
  164. }
Add Comment
Please, Sign In to add comment