极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9780|回复: 7

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

[复制链接]
发表于 2012-10-29 13:22:53 | 显示全部楼层 |阅读模式
本帖最后由 林立 于 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的空格。



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



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2012-10-29 13:25:36 | 显示全部楼层
{:soso_e141:}Q_Button和Button混合乱用,自己检查清楚可以发现的错误再贴上来

public:
        Q_Button(int Input_Pin,int Output_pin);那又漏了函数定义
回复 支持 反对

使用道具 举报

发表于 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
Q_Button和Button混合乱用,自己检查清楚可以发现的错误再贴上来

public:

程序已经重新改了一下,麻烦在看下呢!谢谢了
回复 支持 反对

使用道具 举报

发表于 2012-10-29 18:26:29 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2012-10-29 18:56:21 | 显示全部楼层
如果自己不熟悉库的知识,还是建议第一选用官方的库!
回复 支持 反对

使用道具 举报

发表于 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();
}
回复 支持 反对

使用道具 举报

发表于 2012-10-30 09:48:55 | 显示全部楼层
昨天已经写好的可以编译版本,大家可以参考下。当然,功能不一定能实现,只是架构写好了




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-2 15:13 , Processed in 0.048533 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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