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

Dependencies:   mbed

Committer:
tajiri1999
Date:
Mon Dec 10 06:33:25 2018 +0000
Revision:
0:def293862983
Child:
1:c828f7c35fae
you can use MCB for TJ3

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 wait_ms(10);
tajiri1999 0:def293862983 52 }
tajiri1999 0:def293862983 53
tajiri1999 0:def293862983 54 void motor(int ch,int power){
tajiri1999 0:def293862983 55
tajiri1999 0:def293862983 56 switch (ch){
tajiri1999 0:def293862983 57 case 0://right
tajiri1999 0:def293862983 58 if(power == 0){
tajiri1999 0:def293862983 59 InA1 = 0;
tajiri1999 0:def293862983 60 InB1 = 0;
tajiri1999 0:def293862983 61 pwm1 = 0;
tajiri1999 0:def293862983 62 }
tajiri1999 0:def293862983 63 else if(power == 999){
tajiri1999 0:def293862983 64 InA1 = 1;
tajiri1999 0:def293862983 65 InB1 = 1;
tajiri1999 0:def293862983 66 pwm1 = 1;
tajiri1999 0:def293862983 67 }
tajiri1999 0:def293862983 68 else if(power < 0){
tajiri1999 0:def293862983 69 InA1 = 0;
tajiri1999 0:def293862983 70 InB1 = 1;
tajiri1999 0:def293862983 71 pwm1 = -1*(float)power/100;
tajiri1999 0:def293862983 72 }
tajiri1999 0:def293862983 73 else{
tajiri1999 0:def293862983 74 InA1 = 1;
tajiri1999 0:def293862983 75 InB1 = 0;
tajiri1999 0:def293862983 76 pwm1 = (float)power/100;
tajiri1999 0:def293862983 77 }
tajiri1999 0:def293862983 78 break;
tajiri1999 0:def293862983 79 case 5://back
tajiri1999 0:def293862983 80 if(power == 0){
tajiri1999 0:def293862983 81 InA2 = 0;
tajiri1999 0:def293862983 82 InB2 = 0;
tajiri1999 0:def293862983 83 pwm2 = 0;
tajiri1999 0:def293862983 84 }
tajiri1999 0:def293862983 85 else if(power == 999){
tajiri1999 0:def293862983 86 InA2 = 1;
tajiri1999 0:def293862983 87 InB2 = 1;
tajiri1999 0:def293862983 88 pwm2 = 1;
tajiri1999 0:def293862983 89 }
tajiri1999 0:def293862983 90 else if(power < 0){
tajiri1999 0:def293862983 91 InA2 = 0;
tajiri1999 0:def293862983 92 InB2 = 1;
tajiri1999 0:def293862983 93 pwm2 = -1*(float)power/100;
tajiri1999 0:def293862983 94 }
tajiri1999 0:def293862983 95 else{
tajiri1999 0:def293862983 96 InA2 = 1;
tajiri1999 0:def293862983 97 InB2 = 0;
tajiri1999 0:def293862983 98 pwm2 = (float)power/100;
tajiri1999 0:def293862983 99 }
tajiri1999 0:def293862983 100 break;
tajiri1999 0:def293862983 101 case 2://left
tajiri1999 0:def293862983 102 if(power == 0){
tajiri1999 0:def293862983 103 InA3 = 0;
tajiri1999 0:def293862983 104 InB3 = 0;
tajiri1999 0:def293862983 105 pwm3 = 0;
tajiri1999 0:def293862983 106 }
tajiri1999 0:def293862983 107 else if(power == 999){
tajiri1999 0:def293862983 108 InA3 = 1;
tajiri1999 0:def293862983 109 InB3 = 1;
tajiri1999 0:def293862983 110 pwm3 = 1;
tajiri1999 0:def293862983 111 }
tajiri1999 0:def293862983 112 else if(power < 0){
tajiri1999 0:def293862983 113 InA3 = 0;
tajiri1999 0:def293862983 114 InB3 = 1;
tajiri1999 0:def293862983 115 pwm3 = -1*(float)power/100;
tajiri1999 0:def293862983 116 }
tajiri1999 0:def293862983 117 else{
tajiri1999 0:def293862983 118 InA3 = 1;
tajiri1999 0:def293862983 119 InB3 = 0;
tajiri1999 0:def293862983 120 pwm3 = (float)power/100;
tajiri1999 0:def293862983 121 }
tajiri1999 0:def293862983 122 break;
tajiri1999 0:def293862983 123 default:
tajiri1999 0:def293862983 124 break;
tajiri1999 0:def293862983 125 }
tajiri1999 0:def293862983 126 }