关于拓展库的问题-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4743|回复: 3

[已解决] 关于拓展库的问题

[复制链接]
发表于 2013-5-3 20:57 | 显示全部楼层 |阅读模式
我在做arduino的小车,给电子驱动写了一个拓展库,MotorCar.h代码如下:
/*******************************************************
履带车控制类库
*******************************************************/
#ifndef MotorCar_h
#define MotorCar_h



class MotorCar
{
    private:       //定义为私有
             int speedleftpin;   //定义控制左轮速度的引脚
             int speedrightpin;  //定义控制右轮速度的引脚
             int dirleftpin;     //定义控制左轮方向的引脚
             int dirrightpin;    //定义控制右轮方向的引脚
    public:       //定义为公有
    MotorCar(int slpin,int dlpin,int srpin,int drpin);  //构造函数
    void forward(int speed);               //前进函数
    void back(int speed);                  //后退函数
    void turnleft(int speed);              //左转函数
    void turnright(int speed);             //右转函数
    void turnleftorigin(int speed);        //原地左转函数
    void turnrightorigin(int speed);       //原地右转函数
    void stop();                           //停止函数



};
#endif   




MotorCar.cpp代码如下
#include <WProgram.h>
#include "MotorCar.h"


/************************************************************
MotorCar类构造函数
*************************************************************/

MotorCar::MotorCar(int slpin,int dlpin,int srpin,int drpin)
{
   speedleftpin=slpin;
   speedrightpin=srpin;
   dirleftpin=dlpin;
   dirrightpin=drpin;
   pinMode(speedleftpin,OUTPUT);
   pinMode(speedrightpin,OUTPUT);
   pinMode(dirleftpin,OUTPUT);
   pinMode(dirrightpin,OUTPUT);
}

/************************************************************
前进,后退,左转,右转,原地左转,原地右转,停止子函数
**********************************************************/
void MotorCar::forward(int speed)
{                      //引脚dirrightpin输出高电平,右轮前进
                      digitalWrite(dirrightpin,HIGH);

                      //引脚dirleftpin输出高电平,左轮前进
                      digitalWrite(dirleftpin,HIGH);

                      //引脚6输出PWM,PWM值由speed决定
                      analogWrite(speedrightpin,speed);

                       //引脚5输出PWM,PWM值由speed决定
                      analogWrite(speedleftpin,speed);
}

void MotorCar::back(int speed)
{                      //引脚dirrightpin输出低电平,右轮后退
                      digitalWrite(dirrightpin,LOW);

                      //引脚dirleftpin输出低电平,左轮后退
                      digitalWrite(dirleftpin,LOW);

                      //引脚speedrightpin输出PWM,PWM值由speed决定
                      analogWrite(speedrightpin,speed);

                       //引脚speedleftpin输出PWM,PWM值由speed决定
                      analogWrite(speedleftpin,speed);
}

void MotorCar::stop()
{               analogWrite(speedrightpin,0);
                analogWrite(speedleftpin,0);
}


void MotorCar::turnleft(int speed)
{                      //引脚dirrightpin输出高电平,右轮前进
                      digitalWrite(dirrightpin,HIGH);

                      //引脚speedrightpin输出PWM,PWM值由speed决定
                      analogWrite(speedrightpin,speed);

                       //引脚speedleftpin输出PWM,PWM值为0,表示不动
                      analogWrite(speedleftpin,0);
}

void MotorCar::turnright(int speed)
{                      //引脚dirleftpin输出高电平,右轮前进
                      digitalWrite(dirleftpin,HIGH);

                      //引脚speedleftpin输出PWM,PWM值由speed决定
                      analogWrite(speedleftpin,speed);

                       //引脚speedrightpin输出PWM,PWM值为0,表示不动
                      analogWrite(speedrightpin,0);
}

void MotorCar::turnleftorigin(int speed)
{                      //引脚dirrightpin输出高电平,右轮前进
                      digitalWrite(dirrightpin,HIGH);

                      //引脚dirleftpin输出低电平,左轮后退
                      digitalWrite(dirleftpin,LOW);

                      //引脚speedrightpin输出PWM,PWM值由speed决定
                      analogWrite(speedrightpin,speed);

                       //引脚speedleftpin输出PWM,PWM值由speed决定
                      analogWrite(speedleftpin,speed);
}

void MotorCar::turnrightorigin(int speed)
{                      //引脚dirrightpin输出低电平,右轮后退
                      digitalWrite(dirrightpin,LOW);

                      //引脚dirleftpin输出高电平,左轮前进
                      digitalWrite(dirleftpin,HIGH);

                      //引脚speedrightpin输出PWM,PWM值由speed决定
                      analogWrite(speedrightpin,speed);

                       //引脚speedleftpin输出PWM,PWM值由speed决定
                      analogWrite(speedleftpin,speed);
}

keywords.txt代码如下
MotorCar        KEYWORD1
forward                KEYWORD2
back                KEYWORD3
turnleft        KEYWORD4
turnright        KEYWORD5
turnleftorigin        KEYWORD6
turnrightorigin        KEYWORD7
stop                KEYWORD8

可是我在编译器里一旦输入turnrightorigin和turnleftorigin,就会闪烁,然后at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)这样的错误,求大神能否帮我解答下,谢谢啦








发表于 2013-5-4 00:55 | 显示全部楼层
什么叫“在编译器里一旦输入turnrightorigin和turnleftorigin”?
 楼主| 发表于 2013-5-4 15:32 | 显示全部楼层
奈何col 发表于 2013-5-4 00:55
什么叫“在编译器里一旦输入turnrightorigin和turnleftorigin”?

就是我在arduino.exe里写代码,只要写出turnrightorigin或者turnleftorigin,就出错了
 楼主| 发表于 2013-5-4 16:19 | 显示全部楼层
本帖最后由 请叫我根硕 于 2013-5-4 16:55 编辑
奈何col 发表于 2013-5-4 00:55
什么叫“在编译器里一旦输入turnrightorigin和turnleftorigin”?

现在我大概知道了,可能是我的keyword设置的太多了,我分别建了两个库,问题就解决了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-3 05:39 , Processed in 0.070991 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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