Difference between revisions of "BakeBit - OLED 128x64"

From FriendlyELEC WiKi
Jump to: navigation, search
(特性)
(示例程序(1):Display System Info)
Line 29: Line 29:
 
|}
 
|}
  
== 示例程序(1):Display System Info  ==
+
== Code Sample(1): Display System Info  ==
  
这个例子我们使用显示屏来显示系统信息,例如IP地址,存储空间和内存信息,CPU当前频率等。
+
When you run this code sample the system’s information will be listed on the OLED.
  
=== 硬件连接 ===
+
=== Hardware Connection ===
简单的将 OLED 模块插入随便一个 I2C 接口,如下面这样:
+
Connect the OLED module to the NEO-Hub’s I2C interface:
  
 
::{| class="wikitable"
 
::{| class="wikitable"
Line 42: Line 42:
 
|}
 
|}
  
=== 示例源代码 ===
+
=== Source Code ===
  
 
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
Line 151: Line 151:
 
[https://github.com/friendlyarm/BakeBit/blob/master/Software/Python/bakebit_prj_SystemInfo.py Github]
 
[https://github.com/friendlyarm/BakeBit/blob/master/Software/Python/bakebit_prj_SystemInfo.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_SystemInfo.py:
+
Enter the "BakeBit/Software/Python" directory and run the "bakebit_prj_SystemInfo.py" program:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
cd ~/BakeBit/Software/Python
 
cd ~/BakeBit/Software/Python
Line 160: Line 160:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
=== 运行结果 ===
+
=== Observation ===
  
效果如下图所示:<br />
+
This is what users expect to observe:<br />
 
[[File:OLED-SystemInfo.jpg |frameless|500px]]
 
[[File:OLED-SystemInfo.jpg |frameless|500px]]
  

Revision as of 15:25, 14 December 2016

查看中文

1 Introduction

OLED
  • The BakeBit - OLED is a monochromatic OLED module. The OLED is 0.96" and its resoltuion is 128 x 64. Its interface is I2C.
  • Users can set the I2C's address to either 0X3C or 0X3D and place two OLED modules on one I2C bus.

2 Hardware Spec

  • Standard 2.0mm pitch 4-Pin BakeBit I2C Interface
  • Resolution: 128 x 64
  • Color: blue
  • I2C's address configurable
  • PCB dimension(mm): 24 x 42

BakeBit - OLED_Top BakeBit - OLED_Bottom

  • Pin Description:
Pin Description
GND Ground
5V 5V Supply Voltage
SDA I2C-SDA
SCL I2C-SCL

3 Code Sample(1): Display System Info

When you run this code sample the system’s information will be listed on the OLED.

3.1 Hardware Connection

Connect the OLED module to the NEO-Hub’s I2C interface:

OLED-1.jpg OLED-2.jpg

3.2 Source Code

import time
import bakebit
import os
import psutil
from math import log
import multiprocessing
import platform
import socket
import bakebit_128_64_oled as oled
 
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
 
byteunits = ('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB')
def filesizeformat(value):
    exponent = int(log(value, 1024))
    return "%.1f %s" % (float(value) / pow(1024, exponent), byteunits[exponent])
 
memUsage = psutil.phymem_usage()
diskUsage = psutil.disk_usage('/')
 
oled.setTextXY(0,0)
oled.putString("%s" % socket.gethostbyname(socket.gethostname()))
 
oled.setTextXY(0,1)
oled.putString("Mem:%s" % filesizeformat(memUsage.total))
import time
import bakebit
import os
import psutil
from math import log
import multiprocessing
import platform
import socket
import bakebit_128_64_oled as oled
 
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
 
byteunits = ('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB')
def filesizeformat(value):
    exponent = int(log(value, 1024))
    return "%.1f %s" % (float(value) / pow(1024, exponent), byteunits[exponent])
 
memUsage = psutil.phymem_usage()
diskUsage = psutil.disk_usage('/')
 
oled.setTextXY(0,0)
oled.putString("%s" % socket.gethostbyname(socket.gethostname()))
 
oled.setTextXY(0,1)
oled.putString("Mem:%s" % filesizeformat(memUsage.total))
 
oled.setTextXY(0,2)
oled.putString("Usage:%d%%" % memUsage.percent)
 
oled.setTextXY(0,3)
oled.putString("Disk:%s" % filesizeformat(diskUsage.total))
 
oled.setTextXY(0,4)
oled.putString("Usage:%d%%" % diskUsage.percent)
 
oled.setTextXY(0,5)
oled.putString("CPU:%s" % platform.processor())
 
oled.setTextXY(0,6)
oled.putString("Cores:%d" % multiprocessing.cpu_count())
 
with open("/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq") as f:
	freq = int(f.readlines()[0])/1000
	freqStr = "%d MHz" % freq
	if freq > 1000:
		freqStr = "%.1f GHz" % (float(freq)/1000.0)
	oled.setTextXY(0,7)
	oled.putString("Freq:%s" % freqStr)
oled.setTextXY(0,2)
oled.putString("Usage:%d%%" % memUsage.percent)
 
oled.setTextXY(0,3)
oled.putString("Disk:%s" % filesizeformat(diskUsage.total))
 
oled.setTextXY(0,4)
oled.putString("Usage:%d%%" % diskUsage.percent)
 
oled.setTextXY(0,5)
oled.putString("CPU:%s" % platform.processor())
 
oled.setTextXY(0,6)
oled.putString("Cores:%d" % multiprocessing.cpu_count())
 
with open("/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq") as f:
	freq = int(f.readlines()[0])/1000
	freqStr = "%d MHz" % freq
	if freq > 1000:
		freqStr = "%.1f GHz" % (float(freq)/1000.0)
	oled.setTextXY(0,7)
	oled.putString("Freq:%s" % freqStr)

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_SystemInfo.py" program:

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

3.4 Observation

This is what users expect to observe:
OLED-SystemInfo.jpg

4 示例程序(2):UI Control via Joystick

该示例是配合BakeBit - JoyStick来实现的,可参考BakeBit - JoyStick页面。

5 相关资料