Difference between revisions of "BakeBit - JoyStick"
From FriendlyELEC WiKi
(→Introduction) |
(→特性) |
||
Line 5: | Line 5: | ||
* 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. | * 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. | ||
− | == | + | ==Hardware Spec== |
− | * | + | * Standard 2.0mm pitch 4-Pin BakeBit Interface |
− | * | + | * Analog Output |
− | * | + | * PCB dimension(mm): 24 * 42 |
[[File:BakeBit - JoyStick_PCB.png | frameless|350px|BakeBit - JoyStick]] | [[File:BakeBit - JoyStick_PCB.png | frameless|350px|BakeBit - JoyStick]] | ||
− | * | + | * Pin Description: |
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
− | | | + | |Pin || Description |
|- | |- | ||
− | |GND || | + | |GND || Ground |
|- | |- | ||
− | |5V || | + | |5V || 5V Supply Voltage |
|- | |- | ||
− | |X || | + | |X || X Axis Output |
|- | |- | ||
− | |Y || | + | |Y || Y Axis Output |
|} | |} | ||
+ | |||
== 示例程序:UI Control via Joystick == | == 示例程序:UI Control via Joystick == | ||
Revision as of 15:58, 14 December 2016
Contents
1 Introduction
- 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
- Pin Description:
Pin | Description |
GND | Ground |
5V | 5V Supply Voltage |
X | X Axis Output |
Y | Y Axis Output |
3 示例程序:UI Control via Joystick
这个项目实现一个简单的设置界面,并使用摇杆来操控界面上的元素,一个很实用的例子,在程序运行时,摇杆的上下是移动要操作的项目,左右用于更改设置。
本示例需要配合BakeBit - OLED 128x64使用。
3.1 硬件连接
简单的将 摇杆 插入 A0接口,将 OLED 插入 I2C 接口,如下面这样:
3.2 示例源代码
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")
3.3 运行示例
假设你已经参考bakebit教程安装了BakeBit源代码,
要运行示例程序,可以在开发板上进入 BakeBit/Software/Python目录,运行bakebit_prj_UIControl_via_Joystick.py:
cd ~/BakeBit/Software/Python sudo python bakebit_prj_UIControl_via_Joystick.py
3.4 运行结果
程序运行时会在OLED上显示一个设置界面,上下拨动摇杆移动项目前面的光标,左右拨动更改设置,如下图所示:
4 相关资料
- [Schematic](BakeBit - JoyStick.pdf)
- [BakeBit Github项目](https://github.com/friendlyarm/BakeBit)
- [BakeBit Starter Kit手册](http://wiki.friendlyarm.com/bakebit/bakebit_starter_kit_manual_cn.pdf)