卓泰科技 发表于 2015-1-27 23:21:24

【JoyTag香蕉派学习】Banana Pi 1602 LCD 模块RGB LED的使用

话说老邓的模块上还带一枚RGB三色LED
论坛上小伙伴已经点亮之,看了一下,有些迷糊。
http://www.52pi.net/forum.php?mod=viewthread&tid=1382

不过咱有咱的笨方法:
首先找到哪个IO控制小灯
    #include <stdio.h>
    #include <wiringPi.h>
    #include <mcp23017.h>

    #define EXTEND_BASE 100

    int main (void)
    {
      wiringPiSetup( );
      mcp23017Setup( EXTEND_BASE, 0x20 );

      int i;
      for ( i = 0 ; i < 16 ; i++ )
      {
            pinMode( EXTEND_BASE + i, OUTPUT );
      }

      for (;;)
      {
            for( i = 0 ; i < 16; i++)
            {
                printf("%d\n", i);
                digitalWrite ( EXTEND_BASE + i, HIGH);
                delay (1000);
                digitalWrite ( EXTEND_BASE + i, LOW);
                delay (1000);
            }
      }
      return 0 ;
    }
代码很简单,我依次给每个IO高电平,然后打印当前IO值,就知道小灯和IO的对应关系了。
通过观察,得出对应关系如下:
13 绿
14 红
15 蓝

然后,控制点灯是不是就很简单了?
下边一个简单的代码,同时控制RGB亮灭来调色(算黑色熄灭在内,8色)
    #include <stdio.h>
    #include <wiringPi.h>
    #include <mcp23017.h>


    #define EXTEND_BASE 100

    int main (void)
    {

      wiringPiSetup( );
      mcp23017Setup( EXTEND_BASE, 0x20 );

      int i;
      for ( i = 0 ; i < 16 ; i++ )
      {
            pinMode( EXTEND_BASE + i, OUTPUT );
      }

      for (;;)
      {
            for( i = 0 ; i < 8; i++)
            {

                if(i&0b00000001)
                        digitalWrite ( EXTEND_BASE + 15, HIGH);
                if(i&0b00000010)
                        digitalWrite ( EXTEND_BASE + 13, HIGH);
                if(i&0b00000100)
                        digitalWrite ( EXTEND_BASE + 14, HIGH);

                delay(2000);
                digitalWrite ( EXTEND_BASE + 13, LOW);
                digitalWrite ( EXTEND_BASE + 14, LOW);
                digitalWrite ( EXTEND_BASE + 15, LOW);

            }
      }
    }

好了,小灯会依次按如下顺序闪亮:
黑(灭),蓝,绿,青,红,粉,黄,白

顺便提醒一句,亮瞎双眼啊。
我这篇文章全是盲打的。:'(


页: [1]
查看完整版本: 【JoyTag香蕉派学习】Banana Pi 1602 LCD 模块RGB LED的使用