Servo Motor demo for PoliMI.

Dependencies:   X_NUCLEO_IKS01A1 mbed

Committer:
daz
Date:
Wed Mar 16 16:41:53 2016 +0000
Revision:
0:7766b7bed319
Servo motor demo. Uses X-NUCLEO-IKS01A1 Expansion Board to drive a Servo Motor with speed control

Who changed what in which revision?

UserRevisionLine numberNew contents of line
daz 0:7766b7bed319 1 #include "mbed.h"
daz 0:7766b7bed319 2 #include "x_nucleo_iks01a1.h"
daz 0:7766b7bed319 3
daz 0:7766b7bed319 4 #define SERVO_IDLE (0.00153)
daz 0:7766b7bed319 5
daz 0:7766b7bed319 6 static X_NUCLEO_IKS01A1 *mems_expansion_board = X_NUCLEO_IKS01A1::Instance(D14, D15);
daz 0:7766b7bed319 7 static MotionSensor *accelerometer = mems_expansion_board->GetAccelerometer();
daz 0:7766b7bed319 8 PwmOut servo(D3);
daz 0:7766b7bed319 9
daz 0:7766b7bed319 10 int main(int argc, char** argv)
daz 0:7766b7bed319 11 {
daz 0:7766b7bed319 12 int32_t axes[3];
daz 0:7766b7bed319 13 float pwmWidth;
daz 0:7766b7bed319 14
daz 0:7766b7bed319 15 /* Initialize PWM to 50Hz*/
daz 0:7766b7bed319 16 servo.period(0.020);
daz 0:7766b7bed319 17 servo.pulsewidth(SERVO_IDLE);
daz 0:7766b7bed319 18
daz 0:7766b7bed319 19 while(1){
daz 0:7766b7bed319 20 /* SENSE accelerometer X axis */
daz 0:7766b7bed319 21 accelerometer->Get_X_Axes(axes);
daz 0:7766b7bed319 22
daz 0:7766b7bed319 23 /* COMPUTE PWM width */
daz 0:7766b7bed319 24 pwmWidth = SERVO_IDLE + axes[0] * 1e-7;
daz 0:7766b7bed319 25
daz 0:7766b7bed319 26 /* ACTUATE Servo Motor according to accelerometer value */
daz 0:7766b7bed319 27 servo.pulsewidth(pwmWidth);
daz 0:7766b7bed319 28
daz 0:7766b7bed319 29 /* Wait 50ms */
daz 0:7766b7bed319 30 wait(0.05);
daz 0:7766b7bed319 31 }
daz 0:7766b7bed319 32 }
daz 0:7766b7bed319 33