林立 发表于 2012-10-29 13:22:53

单按钮控制LED启停的扩展库问题

本帖最后由 林立 于 2012-10-29 13:35 编辑

通过一个按钮来控制一个LED灯的输出,实现按一下打开,再按一下关闭;为了更简单的编程,想把其编写成一个扩展库,以方便使用。
现有三个文档,扩展名分别为Button.h;Button.cpp,keywords.txt;

*.h 内容:
#ifndef Button_h
#define Button_h
class Button
{
private:
int Input_pin;
int Output_pin;
public:
void Button_Input(int Input_pin);
void Button_Output(int Output_pin);
void LED();
};
#endif
*.cpp 内容:
Button::Button_Input(int Input_pin)
{
pinMode(Input_pin,INPUT);
}
Button::Button_Output(int Output_pin)
{
pinMode(Output_pin,OUTPUT);
}

void Button:: LED()   //郁闷的,在英文状态下,:L居然是流汗!因此,在LED前面空了一个,大家注意用的时候要删掉空格哦!
{
if(digitalRead(Input_pin) == LOW){
delay(50);
if(digitalRead(Input_pin) == LOW){
      while(1){
      if(digitalRead(Input_pin) == HIGH){
       delay(50);
       if(digitalRead(Input_pin) == HIGH)
       break;
   }
    }
   }
}
if(keySum % 2 == 1){
digitalWrite((Output_pin),HIGH);}
else
digitalWrite((Output_pin),LOW);
}

*.txt 内容

LED KEYWORD1 //LED后面的空格是TAB的空格,虽然不知道到底是起什么作用,至少参考了好多地方都说要用TAB的空格。



目前遇到的问题就是,无法编译,不知道是哪里出了问题,希望大家帮忙解决一下!



Ansifa 发表于 2012-10-29 13:25:36

{:soso_e141:}Q_Button和Button混合乱用,自己检查清楚可以发现的错误再贴上来

public:
      Q_Button(int Input_Pin,int Output_pin);那又漏了函数定义

Ansifa 发表于 2012-10-29 13:29:24

还有void Button:LED()也要传入Input_Pin,Output_pin参数的

林立 发表于 2012-10-29 13:37:59

Ansifa 发表于 2012-10-29 13:25 static/image/common/back.gif
Q_Button和Button混合乱用,自己检查清楚可以发现的错误再贴上来

public:


程序已经重新改了一下,麻烦在看下呢!谢谢了

幻生幻灭 发表于 2012-10-29 18:26:29

官网已经有很多成熟的按键控制了,可以参考下,包括单击,双击等
http://www.arduino.cc/playground/Learning/ButtonLibrary
http://www.arduino.cc/playground/Code/Buttons
http://www.arduino.cc/playground/Code/Button

Randy 发表于 2012-10-29 18:56:21

如果自己不熟悉库的知识,还是建议第一选用官方的库!

qqiq 发表于 2012-10-29 22:42:02

本帖最后由 qqiq 于 2012-10-29 23:11 编辑


Button  是一个类,Button_Input/Output 是类函数,需要一个instance调用。

button.cpp里需要包含Arduino的头文件。

类实现(button.cpp) 里函数需要有返回值?(void)

keySum是从哪里来的?

暂时想到这么多。

#include "Button.h"

Button btn;


void setup(){
btn.Button_Input(3);
btn.Button_Output(13);
}

void loop(){
btn.LED();
}

Ansifa 发表于 2012-10-30 09:48:55

昨天已经写好的可以编译版本,大家可以参考下。当然,功能不一定能实现,只是架构写好了




页: [1]
查看完整版本: 单按钮控制LED启停的扩展库问题