czh007007 发表于 2013-7-17 16:00:14

关于limit switch 的问题

我正在学着怎么使用 限位开关。
然后程序大致是这么写的:

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的板子的问题。
有没有哪位前辈能告诉我哪里出问题了?

Roger_Gao 发表于 2013-12-31 10:02:26

我也是刚看,还不是很懂

Roger_Gao 发表于 2013-12-31 10:02:59

前面是不是要定义一下 2和3 数字输出口

zoologist 发表于 2013-12-31 10:21:21

逻辑有问题吧?前面定义了 state,后面没有人给他赋值改动什么的啊,他会一直是Low

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

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

Simon 发表于 2013-12-31 10:23:54

本帖最后由 Simon 于 2013-12-31 10:41 编辑

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

int state;

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

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

    digitalWrite(2,LOW);

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

把代码改成这样看看吧。

yu315625 发表于 2014-1-17 15:57:52

Simon 发表于 2013-12-31 10:23 static/image/common/back.gif
程序本身有问题,你的state变量只在setup中定义了一次,是LOW,后面根本没有变动过,你想Arduino怎么给你亮 ...

请问 static boolean 什么类型的数据数据呀 ?这个只能定义一次是吗?
页: [1]
查看完整版本: 关于limit switch 的问题