树莓3b 3色灯控制

树莓的板子到货比较久了,以前只把系统安装好,显示,nfs等配好了,买来的一堆传感 器只用过一个蜂鸣器,试了一下gpio的控制。后面扔下了。最近上班时间闲下来,再捡起来玩一把。

从传感器堆里看到一个三色灯,今天就玩这个了。

网上这种资料比较多,随便 找下就找到了。

按步就搬吧。

1.系统启动,直接接键盘鼠标。当成台电脑用。

2.联线 

硬件联接:
GND ---- GND
R   ---- 40
G   ---- 38
B   ---- 36

3.找到bcm里的blink.c,做好相应的修改编译。

4.执行

  灯一点都不响应,有点怪,引脚改的是RPI_GPIO_P1_20

 这儿好象不对,引脚图上看bcm应当对应的是20,21,16, 改了没影响。

 再改成RPI_GPIO_P1_40  ,这下编译不过,看来搞错了。再把头文件打开,真要怎么用。

打开bcm2835.h,看到了gpio定义。这下完全明白了,宏分为几个版本,我用的版本是3b,

那肯定用3b的宏。这下好了,改完测试,3色就闪开了。上个模块图,


后面再改了3色的不同操作,让灯闪得更好看了。

上源码:

// blink.c
//
// Example program for bcm2835 library
// Blinks a pin on an off every 0.5 secs
//
// After installing bcm2835, you can build this 
// with something like:
// gcc -o blink blink.c -l bcm2835
// sudo ./blink
//
// Or you can test it before installing with:
// gcc -o blink -I ../../src ../../src/bcm2835.c blink.c
// sudo ./blink
//
// Author: Mike McCauley
// Copyright (C) 2011 Mike McCauley
// $Id: RF22.h,v 1.21 2012/05/30 01:51:25 mikem Exp $


#include <bcm2835.h>
#include <stdio.h>


// Blinks on RPi Plug P1 pin 11 (which is GPIO pin 17)
#define R RPI_BPLUS_GPIO_J8_40
#define G RPI_BPLUS_GPIO_J8_38
#define B RPI_BPLUS_GPIO_J8_36


int main(int argc, char **argv)
{
    // If you call this, it will not actually access the GPIO
    // Use for testing
//    bcm2835_set_debug(1);


    if (!bcm2835_init())
      return 1;


    // Set the pin to be an output
    bcm2835_gpio_fsel(R, BCM2835_GPIO_FSEL_OUTP);
bcm2835_gpio_fsel(G, BCM2835_GPIO_FSEL_OUTP);
bcm2835_gpio_fsel(B, BCM2835_GPIO_FSEL_OUTP);


    // Blink
    while (1)
    {
// Turn it on
bcm2835_gpio_write(R, HIGH);
bcm2835_gpio_write(G, HIGH);
bcm2835_gpio_write(B, HIGH);

// wait a bit
bcm2835_delay(500);bcm2835_delay(500);
bcm2835_gpio_write(R, LOW);
bcm2835_gpio_write(G, HIGH);
bcm2835_gpio_write(B, HIGH);


bcm2835_delay(500);bcm2835_delay(500);
bcm2835_gpio_write(R, HIGH);
bcm2835_gpio_write(G, LOW);
bcm2835_gpio_write(B, HIGH);


bcm2835_delay(500);bcm2835_delay(500);
bcm2835_gpio_write(R, HIGH);
bcm2835_gpio_write(G, HIGH);
bcm2835_gpio_write(B, LOW);

// wait a bit
bcm2835_delay(500);bcm2835_delay(500);

// turn it off
bcm2835_gpio_write(R, LOW);
bcm2835_gpio_write(G, LOW);
bcm2835_gpio_write(B, LOW);

// wait a bit
bcm2835_delay(500);bcm2835_delay(500);
    }
    bcm2835_close();
    return 0;
}

只遇到一个问题,还不错。两个小时,中间还上了会儿网。这只是众多传感 器中的一个,热手用的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九世坛主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值