当盾牌附加时,Arduino不接收串行数据

时间:2014-03-26 21:16:32

标签: c serial-port arduino

我有nexus duino 3WD,并尝试进行串行通信来移动机器人。我必须删除盾牌才能上传草图代码。这是我的草图:

#include <fuzzy_table.h>
#include <PID_Beta6.h>

#include <PinChangeInt.h>
#include <PinChangeIntConfig.h>

#include <MotorWheel.h>
#include <Omni3WD.h>

#include <EEPROM.h>

#define _NAMIKI_MOTOR    //for Namiki 22CL-103501PG80:1


/*******************************************/

int incoming = 0;

int speed = 100;

// Motors

irqISR(irq1,isr1);
MotorWheel wheel1(9,8,6,7,&irq1);        // Pin9:PWM, Pin8:DIR, Pin6:PhaseA, Pin7:PhaseB

irqISR(irq2,isr2);
MotorWheel wheel2(10,11,14,15,&irq2);    // Pin10:PWM, Pin11:DIR, Pin14:PhaseA, Pin15:PhaseB

irqISR(irq3,isr3);
MotorWheel wheel3(3,2,4,5,&irq3);        // Pin3:PWM, Pin2:DIR, Pin4:PhaseA, Pin5:PhaseB

Omni3WD Omni(&wheel1,&wheel2,&wheel3);

/******************************************/

void setup() {
  Serial.begin(38400);
  Serial.println("setup");

  TCCR1B=TCCR1B&0xf8|0x01;    // Pin9,Pin10 PWM 31250Hz
  TCCR2B=TCCR2B&0xf8|0x01;    // Pin3,Pin11 PWM 31250Hz

  Omni.PIDEnable(0.26,0.02,0,10);
}

/****************************************/
void loop() {
  if(Serial.available() > 0) {
    incoming = Serial.read();
    Serial.print(incoming);
    if(incoming==0) {
      Omni.setCarStop();
    } else if(incoming==1) {
      Omni.setCarAdvance(speed);
    } else if(incoming==2) {
      Omni.setCarRotateLeft(speed);
    } else if(incoming==3) {
      Omni.setCarRotateRight(speed);
    }
  }
  Omni.PIDRegulate();
}

我尝试使用USB线从串行监视器和PC应用程序发送数据。当没有连接盾时,我可以发送数据并从arduino接收反馈。但是当屏蔽被连接时,似乎arduino没有接收数据,RX led闪光但不是TX led,得到了设置&#39;文本输出所以arduino可以发送数据到PC。其他的事情是我只能使用38400波特率,否则输出将是加密的。

我不确定我的代码是否错误?可能是设备电源问题?

1 个答案:

答案 0 :(得分:0)

如果您将跳线从RS-485更改为蓝牙,就像在此处所说http://www.dfrobot.com/wiki/index.php/Arduino_I/O_Expansion_Shield_(SKU:_DFR0014) 那么一切都会好起来的。上传到电路板而不移除屏蔽可能仍然是一个问题,声纳可能无法工作,但至少你将能够通过电路板读取序列。