lyx11111 发表于 2016-12-25 15:34:34

Microzone E6-A与arduino通信

题主在做4轮arduino小车,arduinomega sensor shield与DC motor driver通信, 目前是用串口发送指令。然而现在想用Microzone E6-A来控制小车,与arduino通信。。。。求电路插头配置图解。。。
另外,如果使用4码盘测速形成测速测坐标码盘的话,有木有大神指教。


表示愿意提供本人代码:
#define Speed1 14 //M1 Speed Control
#define Speed2 15//M2 Speed Control
#define Dir1 24   //M1 Direction Control
#define Dir2 27   //M2 Dirction Control
//int Dir3 = 20;
//int Dir4 = 21;


//analogwrite(),digitalwrite(),watch out!!
int counter=0;

void stop(void)                  //Stop
{
analogWrite(Speed1,0);
digitalWrite(Dir1,LOW);   
analogWrite(Speed2,0);   
digitalWrite(Dir2,LOW);   
}   
void advance(char a,char b)          //Move forward
{
analogWrite(Speed1,a);      //PWM Speed Control
digitalWrite(Dir1,HIGH);   
analogWrite(Speed2,b);   
digitalWrite(Dir2,HIGH);
}
void back (char a,char b)          //Move backward
{
analogWrite(Speed1,a);
digitalWrite(Dir1,LOW);   
analogWrite(Speed2,b);   
digitalWrite(Dir2,LOW);
}
void turn_L (char a,char b)             //Turn Left
{
analogWrite(Speed1,a);
digitalWrite(Dir1,LOW);   
analogWrite(Speed2,b);   
digitalWrite(Dir2,HIGH);
}
void turn_R (char a,char b)             //Turn Right
{
analogWrite (Speed1,a);
digitalWrite(Dir1,HIGH);   
analogWrite (Speed2,b);   
digitalWrite(Dir2,LOW);
}
void current_sense()                  // current sense and diagnosis
{
int val1=digitalRead(22);            
int val2=digitalRead(23);
if(val1==HIGH || val2==HIGH){
    counter++;
    if(counter==3){
      counter=0;
   Serial.println("watch out!");
    }
}
}

void setup(void)
{
int i;
for(i=24;i<=27;i++)
    pinMode(i, OUTPUT);
Serial.begin(9600);      //Set Baud Rate
Serial.println("Run keyboard control");
   analogWrite(Speed1,LOW);   
   analogWrite(Speed2,LOW);
pinMode(22,INPUT);
pinMode(23,INPUT);
}

void loop(void)
{
Serial.print('w');
delay(10000);

static unsigned long timePoint = 0;    // current sense and diagnosis,if you want to use this
   if(millis() - timePoint > 1000){       //function,please show it & don't forget to connect the IS pins to Arduino                                             
   current_sense();
   timePoint = millis();
   }
   
if(Serial.available()){
    char val = Serial.read();
    if(val != -1)
    {
      switch(val)
      {
      case 'w':// Forward
      advance (100,100);   //move forward
      break;
      case 's'://Back
      back (100,100);   //move back
      break;
      case 'a'://Turn Left
      turn_L (50,50);      
      break;      
      case 'd'://Turn Right
      turn_R (50,50);
      break;
      case 'z':
      Serial.println("66666!");
      break;
      case 'x':
      stop();
      break;
      }
    }
    else stop();
}

}

单片机菜鸟 发表于 2016-12-25 18:05:14

听起来很复杂哈哈哈只是路过
页: [1]
查看完整版本: Microzone E6-A与arduino通信