极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11490|回复: 6

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

[复制链接]
发表于 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的值不停的乱升,猜测是中断函数出现问题啦吧?求教,越详细越好,能指正 我其他程序的错误更好,我是小白
回复

使用道具 举报

发表于 2015-3-28 18:22:04 | 显示全部楼层
      增大延时试一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-28 19:36:39 | 显示全部楼层
没什么反应,我不接2号IO口,值还是一直不停的变大,没有任何规律的变大
回复 支持 反对

使用道具 举报

发表于 2015-4-6 20:31:42 | 显示全部楼层
去掉pinMode(2,INPUT)试试。或者下拉
回复 支持 反对

使用道具 举报

发表于 2015-4-8 18:06:48 | 显示全部楼层
hustwhzl 发表于 2015-3-28 19:36
没什么反应,我不接2号IO口,值还是一直不停的变大,没有任何规律的变大


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

注意光电开关模块的 GND 也要接 Arduino 的 GND
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-11 10:31:28 | 显示全部楼层
tsaiwn 发表于 2015-4-8 18:06
Pin 空接时本来就会 Floating,
所以你要如楼下说的, 接个 10K 的电阻做下拉,
Pin 2 ---------------- ...

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

使用道具 举报

发表于 2015-4-11 14:49:40 | 显示全部楼层
hustwhzl 发表于 2015-4-11 10:31
谢谢,果然是下拉电阻的原因,接上就不跳啦,但是不太明白的是光电开关要接到arduino共地。因为我的ardui ...



地被当参考电压 (0V),
两边如果不地对地接
两边的参考如差距太大就会判断错误
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-9 07:55 , Processed in 0.040521 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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