极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14008|回复: 5

关于limit switch 的问题

[复制链接]
发表于 2013-7-17 16:00:14 | 显示全部楼层 |阅读模式
我正在学着怎么使用 限位开关。
然后程序大致是这么写的:

int state = digitalRead(8);

void setup(){
  pinMode(2,OUTPUT);
  pinMode(3,OUTPUT);
  pinMode(8,INPUT);
  static boolean state = LOW;
}

void loop(){
   
    digitalWrite(2,LOW);

    if(state == LOW)
    {
      digitalWrite(2,HIGH);
    }
}

出现的问题是这样子的,在pin 8 的变化可以检测到。但是pin 2 检测不到变化,即LED不会变化。
其实我觉得是ARDUINO的板子的问题。
有没有哪位前辈能告诉我哪里出问题了?
回复

使用道具 举报

发表于 2013-12-31 10:02:26 | 显示全部楼层
我也是刚看,还不是很懂
回复 支持 反对

使用道具 举报

发表于 2013-12-31 10:02:59 | 显示全部楼层
前面是不是要定义一下 2和3 数字输出口
回复 支持 反对

使用道具 举报

发表于 2013-12-31 10:21:21 | 显示全部楼层
逻辑有问题吧?前面定义了 state,后面没有人给他赋值改动什么的啊,他会一直是Low

void loop(){
   
    digitalWrite(2,LOW);

    if(state == LOW)
    {
      digitalWrite(2,HIGH);
    }
}
回复 支持 反对

使用道具 举报

发表于 2013-12-31 10:23:54 | 显示全部楼层
本帖最后由 Simon 于 2013-12-31 10:41 编辑

程序本身有问题,你的state变量只在setup中定义了一次,是LOW,后面根本没有变动过,你想Arduino怎么给你亮灯啊?还说是Arduino板子问题。

  1. int state;

  2. void setup(){
  3.   pinMode(2,OUTPUT);
  4.   pinMode(3,OUTPUT);
  5.   pinMode(8,INPUT);
  6.   static boolean state = LOW;
  7. }

  8. void loop(){
  9.     int state = digitalRead(8);

  10.     digitalWrite(2,LOW);

  11.     if(state == LOW)
  12.     {
  13.       digitalWrite(2,HIGH);
  14.     }
  15. }
复制代码


把代码改成这样看看吧。
回复 支持 反对

使用道具 举报

发表于 2014-1-17 15:57:52 | 显示全部楼层
Simon 发表于 2013-12-31 10:23
程序本身有问题,你的state变量只在setup中定义了一次,是LOW,后面根本没有变动过,你想Arduino怎么给你亮 ...

请问 static boolean 什么类型的数据数据呀 ?  这个只能定义一次是吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-5 17:54 , Processed in 0.034958 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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