Difference between revisions of "BakeBit - LED Bar"

From FriendlyELEC WiKi
Jump to: navigation, search
(特性)
(示例程序(1):LED Bar)
Line 26: Line 26:
 
|}
 
|}
  
== 示例程序(1):LED Bar ==
+
== Code Sample(1): LED Bar ==
  
这个项目实现类拟音量调节的效果,用到电位器模块和LED Bar。<br />
+
By running this code sample users can adjust the LED bar with the rotary angle sensor module.<br />
本示例需要配合[[BakeBit - Rotary Angle Sensor]]使用。
+
A [[BakeBit - Rotary Angle Sensor]] module is needed in this test case.
  
=== 硬件连接 ===
+
=== Hardware Connection ===
简单的将 LED Bar 模块插入 D3 接口,将 电位器 插入 A0 接口,如下面这样:
+
Connect the LED Bar module to the NEO-Hub at D3 and the rotary angle sensor module to the NEO-Hub at A0:
  
 
::{| class="wikitable"
 
::{| class="wikitable"
Line 40: Line 40:
 
|}
 
|}
  
=== 示例源代码 ===
+
=== Source Code ===
  
 
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
Line 130: Line 130:
  
  
=== 运行示例 ===
+
=== Run Code Sample ===
 
   
 
   
假设你已经参考[http://wiki.friendlyarm.com/bakebit bakebit教程]安装了BakeBit源代码,<br />
+
Before you run the code sample you need to follow the steps in [http://wiki.friendlyarm.com/bakebit bakebit tutorial] to intall the BakeBit package.<br />
要运行示例程序,可以在开发板上进入 BakeBit/Software/Python目录,运行bakebit_prj_LEDBar_And_RotaryAngleSensor.py:
+
Enter the "BakeBit/Software/Python" directory and run the "bakebit_prj_LEDBar_And_RotaryAngleSensor.py" program:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
cd ~/BakeBit/Software/Python
 
cd ~/BakeBit/Software/Python
Line 139: Line 139:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
=== 运行结果 ===
+
=== Observation ===
 
+
旋转电位器,LED Bar上被点亮的LED个数将根据你的操作角度而进行变化。
+
  
 +
When you rotate the rotary angle sensor module the LEDs on the LED Bar will be turned on or off.
  
 
== 示例程序(2):Smart Lighting ==
 
== 示例程序(2):Smart Lighting ==

Revision as of 08:36, 13 December 2016

查看中文

1 Introduction

LED Bar
  • The BakeBit - LED-Bar is a multiple-LED module. It has five LEDs and each LED is controlled by a WS2812 chip.
  • These five LEDs are in series connection.

2 Hardware Spec

  • Standard 2.0mm pitch 4-Pin BakeBit Interface
  • Multi-color R, G, B LED
  • True Color

BakeBit - LED Bar

  • Pin Description:
Pin Description
GND Ground
5V 5V Supply Voltage
NC Not Connected
SIG Signal

3 Code Sample(1): LED Bar

By running this code sample users can adjust the LED bar with the rotary angle sensor module.
A BakeBit - Rotary Angle Sensor module is needed in this test case.

3.1 Hardware Connection

Connect the LED Bar module to the NEO-Hub at D3 and the rotary angle sensor module to the NEO-Hub at A0:

LED Bar-1.jpg LED Bar-2.jpg

3.2 Source Code

import time
import bakebit
import random
 
# Connect the BakeBit LED Bar to digital port D3
# DI,DCKI,VCC,GND
ledbar = 3
 
# Connect the BakeBit Rotary Angle Sensor to analog port A0
# SIG,NC,VCC,GND
potentiometer = 0
 
# Reference voltage of ADC is 5v
adc_ref = 5
 
# Vcc of the bakebit interface is normally 5v
bakebit_vcc = 5
 
# Full value of the rotary angle is 360 degrees, as per it's specs (0 to 360)
full_angle = 360
 
bakebit.pinMode(potentiometer,"INPUT")
bakebit.pinMode(ledbar,"OUTPUT")
time.sleep(1)
 
# LED Bar methods
# bakebit.bakeBitLedBar_Init(pin, chipset, numOfLED)
# bakebit.bakeBitLedBar_Release(pin)
# bakebit.bakeBitLedBar_Show(pin,colorHigh,colorLow)
 
bakebit.bakeBitLedBar_Init(ledbar, 0, 5)
time.sleep(.5)
 
old_color = 0
while True:
    try:
        # Read sensor value from potentiometer
        sensor_value = bakebit.analogRead(potentiometer)
 
        # Calculate voltage
        voltage = round((float)(sensor_value) * adc_ref / 1023, 2)
 
        # Calculate rotation in degrees (0 to 360)
        degrees = round((voltage * full_angle) / bakebit_vcc, 2)
        print("sensor_value = %d voltage = %.2f degrees = %.1f" % (sensor_value, voltage, degrees))
 
        color16bit = 0
        if degrees > 0:
            color16bit = color16bit | bakebit.Green
        if degrees > 72:
            color16bit = color16bit | (bakebit.Green<<3)
        if degrees > 144:
            color16bit = color16bit | (bakebit.Green << 6)
        if degrees > 216:
            color16bit = color16bit | (bakebit.Yellow << 9)
        if degrees > 288:
            color16bit = color16bit | (bakebit.Red << 12)
        if degrees == 360:
            color16bit = 0
            color16bit = color16bit | bakebit.Red
            color16bit = color16bit | (bakebit.Red << 3)
            color16bit = color16bit | (bakebit.Red << 6)
            color16bit = color16bit | (bakebit.Red << 9)
            color16bit = color16bit | (bakebit.Red << 12)
 
        if color16bit == old_color:
            continue
        old_color = color16bit
 
        lowBits = color16bit & 255
        highBits = (color16bit & (255<<8))>>8
        print("%s %s" % ('{0:08b}'.format(highBits), '{0:08b}'.format(lowBits)))
        bakebit.bakeBitLedBar_Show(ledbar, highBits, lowBits)
        time.sleep(.2)
 
    except KeyboardInterrupt:
        bakebit.bakeBitLedBar_Release(ledbar)
        time.sleep(.2)
        break
    except IOError:
        print ("Error")

Github


3.3 Run Code Sample

Before you run the code sample you need to follow the steps in bakebit tutorial to intall the BakeBit package.
Enter the "BakeBit/Software/Python" directory and run the "bakebit_prj_LEDBar_And_RotaryAngleSensor.py" program:

cd ~/BakeBit/Software/Python
sudo python bakebit_prj_LEDBar_And_RotaryAngleSensor.py

3.4 Observation

When you rotate the rotary angle sensor module the LEDs on the LED Bar will be turned on or off.

4 示例程序(2):Smart Lighting

该示例利用BakeBit - Light Sensor亮度传感器,聪明地控制灯光(灯用LED Bar来模拟),环境越暗就让灯越亮,环境亮度足够时,就将灯变暗或者熄灭。
该示例是配合BakeBit - Light Sensor来实现的,可参考BakeBit - Light Sensor页面。

5 相关资料