You can use MCB as TJ3 6ch or 4ch driver.

Dependencies:   mbed

Committer:
tajiri1999
Date:
Mon Dec 10 06:45:44 2018 +0000
Revision:
1:c828f7c35fae
Parent:
0:def293862983
delete wait_ms

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tajiri1999 0:def293862983 1 #include "mbed.h"
tajiri1999 0:def293862983 2
tajiri1999 0:def293862983 3 I2CSlave slave(PB_7,PB_6);
tajiri1999 0:def293862983 4
tajiri1999 0:def293862983 5
tajiri1999 0:def293862983 6 DigitalOut InA1(D12);
tajiri1999 0:def293862983 7 DigitalOut InB1(D11);
tajiri1999 0:def293862983 8 PwmOut pwm1(D10);
tajiri1999 0:def293862983 9
tajiri1999 0:def293862983 10 DigitalOut InA2(D9);
tajiri1999 0:def293862983 11 DigitalOut InB2(D7);
tajiri1999 0:def293862983 12 PwmOut pwm2(D3);
tajiri1999 0:def293862983 13
tajiri1999 0:def293862983 14 DigitalOut InA3(D1);
tajiri1999 0:def293862983 15 DigitalOut InB3(D0);
tajiri1999 0:def293862983 16 PwmOut pwm3(D2);
tajiri1999 0:def293862983 17
tajiri1999 0:def293862983 18 void rec_eve();
tajiri1999 0:def293862983 19 void motor(int ch,int power);
tajiri1999 0:def293862983 20
tajiri1999 0:def293862983 21 int main(){
tajiri1999 0:def293862983 22 wait(0.2);
tajiri1999 0:def293862983 23 slave.address(0x14);
tajiri1999 0:def293862983 24 pwm1.period(0.00052);
tajiri1999 0:def293862983 25 pwm2.period(0.00052);
tajiri1999 0:def293862983 26 pwm3.period(0.00052);
tajiri1999 0:def293862983 27 while (1) {
tajiri1999 0:def293862983 28 if(slave.receive() == I2CSlave::WriteAddressed){
tajiri1999 0:def293862983 29 rec_eve();
tajiri1999 0:def293862983 30 }
tajiri1999 0:def293862983 31 }
tajiri1999 0:def293862983 32 }
tajiri1999 0:def293862983 33
tajiri1999 0:def293862983 34 void rec_eve(){
tajiri1999 0:def293862983 35 char i2c_rec_buf[] = {0,0,0,0,0,0};
tajiri1999 0:def293862983 36 slave.read(i2c_rec_buf,6);
tajiri1999 0:def293862983 37 for(int i = 0; i< 6;i++){
tajiri1999 0:def293862983 38 if(i2c_rec_buf[i] == 0){
tajiri1999 0:def293862983 39 motor(i,0);
tajiri1999 0:def293862983 40 }
tajiri1999 0:def293862983 41 else if(i2c_rec_buf[i] == 128 ){
tajiri1999 0:def293862983 42 motor(i,999);
tajiri1999 0:def293862983 43 }
tajiri1999 0:def293862983 44 else if(i2c_rec_buf[i] < 128){
tajiri1999 0:def293862983 45 motor(i,i2c_rec_buf[i]);
tajiri1999 0:def293862983 46 }
tajiri1999 0:def293862983 47 else{
tajiri1999 0:def293862983 48 motor(i,-1*(i2c_rec_buf[i] - 128));
tajiri1999 0:def293862983 49 }
tajiri1999 0:def293862983 50 }
tajiri1999 0:def293862983 51 }
tajiri1999 0:def293862983 52
tajiri1999 0:def293862983 53 void motor(int ch,int power){
tajiri1999 0:def293862983 54
tajiri1999 0:def293862983 55 switch (ch){
tajiri1999 0:def293862983 56 case 0://right
tajiri1999 0:def293862983 57 if(power == 0){
tajiri1999 0:def293862983 58 InA1 = 0;
tajiri1999 0:def293862983 59 InB1 = 0;
tajiri1999 0:def293862983 60 pwm1 = 0;
tajiri1999 0:def293862983 61 }
tajiri1999 0:def293862983 62 else if(power == 999){
tajiri1999 0:def293862983 63 InA1 = 1;
tajiri1999 0:def293862983 64 InB1 = 1;
tajiri1999 0:def293862983 65 pwm1 = 1;
tajiri1999 0:def293862983 66 }
tajiri1999 0:def293862983 67 else if(power < 0){
tajiri1999 0:def293862983 68 InA1 = 0;
tajiri1999 0:def293862983 69 InB1 = 1;
tajiri1999 0:def293862983 70 pwm1 = -1*(float)power/100;
tajiri1999 0:def293862983 71 }
tajiri1999 0:def293862983 72 else{
tajiri1999 0:def293862983 73 InA1 = 1;
tajiri1999 0:def293862983 74 InB1 = 0;
tajiri1999 0:def293862983 75 pwm1 = (float)power/100;
tajiri1999 0:def293862983 76 }
tajiri1999 0:def293862983 77 break;
tajiri1999 0:def293862983 78 case 5://back
tajiri1999 0:def293862983 79 if(power == 0){
tajiri1999 0:def293862983 80 InA2 = 0;
tajiri1999 0:def293862983 81 InB2 = 0;
tajiri1999 0:def293862983 82 pwm2 = 0;
tajiri1999 0:def293862983 83 }
tajiri1999 0:def293862983 84 else if(power == 999){
tajiri1999 0:def293862983 85 InA2 = 1;
tajiri1999 0:def293862983 86 InB2 = 1;
tajiri1999 0:def293862983 87 pwm2 = 1;
tajiri1999 0:def293862983 88 }
tajiri1999 0:def293862983 89 else if(power < 0){
tajiri1999 0:def293862983 90 InA2 = 0;
tajiri1999 0:def293862983 91 InB2 = 1;
tajiri1999 0:def293862983 92 pwm2 = -1*(float)power/100;
tajiri1999 0:def293862983 93 }
tajiri1999 0:def293862983 94 else{
tajiri1999 0:def293862983 95 InA2 = 1;
tajiri1999 0:def293862983 96 InB2 = 0;
tajiri1999 0:def293862983 97 pwm2 = (float)power/100;
tajiri1999 0:def293862983 98 }
tajiri1999 0:def293862983 99 break;
tajiri1999 0:def293862983 100 case 2://left
tajiri1999 0:def293862983 101 if(power == 0){
tajiri1999 0:def293862983 102 InA3 = 0;
tajiri1999 0:def293862983 103 InB3 = 0;
tajiri1999 0:def293862983 104 pwm3 = 0;
tajiri1999 0:def293862983 105 }
tajiri1999 0:def293862983 106 else if(power == 999){
tajiri1999 0:def293862983 107 InA3 = 1;
tajiri1999 0:def293862983 108 InB3 = 1;
tajiri1999 0:def293862983 109 pwm3 = 1;
tajiri1999 0:def293862983 110 }
tajiri1999 0:def293862983 111 else if(power < 0){
tajiri1999 0:def293862983 112 InA3 = 0;
tajiri1999 0:def293862983 113 InB3 = 1;
tajiri1999 0:def293862983 114 pwm3 = -1*(float)power/100;
tajiri1999 0:def293862983 115 }
tajiri1999 0:def293862983 116 else{
tajiri1999 0:def293862983 117 InA3 = 1;
tajiri1999 0:def293862983 118 InB3 = 0;
tajiri1999 0:def293862983 119 pwm3 = (float)power/100;
tajiri1999 0:def293862983 120 }
tajiri1999 0:def293862983 121 break;
tajiri1999 0:def293862983 122 default:
tajiri1999 0:def293862983 123 break;
tajiri1999 0:def293862983 124 }
tajiri1999 0:def293862983 125 }