pumpitup 发表于 2015-6-24 17:24:46

为什么Serial.begin(9600)不能删除

本帖最后由 pumpitup 于 2015-6-24 20:57 编辑

做了个遥控的车,使用nRF24L01收发信号,接收端(小车)代码如下。

#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>

// 一下定义接298的端口
int leftPwm = 3;
int leftForwardPin = 2;
int leftBackwardPin = 4;
int rightPwm = 6;
int rightForwardPin = 7;
int rightBackwardPin = 8;

// 记录之前的速度
int prelspd, prerspd;

// 原来使用298上的In1到In4,但后来发现pwm口不够用。于是改了,需要加工的说。
void moto(int lspd, int rspd)
{
int lf, lb, rf, rb;
if (lspd>0) {lf=1; lb=0; }
else if (lspd<0) {lf=0; lb=1; }
else {lf=0; lb=0;}
if (rspd>0) {rf=1; rb=0; }
else if (rspd<0) {rf=0; rb=1; }
else {rf=0; rb=0;}

digitalWrite(leftForwardPin, lf); digitalWrite(leftBackwardPin, lb);
analogWrite(leftPwm, abs(lspd));
digitalWrite(rightForwardPin, rf); digitalWrite(rightBackwardPin, rb);
analogWrite(rightPwm, abs(rspd));
}

void setup() {
Mirf.cePin = 9;
Mirf.csnPin = 10;
Mirf.spi = &MirfHardwareSpi;
Mirf.init();
Mirf.setRADDR((byte *)"Rec01");
Mirf.payload = sizeof(unsigned int);
Mirf.channel = 3;
Mirf.config();
pinMode(leftPwm, OUTPUT);
pinMode(leftForwardPin, OUTPUT);
pinMode(leftBackwardPin, OUTPUT);
pinMode(rightPwm, OUTPUT);
pinMode(rightForwardPin, OUTPUT);
pinMode(rightBackwardPin, OUTPUT);
Serial.begin(9600);
//Serial.println("I'm Receiver...");
}

unsigned int adata = 0, oldadata = 0;
void loop() {
    int x, y;
    signed char lspd, rspd;
    byte data;
    if(Mirf.dataReady())    //等待接收数据准备好
    {
      Mirf.getData(data);    //接收数据到data数组
      //data<左移8位与data并,重组数据。
      adata = (unsigned int)((data << 8) | data);
      //与上一次结果比较,避免相同结果刷屏,降低串口流量
      if(adata != oldadata)
      {
            oldadata = adata; //本次结果作为历史结果。
            lspd = data;
            rspd = data;
            //Serial.print("L");Serial.print(lspd);Serial.print(" R");Serial.println(rspd);
            moto(lspd, rspd);
      }
    }
}

pumpitup 发表于 2015-6-24 17:31:12

问题是这样。接在电脑上的时候,可以遥控。
但是拔下usb线,就不动了!

以为是Serial的问题,想全部删掉,结果begin(9600)删了后下载就会报错。说是ld.exe应用程序错误。

什么情况啊,要连线我还用个什么遥控啊啊。

pumpitup 发表于 2015-6-24 17:33:31

刚试了一下,只要接到一台usb有电的电脑上就可以,都不用进系统啊。
页: [1]
查看完整版本: 为什么Serial.begin(9600)不能删除