查看: 507|回复: 4

[未解决] 新手求助---电位器控制LED灯的问题

[复制链接]

该用户从未签到

发表于 2019-7-21 15:49 | 显示全部楼层 |阅读模式
各位大虾,求教一下,万分感激~
环境:UNO主板,ARDUINO  1.8.1
想法:采用面包板连接10个LED灯,通过电位器连接13号端口,想通过电位器调节变化,控制10个灯中若干个点亮(例如调节到最小灯都不亮,调到最大,所有灯都亮;调到中间,一半灯亮)
测试结果:不管电位器如何转动,始终是1号灯亮,其他灯都不亮。
连接说明:端口1~10号分别连接LED灯和电阻;电位器(三脚)左右脚连接5V和GND,中脚连接端口13
程序如下:

Int LEDCount=10                                           //共有10个LED灯

int LEDPins[]={0,1,2,3,4,5,6,7,8,9,10};                 //端口1~10连接LED灯

int x=13;                                                         //端口13连接电位器


void setup() {                                                  //初始化

for(int thisLED=1;thisLED<=LEDCount;thisLED++)

{

pinMode(LEDPins[thisLED],OUTPUT);  }

}


void loop() {                                                    //主循环

int sensorReading=analogRead(x);                   //读取电位器的值

int LEDLevel=map(sensorReading,0,1023,1,10);//把值转化成1~10

int num;

for(num=1;num<=10;num++){                     //根据电位器的值点亮对应盏LED灯

if(num<=LEDLevel){

   digitalWrite(LEDPins[num],HIGH);}

  else{

   digitalWrite(LEDPins[num],LOW);

    }

  }

  }


  • TA的每日心情
    擦汗
    2019-7-29 00:08
  • 签到天数: 47 天

    [LV.5]常住居民I

    发表于 2019-7-21 16:39 | 显示全部楼层
    13脚是数字脚,不能用于检测电位器电压。

    对于 UNO,A0-A5 才是数字/模拟混合脚,可以输入电压

    该用户从未签到

     楼主| 发表于 2019-7-21 22:29 | 显示全部楼层
    谢谢谢谢~赶紧小本子记下来。我这段程序参考教材,一开始电位器输入的是A0,但是,不知道为何,始终是亮第一个LED灯,后来换了A5,亮第三和第四个灯。电位器随便怎么转都没有任何变化。
    请教大虾,是否我的连接还有别的疏忽或者错误啊?
  • TA的每日心情
    开心
    2019-9-5 16:28
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2019-11-24 21:00 | 显示全部楼层
    int LEDCount=10;                                          //共有10个LED灯

    int LEDPins[]={0,1,2,3,4,5,6,7,8,9,10};                 //端口1~10连接LED灯

    int x=A0;                                                         //端口13连接电位器


    void setup() {                                                  //初始化
    Serial.begin(9600);
    for(int thisLED=1;thisLED<=LEDCount;thisLED++)

    {

    pinMode(LEDPins[thisLED],OUTPUT);  }

    }


    void loop() {                                                    //主循环

    int sensorReading=analogRead(x);                   //读取电位器的值

    int LEDnum=map(sensorReading,0,1023,1,10);//把值转化成1~10

    int num;

    for(num=1;num<=10;num++){                     //根据电位器的值点亮对应盏LED灯

    if(num<=LEDnum){

       digitalWrite(LEDPins[num],HIGH);}
      else{

       digitalWrite(LEDPins[num],LOW);

        }
    Serial.println(LEDnum);
      }
  • TA的每日心情
    开心
    2019-9-5 16:28
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2019-11-24 21:01 | 显示全部楼层
    这个可以,这么长时间了,可能版主已经忘了,但是我希望对别人有帮助
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    [限时福利]5分钟带你快速了解新一代开发板:M5STACK
    [限时福利]5分钟带你快速
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    Arduino四则混合运算计算器
    Arduino四则混合运算计算
    #由于时间问题,再加上东西刚刚做出来过于兴奋导致发帖太着急,帖子暂时没写完
    【干货分享】mega2560原理图PCB图纸altium designer18
    【干货分享】mega2560原理
    分享一下mega2560的板子 AD版本 **** 本内容被作者隐藏 **** ergo
    M5StickC平衡机器人
    M5StickC平衡机器人
    M5StickC内置了SH200Q/MPU6886,也就是加速度计和陀螺仪 ,添加驱动板和小电机就可以
    利用M5StickC做一辆迷你遥控车
    利用M5StickC做一辆迷你遥
    原文作者:HomeMadeGarbage 这辆小车使用Blynk来进行控制,M5StickC会建立一个"M5Sti
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表