完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
I2C 接口
Jetson nano 板载有两路I2C接口,JetBot上的OLED就是通过I2C接口来操作的。这里我们可以使用i2ctool工具来查看i2C设备。这里指令最后的参数为1, 表示查看的是i2c总线1的设备,如果参数为0,则查看的是总线0的设备。 i2cdetect -y -r 1 其中0x3C 就是OLED的i2C设备地址。由于JetBot一开始的项目使用的是SSD1306的0.91inch OLED屏幕,所以提供的OLED函数库是Adafruit_SSD1306. 屏幕的控制程序你可以在jetbot/jetbot/app/stats.py文件中了解。 |
|
|
|
OLED显示
这里为了不与原OLED的程序冲突,我们连接另一个0.91inch OLED 到Jetson Nano的i2c0接口上做显示测试。 引脚连接关系如下: Vcc (OLED) -> 3V3 (Jetson) GND (OLED) -> GND (Jetson) SDA (OLED) -> I2C0_SDA (Jetson) SDL (OLED) -> I2C0_SDL (Jetson) 如果你不清楚I2C0接口的引脚具体是哪个,请参考Jetson nano系列教程之GPIO 连接好之后查看i2c总线0所挂载的设备,可以看到有一个0x3C的设备被识别到 由于控制芯片和屏幕规格都一样,所以我们同样直接使用Adafruit_SSD1306函数库来操作OLED. 我们试着去写一个程序显示字符串到OLED上面。 代码情况如下: 声明: Adafruit_SS1306是Adafruit Electronics 提供的驱动小尺寸OLED屏幕的驱动。有兴趣的可以自行了解一下。 |
|
|
|
完整代码:
importtime importAdafruit_SSD1306 fromPILimportImage fromPILimportImageDraw fromPILimportImageFont fromjetbot.utils.utilsimportget_ip_address importsubprocess #128x32displaywithhardwareI2C: disp=Adafruit_SSD1306.SSD1306_128_32(rst=None,i2c_bus=1,gpio=1)#settinggpioto1ishacktoavoidplatformdetection #Initializelibrary. disp.begin() #Cleardisplay. disp.clear() disp.display() #Createblankimagefordrawing. #Makesuretocreateimagewithmode‘1’for1-bitcolor. width=disp.width height=disp.height image=Image.new(‘1’,(width,height)) #Getdrawingobjecttodrawonimage. draw=ImageDraw.Draw(image) #Drawablackfilledboxtocleartheimage. draw.rectangle((0,0,width,height),outline=0,fill=0) #Drawsomeshapes. #Firstdefinesomeconstantstoalloweasyresizingofshapes. padding=-2 top=padding bottom=height-padding #Movelefttorightkeepingtrackofthecurrentxpositionfordrawingshapes. x=0 #Loaddefaultfont. font=ImageFont.load_default() whileTrue: #Drawablackfilledboxtocleartheimage. draw.rectangle((0,0,width,height),outline=0,fill=0) #Shellscriptsforsystemmonitoringfromhere:https://unix.stackexchange.com/questions/119126/command-to-display-memory-usage-disk-usage-and-cpu-load cmd=“top-bn1|grepload|awk‘{printf”CPULoad:%.2f“,$(NF-2)}’” CPU=subprocess.check_output(cmd,shell=True) cmd=“free-m|awk‘NR==2{printf”Mem:%s/%sMB%.2f%%“,$3,$2,$3*100/$2}’” MemUsage=subprocess.check_output(cmd,shell=True) cmd=“df-h|awk‘$NF==”/“{printf”Disk:%d/%dGB%s“,$3,$2,$5}’” Disk=subprocess.check_output(cmd,shell=True) #Writetwolinesoftext. draw.text((x,top),“eth0:”+str(get_ip_address(‘eth0’)),font=font,fill=255) draw.text((x,top+8),“wlan0:”+str(get_ip_address(‘wlan0’)),font=font,fill=255) draw.text((x,top+16),str(MemUsage.decode(‘utf-8’)),font=font,fill=255) draw.text((x,top+25),str(Disk.decode(‘utf-8’)),font=font,fill=255) #Displayimage. disp.image(image) disp.display() time.sleep(1 |
|
|
|
只有小组成员才能发言,加入小组>>
793 浏览 0 评论
1152 浏览 1 评论
2528 浏览 5 评论
2861 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2711 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1072浏览 3评论
195浏览 2评论
457浏览 2评论
370浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
455浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 23:47 , Processed in 0.990933 second(s), Total 53, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号