① 樹莓派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
樹莓派教程(持續更新) 中谷教育-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之類的,更麻煩。