① 树莓派python支持i2c吗
树莓派的GPIO端口数量有限,可通过IO扩展芯片增加GPIO的数量,使得树莓派可以适应更多的应用。PCF8574为一款通过I2C总线扩展IO的芯
片,单个PCF8574可扩展8个IO,一个I2C总线最多可挂载8个PCF8574,所以树莓派最多可扩展64个IO。
树莓派扩展功能的开发方法有很多,例如wiringPi和bcm2835 C library都提供I2C
API函数。如果使用python+SMBUS库开发的话,你会发现linux应用开发原来如此简单。(注意SMBUS和I2C存在区别与联系,在本文中
两者是相等的概念)
2.相关博文
【树莓派学习笔记——I2C设备载入和速率设置】
【树莓派学习笔记——I2C Tools 学习笔记】
【树莓派学习笔记——I2C PCF8574 BCM2835 Library】使用BCM2835
Library实现本文相同的内容
【树莓派学习笔记——I2C PCF8574 SysFs方式】使用SysFS方式实现本文相同的内容
3.PCF8574使用简述
PCF8574的采用7位I2C地址,7位I2C地址中的低3位从高到低分别为A2
A1和A0,该3位为地址选择位,若地址选择全部接GND,那么PCF8574的I2C从机地址为0x20。图1为PCF8574的基本信息,左侧为芯片
内部结构示意图,其中A2
A1和A0决定从机地址而从机地址直接影响I2C总线控制器,右侧上部为PCF8574引脚图,右侧下部为I2C从机地址组成示意图,从机地址的高4位为
0100,该4位数字固定不变。
图1 PCF8574基本信息
请
注意I2C 7位从机地址和I2C
读控制字或i2C写控制器存在联系与区别,对于7位从机地址为0x20的PCF8574而言,读控制字为0x41,写控制字为0x40。若使用GPIO通
过软件法模拟I2C时序时,通常把写控制字0x40定义为I2C从机地址,软件模拟时的I2C地址(0x40)和I2C
7位从机地址(0x41)存在区别。
PCF8574内部含有8个准双向IO,对PCF8574进行一次写操作可修改IO口的输出状态,对PCF8574进行一次读操作可获取IO口的输入状态。I2C总线的操作较为复杂,各芯片之间的差异较大,例如BH1750、AT24C04和ADXL345虽然均使用I2C接口,但是细节之处存在差异较大。
图2 PCF8574读写时序
4.代码实现——python
【安装python smbus】
sudo apt-get install python-smbus
新建一个名为pcf8574.py的文件
[python] view plain
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import smbus
import time
# 打开 /dev/i2c-1
bus = smbus.SMBus(1)
while True:
for i in range(0,4):
# 向PCF8574写入一个字节
bus.write_byte( 0x20 , (1<<i) )
# 延时100ms
time.sleep(0.1)
【代码详解】
【1】#!/usr/bin/env python
定义python解析脚本的绝对路径。
【2】# -*- coding: utf-8 -*-
py文件为utf-8格式,否则无法写入中文注释。
【3】import smbus
导入smbus模块。
【4】bus = smbus.SMBus(1)
在树莓派版本2中,I2C设备位于I2C-1,所以此处的编号为1
【5】bus.write_byte( 0x20 , (1<<i) )
向PCF8574写入一个字节,注意PCF8574和其他I2C芯片不同,该芯片没有寄存器,发送写控制字之后可直接设置IO口输出状态。
【执行程序】
进入pcf8574.py所在目录,输入以下指令
sudo python pcf8574.py
【运行结果】
图3 运行结果
5.参考资料
【python SMBUS GitHub】python封装SMBUS操作函数具体代码,值得阅读。
② 树莓派上用什么编程
Raspberry Pi 系统用的是 ARM 架构的 Linux, Linux上的大部分编程语言如GNU C/C++, Java, Python, Perl, php都能用, .
Net本来就不支持Linux, 不过说不定非官方的Mono会支持ARM!
希望回答能给你带来帮助~
如果满意,请采纳,如还有疑问,可继续追问!
您也可以向我们团队发出请求,会有更专业的人来为您解答!
③ 学习树莓派上编程的时候,需要哪些教程
树莓派教程(持续更新)网络网盘免费资源在线学习
链接: https://pan..com/s/1PuxuAIN8dV37G5E2n33pCA
提取码: wuuj
树莓派教程(持续更新) 中谷教育-Python视频教程(完整版)
游戏镜像 微雪5寸显示器config 树莓派详细资料 视频教程 镜像 Voice kit语音工具包镜像 Etcher-Setup-1.4.4-x86镜像烧录工具.
exeaiyprojects-2018-04-13.img.xz 开启SSH-raspbian-stretch.zip ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img.xz StickyFingers-Kali-Pi-armhf-180923.img.xz recalboxOS-4.0.0-beta5.zip 2018-11-13-raspbian-stretch.zip

④ 新手求教树莓派用什么编程好
python,有官方控制引脚的包。
⑤ 为什么树莓派2上看不到i2c设备
1、将一个I2C器件连接至arino的SDA、SCL引脚(UNO R3 连接A4、A5) 2、将如下代码烧入arino,打开串口界面即可得到I2C设备的地址。 #include void setup() { Wire.begin(); Serial.begin(9600); Serial.println("nI2C Scanner"); } void loop()
⑥ 树莓派上用什么编程
树莓派用python来进行编程。树莓派项目的一个核心思想是Python编程语言的使用。Python允许树莓派的拥有者将项目扩展到令人难以置信的规模。Python是一个解释型的面向对象的、跨平台的编程语言。良好的可靠性、清晰的语法和易用性,使它成为最流行的编程语言之一。Python是一个优雅的、功能强大的语言。
Raspberry Pi 系统用的是 ARM 架构的 Linux, Linux上的大部分编程语言如GNU C/C++, Java,Python, Perl, PHP都能用, .Net本来就不支持Linux, 不过说不定非官方的Mono会支持ARM。
⑦ 如何在windows下或者linux下对树莓派编程(C语言或C++)
硬件的没玩过
树莓派 是不是那个 教学型 ARM编程主板?
建议你去 他们官方论坛看下
我同学他们毕业搞ARM的 都是 自己焊接板子的
然后用 winCE或者 unix linux 的嵌入式系统
他这种定制的包装过的,一般都把很多底层的 原理封装了,只需要 学号他官方提供的 支持文档和事例程序,就能实现 很多功能。而且
如果 你直接去学C/C++ windows编程 以及通信编程 SSH协议 等 反倒离目的远了。
我估计你应该是个 爱好者,或者学生。
论坛里有很多 爱好者 发的 相关项目及 细节
比如:我刚才在 论坛里看到一个帖子说
做了一个工具,在windows下面和pi 进行ssh 交互
http://bbs.ickey.cn/index.php?app=group&ac=topic&id=2573
⑧ 如何由树莓派开始学习编程
先装系统(我装的是Linux的),然后上网找找教程,比如Python、C++的教程,(内容和开发软件差不多,只不过可以通过编程控制一些电子小零件),学多了自己也能做很多有趣的小发明啦!
⑨ python3 树莓派编程怎么写
首先树莓派得安装 python-smbus, i2c-tools,
然后修改文件:sudo nano /etc/moles,添加上 i2c-bcm2708 和i2c-dev 这两行,Raspbian还需要在raspi-config中激活i2c.
用 sudo i2cdetect -y 1 查看设备地址,
例子1:LCD2004,设备地址 为0x27;
先写个驱动调用程序 i2c_driver_lcd.py
import smbus
from time import *
# LCD Address
ADDRESS = 0x27
# commands
LCD_CLEARDISPLAY = 0x01
LCD_RETURNHOME = 0x02
LCD_ENTRYMODESET = 0x04
LCD_DISPLAYCONTROL = 0x08
LCD_CURSORSHIFT = 0x10
LCD_FUNCTIONSET = 0x20
LCD_SETCGRAMADDR = 0x40
LCD_SETDDRAMADDR = 0x80
# flags for display entry mode
LCD_ENTRYRIGHT = 0x00
LCD_ENTRYLEFT = 0x02
LCD_ENTRYSHIFTINCREMENT = 0x01
LCD_ENTRYSHIFTDECREMENT = 0x00
# flags for display on/off control
LCD_DISPLAYON = 0x04
LCD_DISPLAYOFF = 0x00
LCD_CURSORON = 0x02
LCD_CURSOROFF = 0x00
LCD_BLINKON = 0x01
LCD_BLINKOFF = 0x00
# flags for display/cursor shift
LCD_DISPLAYMOVE = 0x08
LCD_CURSORMOVE = 0x00
LCD_MOVERIGHT = 0x04
LCD_MOVELEFT = 0x00
# flags for function set
LCD_8BITMODE = 0x10
LCD_4BITMODE = 0x00
LCD_2LINE = 0x08
LCD_1LINE = 0x00
LCD_5x10DOTS = 0x04
LCD_5x8DOTS = 0x00
# flags for backlight control
LCD_BACKLIGHT = 0x08
LCD_NOBACKLIGHT = 0x00
# set init LCD BACKLIGHT ON or OFF
def lcd_backlight(lcdbl=1):
if lcdbl == 0 :
return LCD_NOBACKLIGHT
return LCD_BACKLIGHT
En = 0b00000100 # Enable bit
Rw = 0b00000010 # Read/Write bit
Rs = 0b00000001 # Register select bit
class lcd(object):
#initializes objects and lcd
def __init__(self,lcd_bl,port=1):
self.addr = ADDRESS
self.bus = smbus.SMBus(port)
self.lcd_bl = lcd_bl
self.lcd_write(0x03)
self.lcd_write(0x03)
self.lcd_write(0x03)
self.lcd_write(0x02)
self.lcd_write(LCD_FUNCTIONSET | LCD_2LINE | LCD_5x8DOTS | LCD_4BITMODE)
self.lcd_write(LCD_DISPLAYCONTROL | LCD_DISPLAYON)
self.lcd_write(LCD_CLEARDISPLAY)
self.lcd_write(LCD_ENTRYMODESET | LCD_ENTRYLEFT)
sleep(0.2)
⑩ 如何编程让树莓派存取传感器传来的数据
方法非常多
最简单的一个:
树莓派上有GPIO,上面有一组UART接口,分RX和TX,把这两个接口于ARDUINO板子上的TTL接口连起来就能传输数据了,arino上的程序用serial系列的程序,树莓派上也有很多方式读取UART的数据,比如Python下的模块,或者minicom等串口调试工具。
还可以用无线到方式,wifi之类的,更麻烦。