Ironcup Mar 2020

Dependencies:   mbed mbed-rtos MotionSensor EthernetInterface

Committer:
starling
Date:
Mon Sep 21 21:45:08 2020 +0000
Revision:
22:b7cca3089dfe
Parent:
0:88faaa1afb83
01 mar 2020

Who changed what in which revision?

UserRevisionLine numberNew contents of line
drelliak 0:88faaa1afb83 1 #include "CarPWM.h"
drelliak 0:88faaa1afb83 2 #include "mbed.h"
drelliak 0:88faaa1afb83 3
drelliak 0:88faaa1afb83 4 #define MINIMUM_MOTOR_WIDTH 1160 // microseconds
drelliak 0:88faaa1afb83 5 #define ZERO_MOTOR_WIDTH 1505 // microseconds
drelliak 0:88faaa1afb83 6 #define MAXIMUM_MOTOR_WIDTH 1910 // microseconds
drelliak 0:88faaa1afb83 7 #define MINIMUM_SERVO_WIDTH 1016 // microseconds
drelliak 0:88faaa1afb83 8 #define ZERO_SERVO_WIDTH 1470 // microseconds
drelliak 0:88faaa1afb83 9 #define MAXIMUM_SERVO_WIDTH 1858 // microseconds
drelliak 0:88faaa1afb83 10 #define PERIOD 13500 // miliseconds
drelliak 0:88faaa1afb83 11 #define MOTOR_RANGE_MAX 100
drelliak 0:88faaa1afb83 12 #define SERVO_ANGLE_MAX 100
drelliak 0:88faaa1afb83 13
drelliak 0:88faaa1afb83 14 void initialize(PwmOut motor, PwmOut servo){
drelliak 0:88faaa1afb83 15 motor.period_us(PERIOD);
drelliak 0:88faaa1afb83 16 servo.period_us(PERIOD);
drelliak 0:88faaa1afb83 17 }
drelliak 0:88faaa1afb83 18 void setServoPWM(float angle, PwmOut servo){
drelliak 0:88faaa1afb83 19 if(angle > SERVO_ANGLE_MAX)
drelliak 0:88faaa1afb83 20 angle = SERVO_ANGLE_MAX;
drelliak 0:88faaa1afb83 21 else if(angle < -SERVO_ANGLE_MAX)
drelliak 0:88faaa1afb83 22 angle = - SERVO_ANGLE_MAX;
drelliak 0:88faaa1afb83 23 float servo_width = ZERO_SERVO_WIDTH + (angle/SERVO_ANGLE_MAX)*(MAXIMUM_SERVO_WIDTH - ZERO_SERVO_WIDTH);
drelliak 0:88faaa1afb83 24 servo.pulsewidth_us(servo_width);
drelliak 0:88faaa1afb83 25 // Serial pc(USBTX, USBRX);
drelliak 0:88faaa1afb83 26 // pc.printf("\nServo: %f ",servo_width);
drelliak 0:88faaa1afb83 27 }
drelliak 0:88faaa1afb83 28 void setMotorPWM(float speed, PwmOut motor){
drelliak 0:88faaa1afb83 29 if(speed > MOTOR_RANGE_MAX)
drelliak 0:88faaa1afb83 30 speed = MOTOR_RANGE_MAX;
drelliak 0:88faaa1afb83 31 else if(speed < -MOTOR_RANGE_MAX)
drelliak 0:88faaa1afb83 32 speed = - MOTOR_RANGE_MAX;
drelliak 0:88faaa1afb83 33 float motor_speed = ZERO_MOTOR_WIDTH + (speed/MOTOR_RANGE_MAX)*(MAXIMUM_MOTOR_WIDTH - ZERO_MOTOR_WIDTH);
drelliak 0:88faaa1afb83 34 motor.pulsewidth_us(motor_speed);
drelliak 0:88faaa1afb83 35 // Serial pc(USBTX, USBRX);
drelliak 0:88faaa1afb83 36 // pc.printf("Motor: %f ",motor_speed);
drelliak 0:88faaa1afb83 37
drelliak 0:88faaa1afb83 38 }