查看: 276|回复: 3

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

[复制链接]
  • TA的每日心情
    郁闷
    2020-7-13 01:09
  • 签到天数: 3 天

    [LV.2]偶尔看看I

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

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

    用的是Adafruit_NeoPixel库

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

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

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

    ……以此类推



    使了几个方法都不行

    接线方式如图

    QQ截图20200711013757.jpg

  • TA的每日心情
    郁闷
    2020-7-13 01:09
  • 签到天数: 3 天

    [LV.2]偶尔看看I

     楼主| 发表于 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();


    }

  • TA的每日心情
    慵懒
    2020-8-11 09:23
  • 签到天数: 143 天

    [LV.7]常住居民III

    发表于 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. }
    复制代码

  • TA的每日心情
    郁闷
    2020-7-13 01:09
  • 签到天数: 3 天

    [LV.2]偶尔看看I

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

    谢谢,解决了~!
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    5分钟带你快速了解新一代开发板:M5STACK
    5分钟带你快速了解新一代
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    创客火首发无人机编队套装,开启不一样的人工智能教育
    创客火首发无人机编队套装
    2017年国务院发布《新一代人工智能发展规划》,提出要广泛开展人工智能科普活动,在中
    未见过的TFT屏,是什么驱动芯片?
    未见过的TFT屏,是什么驱
    这两块屏是从POS机里拆的,准备做几个锂电池组电压监测,在网上没找到资料,在这里问
    win10系统显示不出端口信息,编译后显示serial port not selected。
    win10系统显示不出端口信
    求各位哥哥帮忙,小兄弟实在不懂是win10系统的原因,还是需要安装什么驱动程式?具体
    更智能的电脑远程开关机-基于继电器
    更智能的电脑远程开关机-
    我只是刚刚入门的萌新,所以有不足请指出 先展示下 功能:开关机,开关机检测,
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表