极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13792|回复: 2

digitalRead的奇怪问题

[复制链接]
发表于 2016-1-13 13:59:46 | 显示全部楼层 |阅读模式
我使用Arduino 我想用4号io口控制一个led亮或者灭并且想读取当前这个io的值,所以我先调用 pinMode(led, OUTPUT);设置为输出模式,然后在Loop 里面监听串口输入 当接受到 ON 的时候调用 digitalWrite(led, HIGI); 再通过 pinMode(led, INPUT_PULLUP);设置为INPUT_PULLUP模式ledFlag = digitalRead(led);读取Serial.println(ledFlag);输出
                               
                               

出现的问题:这个ledFlag的值永远都是0

附上线路图

代码
[pre lang="arduino" line="1" file="main"]
const byte led = 4;
/*
Name:                Test.ino
Created:        2016/1/8 星期五 下午 11:51:47
Author:        Administrator
*/
int ledFlag = 0;


void setup()
{
        Serial.begin(9600);
        pinMode(led, OUTPUT);
}

String inString = "";
/*
        测试
*/
void loop()
{
        while (Serial.available() > 0)
        {
                char inChar = Serial.read();
                inString += (char)inChar;
                //延时函数用于等待输入字符完全进去接收缓冲区
                delay(10);
        }
        // 检查是否接收到数据,如果接收到,便输出该数据
        if (inString != "")
        {
                if (inString == "OFF")
                {
                        //if (ledFlag == HIGH)
                        {
                                ledFlag = LOW;
                                pinMode(led, OUTPUT);
                                digitalWrite(led, ledFlag);
                                delay(100);

                                pinMode(led, INPUT_PULLUP);
                                ledFlag = digitalRead(led);
                                Serial.println(ledFlag);
                        }
                }
               
                else if (inString == "ON")
                {
                        //if (ledFlag == LOW)
                        {
                                ledFlag = HIGH;
                                pinMode(led, OUTPUT);
                                digitalWrite(led, ledFlag);
                                delay(100);

                                pinMode(led, INPUT_PULLUP);
                               
                                ledFlag = digitalRead(led);
                                Serial.println(ledFlag);
                                delay(100);
                        }
                }
                inString = "";
        }
}[/code]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2016-1-14 08:15:48 | 显示全部楼层
“4”号口不是PWM口,是普通的IO。在数字口号前有“~”的,才可以做PWM输出,例如:~11。
回复 支持 反对

使用道具 举报

发表于 2016-2-16 09:53:54 | 显示全部楼层
增加一个接口,读取试试。
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-6 17:49 , Processed in 0.058039 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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