Difference between revisions of "BakeBit - JoyStick"

From FriendlyELEC WiKi
Jump to: navigation, search
(特性)
(示例程序:UI Control via Joystick)
Line 24: Line 24:
 
|}
 
|}
  
== 示例程序:UI Control via Joystick ==
+
== Code Sample: UI Control via Joystick ==
  
这个项目实现一个简单的设置界面,并使用摇杆来操控界面上的元素,一个很实用的例子,在程序运行时,摇杆的上下是移动要操作的项目,左右用于更改设置。<br />
+
By running this code sample you will see a simple configuration window and you can use the joystick to navigate and change a configuration item’s setting.<br />
本示例需要配合[[BakeBit - OLED 128x64]]使用。
+
A [[BakeBit - OLED 128x64]] module is needed in this test case.
  
=== 硬件连接 ===
+
=== Hardware Connection ===
简单的将 摇杆 插入 A0接口,将 OLED 插入 I2C 接口,如下面这样:
+
Connect the joystick module to the NEO-Hub at A0 and the OLED module to the NEO-Hub at the I2C interface:
  
 
::{| class="wikitable"
 
::{| class="wikitable"
Line 38: Line 38:
 
|}
 
|}
  
=== 示例源代码 ===
+
=== Source Code ===
  
 
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
Line 145: Line 145:
 
[https://github.com/friendlyarm/BakeBit/blob/master/Software/Python/bakebit_prj_UIControl_via_Joystick.py Github]
 
[https://github.com/friendlyarm/BakeBit/blob/master/Software/Python/bakebit_prj_UIControl_via_Joystick.py Github]
  
=== 运行示例 ===
+
=== 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 install the BakeBit package.<br />
要运行示例程序,可以在开发板上进入 BakeBit/Software/Python目录,运行bakebit_prj_UIControl_via_Joystick.py:
+
Enter the "BakeBit/Software/Python" directory and run the "bakebit_prj_UIControl_via_Joystick.py" program:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
cd ~/BakeBit/Software/Python
 
cd ~/BakeBit/Software/Python
Line 154: Line 154:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
=== 运行结果 ===
+
=== Observation ===
  
程序运行时会在OLED上显示一个设置界面,上下拨动摇杆移动项目前面的光标,左右拨动更改设置,如下图所示:<br />
+
When the program runs a simple configuration window will be presented on the OLED. When you move the joystick up or down the cursor will move up or down to a configuration item. When you move the joystick left or right the item’s setting will be changed accordingly.<br />
 
[[File:UI Control via Joystick-Result.jpg |frameless|300px]]
 
[[File:UI Control via Joystick-Result.jpg |frameless|300px]]
  

Revision as of 16:03, 14 December 2016

查看中文

1 Introduction

JoyStick
  • The BakeBit - JoyStick is a joystick module. It consists of two Sliding rheostats. Its positional states can be measured as X and Y axis values as the calibrated resistance of the two potentiometers.

2 Hardware Spec

  • Standard 2.0mm pitch 4-Pin BakeBit Interface
  • Analog Output
  • PCB dimension(mm): 24 * 42

BakeBit - JoyStick

  • Pin Description:
Pin Description
GND Ground
5V 5V Supply Voltage
X X Axis Output
Y Y Axis Output

3 Code Sample: UI Control via Joystick

By running this code sample you will see a simple configuration window and you can use the joystick to navigate and change a configuration item’s setting.
A BakeBit - OLED 128x64 module is needed in this test case.

3.1 Hardware Connection

Connect the joystick module to the NEO-Hub at A0 and the OLED module to the NEO-Hub at the I2C interface:

UI Control via Joystick-1.jpg UI Control via Joystick-2.jpg

3.2 Source Code

import bakebit_128_64_oled as oled
import bakebit
import time
 
 
oled.init()                  #initialze SEEED OLED display
oled.clearDisplay()          #clear the screen and set start position to top left corner
oled.setNormalDisplay()      #Set display to normal mode (i.e non-inverse mode)
oled.setPageMode()           #Set addressing mode to Page Mode
 
# Uses two pins - one for the X axis and one for the Y axis
# This configuration means you are using port A0
xPin = 0
yPin = 1
bakebit.pinMode(xPin,"INPUT")
bakebit.pinMode(yPin,"INPUT")
 
texts = ["Wi-Fi"
    , "Bluetooth"
    , "Media Vol"
    , "Alarm Vol"
    , "FontSize"
    , "Brightness"
    , "Dim" ]
 
values = [True
    , False
    , 50
    , 50
    , 9
    , 80
    , 30 ]
 
opIndex = 0
m = int(1024.0/5)
while True:
    try:
        # Get X/Y coordinates
        x = bakebit.analogRead(xPin)
        y = bakebit.analogRead(yPin)
 
        oled.setTextXY(0,0)
        oled.putString("[Settings]")
 
        if x<m:
            # left
            print("left")
            if type(values[opIndex]) is int:
                values[opIndex]=values[opIndex]-1
                if values[opIndex]<0:
                    values[opIndex] = 0
            elif type(values[opIndex]) is bool:
                values[opIndex] = not values[opIndex]
 
        elif x>(1024-m):
            # right
            print("right")
            if type(values[opIndex]) is int:
                values[opIndex]=values[opIndex]+1
                if values[opIndex]>999:
                    values[opIndex] = 999
            elif type(values[opIndex]) is bool:
                values[opIndex] = not values[opIndex]
        elif y<m:
			opIndex = opIndex - 1
        elif y>(1024-m):
			opIndex = opIndex + 1
        elif opIndex<0:
			opIndex=6
        elif opIndex>6:
			opIndex=0
 
        for i in range(7):
            oled.setTextXY(0,i+1)
            valueStr = ""
            if type(values[i]) is int:
                valueStr = str(values[i])
            elif type(values[i]) is bool:
                if values[i]:
                    valueStr = "On"
                else:
                    valueStr = "Off"
            for j in range(3-len(valueStr)):
                valueStr = " " + valueStr
 
            title = texts[i]
            if len(title) > 10:
                title = title[:10]
 
            for j in range(10-len(title)):
                title = title + " "
 
            if opIndex == i:
                oled.putString("> " + title + " " + valueStr)
            else:
                oled.putString("  " + title + " " + valueStr)
    	print("x =", x, " y =", y, " opIndex=", opIndex)	
 
    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 install the BakeBit package.
Enter the "BakeBit/Software/Python" directory and run the "bakebit_prj_UIControl_via_Joystick.py" program:

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

3.4 Observation

When the program runs a simple configuration window will be presented on the OLED. When you move the joystick up or down the cursor will move up or down to a configuration item. When you move the joystick left or right the item’s setting will be changed accordingly.
UI Control via Joystick-Result.jpg

4 相关资料