2018-5-1 21:35:30 [显示全部楼层]
7371浏览
查看: 7371|回复: 2

[求助] 想用按键中断产生一个随机数点亮WS2812灯环

[复制链接]
请教大家一个Arduino问题,想用按键中断产生一个随机数点亮WS2812灯环,但每次都同时点亮多个是哪里问题。

#include <Adafruit_NeoPixel.h>
#define PIN 6
#define NUMPIXELS 16
Adafruit_NeoPixel strip = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_RGB + NEO_KHZ800);
int delayval = 1000;
volatile int state = LOW;

void setup() {
  // put your setup code here, to run once:
  strip.begin();
  strip.show();
  attachInterrupt(1, stateChange, CHANGE);
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
for(int i=0; i<16; i++)
    {
      for(int a=0; a<16; a++)
      {
        if(a == i) strip.setPixelColor(a, 5, 15, 0);
        else strip.setPixelColor(a,0);
        strip.show();
        }
        delay(1000);
      }
  }

void stateChange()
{
      int r = random(15);
      strip.setPixelColor(r, 5, 25, 0);

      strip.show();
      Serial.println(r);
      delay(5000);
}


二哈哈哈哈  中级技师

发表于 2019-10-22 14:11:38

因为你设置的是双边沿触发中断,相当于你按下会产生中断点亮一个灯,放开的时候也会产生中断,点亮一个灯。建议你将中断设置为,上升沿或下降沿触发,另外中断函数里面最好不要使用延时函数,里面内容尽量简短
回复

使用道具 举报

gada888  版主

发表于 2019-10-22 16:33:09

挺好的想法
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail