求助多个开关控制一条WS2812方法-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2419|回复: 4

[已解决] 求助多个开关控制一条WS2812方法

[复制链接]
发表于 2020-7-11 01:39 | 显示全部楼层 |阅读模式
本帖最后由 wlwlka 于 2020-7-11 18:48 编辑

本人已经写好不同的VIOD的模式

用的是Adafruit_NeoPixel库

但现在需要三个不同的开关实现切换不同模式,开关都是自锁的

例如RED(),GREED(),BLUE()三个模式,
按下开关ARED(),再按关RED()

按下开关BGREED(),再按关GREED()

……以此类推



使了几个方法都不行

接线方式如图

QQ截图20200711013757.jpg

 楼主| 发表于 2020-7-11 01:43 | 显示全部楼层
#include <Adafruit_NeoPixel.h>

#ifdef __AVR__
#include <avr/power.h>
#endif
#define BUTTON_PIN0   A0
#define BUTTON_PIN4   A4
#define BUTTON_PIN7   A7
#define PIXEL_PIN    9
#define PIXEL_COUNT 60
int pixelFormat = NEO_GRB + NEO_KHZ800;
Adafruit_NeoPixel strip(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);


void setup() {
  pinMode(A0, INPUT);
  pinMode(A4, INPUT);
pinMode(A7, INPUT);
pinMode(9, OUTPUT);

Serial.begin(9600);

#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
  clock_prescale_set(clock_div_1);
#endif
  
  strip.begin();
  strip.show();     
  strip.setBrightness(100);
delay(500);
}

void loop() {

RED() ;
GREED();
BLUE();
}


void RED() {


strip.fill(strip.Color(255, 0,  0));
strip.show();


}
void GREED() {


strip.fill(strip.Color(0, 255,  0));
strip.show();

}
void BLUE() {


strip.fill(strip.Color(0, 0, 255));
strip.show();


}

发表于 2020-7-11 11:24 | 显示全部楼层
本帖最后由 王尼玛1 于 2020-7-11 11:29 编辑
  1. <div class="blockcode"><blockquote>
  2. #include <Adafruit_NeoPixel.h>

  3. #ifdef __AVR__
  4. #include <avr/power.h>
  5. #endif
  6. #define BUTTON_PIN2   2
  7. #define BUTTON_PIN3   3
  8. #define BUTTON_PIN4   4
  9. #define PIXEL_PIN    9
  10. #define PIXEL_COUNT 60
  11. int pixelFormat = NEO_GRB + NEO_KHZ800;
  12. Adafruit_NeoPixel strip(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);


  13. void setup() {
  14.   pinMode(2, INPUT_PULLUP);
  15.   pinMode(3, INPUT_PULLUP);
  16.   pinMode(4, INPUT_PULLUP);
  17.   pinMode(9, OUTPUT);

  18.   Serial.begin(9600);

  19. #if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
  20.   clock_prescale_set(clock_div_1);
  21. #endif

  22.   for (int i = 0; i < PIXEL_COUNT; i++)
  23.   {
  24.     strip.setPixelColor(i, strip.Color(0, 0,  0));
  25.     strip.show();
  26.   }
  27.   delay(500);
  28. }

  29. void loop() {

  30.   if (digitalRead(BUTTON_PIN2) == 0)
  31.     RED() ;

  32.   else if (digitalRead(BUTTON_PIN3) == 0)
  33.     GREED();

  34.   else if (digitalRead(BUTTON_PIN4) == 0)
  35.     BLUE();
  36.   else {
  37.     for (int i = 0; i < PIXEL_COUNT; i++)
  38.     {
  39.       strip.setPixelColor(i, strip.Color(0, 0,  0));
  40.       strip.show();
  41.     }
  42.   }
  43. }


  44. void RED() {

  45.   for (int i = 0; i < PIXEL_COUNT; i++)
  46.   {
  47.     strip.setPixelColor(i, strip.Color(255, 0,  0));
  48.     strip.show();
  49.   }

  50. }
  51. void GREED() {

  52.   for (int i = 0; i < PIXEL_COUNT; i++)
  53.   {
  54.     strip.setPixelColor(i, strip.Color(0, 255,  0));
  55.     strip.show();
  56.   }

  57. }
  58. void BLUE() {


  59.   for (int i = 0; i < PIXEL_COUNT; i++)
  60.   {
  61.     strip.setPixelColor(i, strip.Color(0, 0,  255));
  62.     strip.show();
  63.   }



  64. }
复制代码

 楼主| 发表于 2020-7-11 18:12 | 显示全部楼层
本帖最后由 wlwlka 于 2020-7-11 18:20 编辑

谢谢,解决了~!
发表于 2022-7-27 11:29 | 显示全部楼层

我也遇到同样问题,谢谢大神
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-30 00:13 , Processed in 0.108500 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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