BakeBit - JoyStick

From FriendlyARM WiKi
Jump to: navigation, search



  • 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

BakeBit - JoyStick

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

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.

Hardware Connection

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

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

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
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:
        # Get X/Y coordinates
        x = bakebit.analogRead(xPin)
        y = bakebit.analogRead(yPin)
        if x<m:
            # left
            if type(values[opIndex]) is int:
                if values[opIndex]<0:
                    values[opIndex] = 0
            elif type(values[opIndex]) is bool:
                values[opIndex] = not values[opIndex]
        elif x>(1024-m):
            # right
            if type(values[opIndex]) is int:
                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:
        elif opIndex>6:
        for i in range(7):
            valueStr = ""
            if type(values[i]) is int:
                valueStr = str(values[i])
            elif type(values[i]) is bool:
                if values[i]:
                    valueStr = "On"
                    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)
                oled.putString("  " + title + " " + valueStr)
    	print("x =", x, " y =", y, " opIndex=", opIndex)	
    except IOError:
        print ("Error")


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 "" program:

cd ~/BakeBit/Software/Python
sudo python


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


Update Log


  • Released English version