Servo Motor demo for PoliMI.

Dependencies:   X_NUCLEO_IKS01A1 mbed

main.cpp

Committer:
daz
Date:
2016-03-16
Revision:
0:7766b7bed319

File content as of revision 0:7766b7bed319:

#include "mbed.h"
#include "x_nucleo_iks01a1.h"

#define SERVO_IDLE (0.00153)

static X_NUCLEO_IKS01A1 *mems_expansion_board = X_NUCLEO_IKS01A1::Instance(D14, D15);
static MotionSensor *accelerometer = mems_expansion_board->GetAccelerometer();
PwmOut servo(D3);

int main(int argc, char** argv)
{
    int32_t axes[3];
    float pwmWidth;
    
    /* Initialize PWM to 50Hz*/
    servo.period(0.020);
    servo.pulsewidth(SERVO_IDLE);
        
    while(1){
        /* SENSE accelerometer X axis */
        accelerometer->Get_X_Axes(axes);
        
        /* COMPUTE PWM width */
        pwmWidth = SERVO_IDLE + axes[0] * 1e-7;
        
        /* ACTUATE Servo Motor according to accelerometer value */
        servo.pulsewidth(pwmWidth);
        
        /* Wait 50ms */
        wait(0.05);
    }
}