单按钮控制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的空格。
目前遇到的问题就是,无法编译,不知道是哪里出了问题,希望大家帮忙解决一下!
{:soso_e141:}Q_Button和Button混合乱用,自己检查清楚可以发现的错误再贴上来
public:
Q_Button(int Input_Pin,int Output_pin);那又漏了函数定义 还有void Button:LED()也要传入Input_Pin,Output_pin参数的 Ansifa 发表于 2012-10-29 13:25 static/image/common/back.gif
Q_Button和Button混合乱用,自己检查清楚可以发现的错误再贴上来
public:
程序已经重新改了一下,麻烦在看下呢!谢谢了 官网已经有很多成熟的按键控制了,可以参考下,包括单击,双击等
http://www.arduino.cc/playground/Learning/ButtonLibrary
http://www.arduino.cc/playground/Code/Buttons
http://www.arduino.cc/playground/Code/Button 如果自己不熟悉库的知识,还是建议第一选用官方的库! 本帖最后由 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();
} 昨天已经写好的可以编译版本,大家可以参考下。当然,功能不一定能实现,只是架构写好了
页:
[1]