Remote controlled robot with LEDs and Wemos motor shield

Dependencies:   RF24 mbed

Committer:
Makodan
Date:
Wed Sep 27 16:03:48 2017 +0000
Revision:
0:51c02b15eb70
Remote controlled robot with LEDs and Wemos motor shield

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Makodan 0:51c02b15eb70 1 #include "wemos_mc.h"
Makodan 0:51c02b15eb70 2
Makodan 0:51c02b15eb70 3
Makodan 0:51c02b15eb70 4 /* setfreq() -- set PWM's frequency
Makodan 0:51c02b15eb70 5 freq:
Makodan 0:51c02b15eb70 6 PWM's frequency
Makodan 0:51c02b15eb70 7 */
Makodan 0:51c02b15eb70 8 void setfreq(I2C& i2c, uint32_t freq){
Makodan 0:51c02b15eb70 9
Makodan 0:51c02b15eb70 10 char data[4];
Makodan 0:51c02b15eb70 11
Makodan 0:51c02b15eb70 12 data[0]=(((char)(freq >> 16)) & (char)0x0f);
Makodan 0:51c02b15eb70 13 data[1]=((char)(freq >> 16));
Makodan 0:51c02b15eb70 14 data[2]=((char)(freq >> 8));
Makodan 0:51c02b15eb70 15 data[3]=((char)freq);
Makodan 0:51c02b15eb70 16
Makodan 0:51c02b15eb70 17 //__disable_irq();
Makodan 0:51c02b15eb70 18 i2c.write( _ADDRESS, data, 4 );
Makodan 0:51c02b15eb70 19 //__enable_irq();
Makodan 0:51c02b15eb70 20 wait_ms(5);
Makodan 0:51c02b15eb70 21
Makodan 0:51c02b15eb70 22 }
Makodan 0:51c02b15eb70 23
Makodan 0:51c02b15eb70 24 /* setmotor() -- set motor
Makodan 0:51c02b15eb70 25 motor:
Makodan 0:51c02b15eb70 26 _MOTOR_A 0 Motor A
Makodan 0:51c02b15eb70 27 _MOTOR_B 1 Motor B
Makodan 0:51c02b15eb70 28 dir:
Makodan 0:51c02b15eb70 29 _SHORT_BRAKE 0
Makodan 0:51c02b15eb70 30 _CW 1
Makodan 0:51c02b15eb70 31 _CCW 2
Makodan 0:51c02b15eb70 32 _STOP 3
Makodan 0:51c02b15eb70 33 _STANDBY 4
Makodan 0:51c02b15eb70 34 pwm_val:
Makodan 0:51c02b15eb70 35 0.00 - 100.00 (%)
Makodan 0:51c02b15eb70 36 */
Makodan 0:51c02b15eb70 37 void setmotor(I2C& i2c,uint8_t motor, uint8_t dir, float pwm_val){
Makodan 0:51c02b15eb70 38
Makodan 0:51c02b15eb70 39 uint16_t _pwm_val = (uint16_t)pwm_val * 100;
Makodan 0:51c02b15eb70 40
Makodan 0:51c02b15eb70 41 if(_pwm_val>10000)
Makodan 0:51c02b15eb70 42 _pwm_val=10000;
Makodan 0:51c02b15eb70 43
Makodan 0:51c02b15eb70 44 char data[4];
Makodan 0:51c02b15eb70 45
Makodan 0:51c02b15eb70 46 data[0] = ( motor | (char)0x10);
Makodan 0:51c02b15eb70 47 data[1] = ( dir );
Makodan 0:51c02b15eb70 48 data[2] = ((char)(_pwm_val >> 8));
Makodan 0:51c02b15eb70 49 data[3] = ((char)_pwm_val);
Makodan 0:51c02b15eb70 50
Makodan 0:51c02b15eb70 51 //__disable_irq();
Makodan 0:51c02b15eb70 52 i2c.write( _ADDRESS, data, 4 );
Makodan 0:51c02b15eb70 53 //__enable_irq();
Makodan 0:51c02b15eb70 54 wait_ms(5);
Makodan 0:51c02b15eb70 55
Makodan 0:51c02b15eb70 56 }
Makodan 0:51c02b15eb70 57
Makodan 0:51c02b15eb70 58 void setmotor(I2C& i2c, uint8_t motor, uint8_t dir){
Makodan 0:51c02b15eb70 59
Makodan 0:51c02b15eb70 60 setmotor(i2c,motor,dir,100);
Makodan 0:51c02b15eb70 61 }