Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<arduinoPlatform.h>
- #include<tasks.h>
- #include<interrupts.h>
- #include<stdio.h>
- #include<serial.h>
- #include <pwm.h>
- #include<data.h>
- extern serial Serial;
- const int pin = 33;
- int oldState,
- startTime,
- elapsedTime = 0,
- periodTime = 0,
- iteration = 0,
- jumps[100],
- maxJump;
- void resetIterations(){
- iteration = 0,
- maxJump = 0;
- for(int i = 0; i < 100; ++i){
- jumps[i] = 0;
- }
- }
- void tracking(int id, void* ptrt){
- static int first = true;
- int newState = digitalRead(pin);
- if(oldState > newState){
- elapsedTime = millis() - startTime;
- }else if(oldState < newState){
- int time = millis();
- periodTime = time - startTime;
- startTime = time;
- if(!first){
- Serial.print('(');
- Serial.print(iteration + 1);
- Serial.print(".) ");
- Serial.print(elapsedTime);
- Serial.print(' ');
- Serial.println(periodTime);
- int humidity = map(elapsedTime, 0, 1500, 0, 100);
- if(iteration == 0){
- jumps[iteration++] = humidity;
- }else if(iteration < 100){
- jumps[iteration++] = humidity;
- int jump = abs(jumps[iteration - 1] - jumps[iteration - 2]);
- if(jump > maxJump){
- maxJump = jump;
- }
- if(jump > 15){ //mogu da napisem 15 jer je raspon od 0 do 100 isto kao i procenti
- Serial.print("[BIG-JUMP] There was a big diff. ");
- Serial.print(jump);
- Serial.println(" [%]");
- }
- }else{
- //druga tacka
- int errCnt = 0;
- for(int i = 1; i < 99; ++i){
- if( (abs(jumps[i] - jumps[i - 1]) > 20 &&
- abs(jumps[i] - jumps[i + 1]) > 20) ||
- (abs(jumps[i] - jumps[i - 1]) < 20 &&
- abs(jumps[i] - jumps[i + 1]) < 20)){
- Serial.print("[ERROR nm. ");
- Serial.print(++errCnt);
- Serial.print("] Approx: ");
- Serial.println((jumps[i + 1] + jumps[i - 1]) / 2);
- delay(50);
- }
- }
- //prva tacka
- Serial.print("[BIGGEST-JUMP] Biggest diff. was ");
- Serial.println(maxJump);
- resetIterations();
- }
- }else{
- first = false;
- }
- }
- oldState = newState;
- }
- void setup()
- {
- Serial.begin(9600);
- oldState = digitalRead(pin);
- startTime = millis();
- resetIterations();
- pwmSin(33, 1500, 0.1);
- createTask(tracking, 1, TASK_ENABLE, NULL);
- }
- void loop()
- {
- }
Advertisement
Advertisement