index
原文:https://pinpong.readthedocs.io/zh_CN/latest/2.pinpong%E7%A4%BA%E4%BE%8B/index3.html
扩展库示例
-
扩展库示例中的模块通过libs库导入,
-
可通过终端输入pinpong查询支持列表和使用方法
-
从安装目录下的examples文件夹中可以找到所有示例程序代码
2-05-lcd1602:1602显示屏
# -*- coding: UTF-8 -*-
#实验效果:I2C LCD1602控制
#接线:使用windows或linux电脑连接一块arduino主控板,LCD1602显示屏接到I2C口SCL及SDA
import time
from pinpong.board import Board
from pinpong.libs.lcd1602 import LCD1602_I2C #从libs中导入lcd1602_i2c库
Board("uno").begin() #初始化,选择板型(uno、leonardo、xugu)和端口号,不输入端口号则进行自动识别
#Board("uno","COM36").begin() #windows下指定端口初始化
#Board("uno","/dev/ttyACM0").begin() #linux下指定端口初始化
#Board("uno","/dev/cu.usbmodem14101").begin() #mac下指定端口初始化
lcd = LCD1602_I2C(i2c_addr=0x20) #初始化LCD的I2C地址
print("I2C LCD1602 TEST...")
lcd.backlight(True) #打开背光
lcd.clear() #清屏
lcd.set_cursor(0,0) #设置光标位置
lcd.print("Hello World") #显示 "Hello World",1602屏像素点少,不能显示汉字
lcd.set_cursor(1,1) #设置光标位置
lcd.print(1234) #显示数字1234
while True:
time.sleep(1)
lcd.scroll_left() #滚动显示
2-06-oled12864:oled显示屏
# -*- coding: UTF-8 -*-
#实验效果:I2C OLED2864屏控制
#接线:使用windows或linux电脑连接一块arduino主控板,OLED2864显示屏接到I2C口SCL及SDA
import time
from pinpong.board import Board
from pinpong.libs.dfrobot_ssd1306 import SSD1306_I2C #导入ssd1306库
Board("uno").begin() #初始化,选择板型(uno、leonardo、xugu)和端口号,不输入端口号则进行自动识别
#Board("uno","COM36").begin() #windows下指定端口初始化
#Board("uno","/dev/ttyACM0").begin() #linux下指定端口初始化
#Board("uno","/dev/cu.usbmodem14101").begin() #mac下指定端口初始化
oled=SSD1306_I2C(width=128, height=64) #初始化屏幕,传入屏幕像素点数
while True:
oled.fill(1) #全部填充显示
oled.show() #显示生效
print("1")
time.sleep(1)
oled.fill(0) #全部填充熄灭,清屏
oled.show() #显示生效
print("0")
time.sleep(1)
oled.text("0") #显示数字
oled.text("Hello PinPong",8,8) #指定位置显示文字
oled.show() #显示生效
time.sleep(2)
3-01-tcs34725:颜色识别
# -*- coding: UTF-8 -*-
#实验效果:读取I2C TCS34725颜色传感器数值
#接线:使用windows或linux电脑连接一块arduino主控板,TCS34725颜色传感器接到I2C口SCL SDA
import time
from pinpong.board import Board
from pinpong.libs.dfrobot_tcs34725 import TCS34725 #从libs导入tcs34725库
Board("uno").begin() #初始化,选择板型(uno、leonardo、xugu)和端口号,不输入端口号则进行自动识别
#Board("uno","COM36").begin() #windows下指定端口初始化
#Board("uno","/dev/ttyACM0").begin() #linux下指定端口初始化
#Board("uno","/dev/cu.usbmodem14101").begin() #mac下指定端口初始化
tcs = TCS34725() #传感器初始化
print("Color View Test!");
while True:
if tcs.begin(): #查找传感器,读取到则返回True
print("Found sensor")
break #找到 跳出循环
else:
print("No TCS34725 found ... check your connections")
time.sleep(1)
while True:
r,g,b,c = tcs.get_rgbc() #获取rgbc数据
print(r,g,b,c)
print("C=%d\tR=%d\tG=%d\tB=%d\t"%(c,r,g,b))
'''
#数据转换
r /= c
g /= c
b /= c
r *= 256
g *= 256
b *= 256;
print("------C=%d\tR=%d\tG=%d\tB=%d\t"%(c,r,g,b))
'''
time.sleep(1)
3-02-urm09:I2C超声波
# -*- coding: UTF-8 -*-
#实验效果:读取I2C 超声波传感器(URM09)数值
#接线:使用windows或linux电脑连接一块arduino主控板,URM09传感器接到I2C口SCL SDA
import time
from pinpong.board import Board
from pinpong.libs.dfrobot_urm09 import URM09 #从libs中导入URM09库
Board("uno").begin() #初始化,选择板型(uno、leonardo、xugu)和端口号,不输入端口号则进行自动识别
#Board("uno","COM36").begin() #windows下指定端口初始化
#Board("uno","/dev/ttyACM0").begin() #linux下指定端口初始化
#Board("uno","/dev/cu.usbmodem14101").begin() #mac下指定端口初始化
urm = URM09(i2c_addr=0x11) #初始化传感器,设置I2C地址
urm.set_mode_range(urm._MEASURE_MODE_AUTOMATIC ,urm._MEASURE_RANG_500) #设置URM09模式为自动检测,最大测量距离500cm
while True:
dist = urm.distance_cm() #读取距离数据,单位厘米(cm)
temp = urm.temp_c() #读取传感器温度,单位摄氏度(℃)
print("Distance is %d cm "%dist)
print("Temperature is %.2f .c "%temp)
time.sleep(0.5)
3-03-rgb1602:彩色1602屏
# -*- coding: UTF-8 -*-
#实验效果:控制I2C RGB彩色LCD1602液晶屏幕
#接线:使用windows或linux电脑连接一块arduino主控板,LCD1602接到I2C口SCL SDA
import time
from pinpong.board import Board
from pinpong.libs.rgb1602 import RGB1602 #从libs导入rgb1602库
Board("uno").begin() #初始化,选择板型(uno、leonardo、xugu)和端口号,不输入端口号则进行自动识别
#Board("uno","COM36").begin() #windows下指定端口初始化
#Board("uno","/dev/ttyACM0").begin() #linux下指定端口初始化
#Board("uno","/dev/cu.usbmodem14101").begin() #mac下指定端口初始化
lcd = RGB1602()
print("I2C RGB1602 TEST...")
lcd.set_rgb(0,50,0); #设置RGB值
lcd.set_cursor(0,0) #设置光标到原点
lcd.print("PinPong") #显示 "PinPong"
lcd.set_cursor(1,1) #设置光标位置
lcd.print(1234) #显示数字
while True:
time.sleep(1)
lcd.scroll_left() #滚动显示
3-04-mlx90614:红外测温
# -*- coding: UTF-8 -*-
#实验效果:读取I2C MLX90614远红外测温传感器
#接线:使用windows或linux电脑连接一块arduino主控板,红外测温传感器接到I2C口SCL SDA
import time
from pinpong.board import Board
from pinpong.libs.dfrobot_mlx90614 import MLX90614 #从libs导入mlx90614库
Board("uno").begin() #初始化,选择板型(uno、leonardo、xugu)和端口号,不输入端口号则进行自动识别
#Board("uno","COM36").begin() #windows下指定端口初始化
#Board("uno","/dev/ttyACM0").begin() #linux下指定端口初始化
#Board("uno","/dev/cu.usbmodem14101").begin() #mac下指定端口初始化
irt=MLX90614()
while True:
print("Object %s *C"% irt.obj_temp_c()) #读取物体温度 摄氏度(℃)
print("Object %s *F"% irt.obj_temp_f()) #读取物体温度 华氏度(℉)
print("Ambient %s *C"% irt.env_temp_c()) #读取环境温度 摄氏度(℃)
print("Ambient %s *F"% irt.env_temp_f()) #读取环境温度 华氏度(℉)
print() #空行
time.sleep(1)
3-05-PN532:NFC近场通讯模块
# -*- coding: utf-8 -*-
#实验效果:NFC近场通讯模块 IIC读取卡片信息
#接线:使用windows或linux电脑连接一块arduino主控板,NFC近场通讯模块接到I2C口SCL SDA
import time
from pinpong.board import Board
from pinpong.libs.dfrobot_pn532 import PN532
Board("uno").begin() #初始化,选择板型和端口号,不输入端口号则进行自动识别
#Board("uno","COM36").begin() #windows下指定端口初始化
#Board("uno","/dev/ttyACM0").begin() #linux下指定端口初始化
#Board("uno","/dev/cu.usbmodem14101").begin() #mac下指定端口初始化
nfc = PN532()
while not nfc.begin():
print("initial failure")
time.sleep(1)
print("Please place the info card/tag on module..... ")
while True:
if nfc.scan():
info = nfc.get_information()
if info != None:
print("----------------NFC card/tag information-------------------")
print("UID Lenght: %d"%info.lenght)
print("UID: %x %x %x %x"%(info.uid[0],info.uid[1],info.uid[2],info.uid[3] ))
print("AQTA: %x %x"%(info.AQTA[0], info.AQTA[0]))
print("SAK: 0x%x"%(info.sak))
print("Type: %s"%(info.types))
print("Manu facturer: %s"%(info.manu))
print("RF Technology: %s"%(info.RF))
print("Memory Size: %d bytes(total)/%d bytes(available)"%(info.size_total, info.size_available))
print("Block/Page Size: %d bytes"%(info.block))
print("Number of Blocks/pages: %d"%(info.num_block))
time.sleep(1)