hustwhzl 发表于 2015-3-28 11:39:58

程序错误求教(计数显示液晶屏上)

我用arduino板子,L1602液晶屏,光电开关 试着做一个东东,把光电开关动作的次数显示在L1602屏上。
编写了如下程序,结果L1602屏幕是能显示,光电开关还没发出信号,计数的值自动累加。求教是什么问题?
#include <LiquidCrystal.h>                               //调用液晶显示的函数
LiquidCrystal a(12,10,11,5,4,3,1);                  //初始化L1602屏幕,是4位接线法(RS,RW,ENABLE,D4,D5,D6,D7)

int x=0;                                                          //用x来记录光电开关动作次数,初始值为0.
void setup()
{

a.begin(16,2);                                                    //初始化L1602屏幕
pinMode(2,INPUT);                                       //中断函数用2引脚控制
   attachInterrupt(0,z,RISING);                        //引脚为2号,中断函数是Z,引脚2的值由0变为1时(上升时)触发
   
}

void loop()
{

a.setCursor(1,0);                                        //光标位置
    a.print("次数=");                                    
    a.setCursor(8,0);                                    //光标位置
   
    a.print( x);
    delay(100);
}   
void z()                                          //这个就是中断函数,每次触发,X的值加1
{
   x=x+1;
}

我最终显示在L1602屏幕上的是      次数=XXXX,我的光电开关还没动作,这个XXXX的值不停的乱升,猜测是中断函数出现问题啦吧?求教,越详细越好,能指正 我其他程序的错误更好,我是小白

suoma 发表于 2015-3-28 18:22:04

      增大延时试一下

hustwhzl 发表于 2015-3-28 19:36:39

没什么反应,我不接2号IO口,值还是一直不停的变大,没有任何规律的变大

萧芸凤 发表于 2015-4-6 20:31:42

去掉pinMode(2,INPUT)试试。或者下拉

tsaiwn 发表于 2015-4-8 18:06:48

hustwhzl 发表于 2015-3-28 19:36 static/image/common/back.gif
没什么反应,我不接2号IO口,值还是一直不停的变大,没有任何规律的变大


Pin 空接时本来就会 Floating,
所以你要如楼下说的, 接个 10K 的电阻做下拉,
Pin 2 --------------------10K----------GND
   |
   |_____你的光电开关信号

注意光电开关模块的 GND 也要接 Arduino 的 GND

hustwhzl 发表于 2015-4-11 10:31:28

tsaiwn 发表于 2015-4-8 18:06 static/image/common/back.gif
Pin 空接时本来就会 Floating,
所以你要如楼下说的, 接个 10K 的电阻做下拉,
Pin 2 ---------------- ...

谢谢,果然是下拉电阻的原因,接上就不跳啦,但是不太明白的是光电开关要接到arduino共地。因为我的arduino电流有限,直接接1个液晶屏和1个光电开关电量不够,所以我就把光电开关另外接了个电源,只把信号输出引脚接到arduino板子上,如果不公地会有什么问题?

tsaiwn 发表于 2015-4-11 14:49:40

hustwhzl 发表于 2015-4-11 10:31 static/image/common/back.gif
谢谢,果然是下拉电阻的原因,接上就不跳啦,但是不太明白的是光电开关要接到arduino共地。因为我的ardui ...



地被当参考电压 (0V),
两边如果不地对地接
两边的参考如差距太大就会判断错误
页: [1]
查看完整版本: 程序错误求教(计数显示液晶屏上)