程序错误求教(计数显示液晶屏上)
我用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的值不停的乱升,猜测是中断函数出现问题啦吧?求教,越详细越好,能指正 我其他程序的错误更好,我是小白 增大延时试一下 没什么反应,我不接2号IO口,值还是一直不停的变大,没有任何规律的变大 去掉pinMode(2,INPUT)试试。或者下拉 hustwhzl 发表于 2015-3-28 19:36 static/image/common/back.gif
没什么反应,我不接2号IO口,值还是一直不停的变大,没有任何规律的变大
Pin 空接时本来就会 Floating,
所以你要如楼下说的, 接个 10K 的电阻做下拉,
Pin 2 --------------------10K----------GND
|
|_____你的光电开关信号
注意光电开关模块的 GND 也要接 Arduino 的 GND
tsaiwn 发表于 2015-4-8 18:06 static/image/common/back.gif
Pin 空接时本来就会 Floating,
所以你要如楼下说的, 接个 10K 的电阻做下拉,
Pin 2 ---------------- ...
谢谢,果然是下拉电阻的原因,接上就不跳啦,但是不太明白的是光电开关要接到arduino共地。因为我的arduino电流有限,直接接1个液晶屏和1个光电开关电量不够,所以我就把光电开关另外接了个电源,只把信号输出引脚接到arduino板子上,如果不公地会有什么问题? hustwhzl 发表于 2015-4-11 10:31 static/image/common/back.gif
谢谢,果然是下拉电阻的原因,接上就不跳啦,但是不太明白的是光电开关要接到arduino共地。因为我的ardui ...
地被当参考电压 (0V),
两边如果不地对地接
两边的参考如差距太大就会判断错误
页:
[1]