极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11141|回复: 1

Microzone E6-A与arduino通信

[复制链接]
发表于 2016-12-25 15:34:34 | 显示全部楼层 |阅读模式
题主在做4轮arduino小车,arduino  mega 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 | 显示全部楼层
听起来很复杂  哈哈哈  只是路过
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-27 00:10 , Processed in 0.043110 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表