Banco de pruebas RPM

Dependencies:   ESC HX711 Servo mbed-rtos mbed

main.cpp

Committer:
AlanHuchin
Date:
2018-06-26
Revision:
0:e1046eeaefdb

File content as of revision 0:e1046eeaefdb:

#include "mbed.h"
//#include "esc.h"
#include "Servo.h"
#include "HX711.h"
#include "rtos.h"

Serial pc(USBTX, USBRX);
DigitalOut myled(LED1);
//ESC esc1(p24);

Servo esc1(p23);
HX711 scale(p29, p30);
InterruptIn pb1(p21);
InterruptIn pb2(p22);
Timer t;
Thread thread1;
Thread thread2;

float cnt = 0.025;
float weight = 0.0;
int x = 0;


float calibration_factor = -112650.0;; //-7050 worked for my 440lb max scale setup
int averageSamples = 100;

void flip_pb1();
void flip_pb2();
void rpm_fun();
void extract_data();
void ON_OFF();

int main() {
    
    pc.baud(115200); 
    pc.printf("-------------------------------------------------- \n\r");
    
    scale.setScale(0);
    scale.tare(); //Reset the scale to 0
    long zero_factor = scale.averageValue(averageSamples);
    pc.printf("Zero factor: %.4f\n\r" , zero_factor);
    scale.setScale(calibration_factor);
    pc.printf("Sensor de Peso Calibrado\n\r" );
    wait(2.0);
    esc1 = 1.0;
    wait(6.0); 
    esc1 = 0.0;
    wait(2.0);
    pc.printf("Motores Activados\n\r" );
    pc.printf("Todo Listo...\n\r" );
    wait(2.0);
    
    pb1.rise(&flip_pb1); 
    pb2.rise(&flip_pb2);
    
    
    thread1.start(extract_data);
    thread2.start( ON_OFF);
    
    
    //F3 = 0.8584*PWM3-0.1502;
    
    while(1) {
        
        esc1 = cnt;
        Thread::wait(20); 
     
    }
}

void rpm_fun()
{
    
}

void extract_data(){
     while(true){
        
        Thread::wait(10);  
    }
}


void ON_OFF(){
    while(true){
        
        if(x == 1){
            weight = scale.getGram();
            pc.printf("%f %.4f %f \n\r",t.read(),weight*1000,cnt);
            cnt = cnt + 0.025;    
        }
        
        if(cnt > 0.95){
           t.reset();
           t.stop();
           cnt = 0.0;
           x = 0;
        }
        
        Thread::wait(4000);
    }
}

void flip_pb1() {
  wait_ms(10);
  t.start();
  x = 1;
}


void flip_pb2() {
    wait_ms(10);

}