差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 | |||
mp_serial_bus [2021/10/05 00:27] gongyusu [串行外设接口] |
mp_serial_bus [2021/10/05 17:35] (当前版本) gongyusu [2. 串行外设接口SPI] |
||
---|---|---|---|
行 141: | 行 141: | ||
Pico有一个技巧——PIO。 我们将在本书后面(附录 C)更仔细地研究这一点,但它是微控制器中的额外硬件,可以专用于I2C和SPI等输入/输出协议。 使用PIO,您可以创建额外的I2C或SPI总线,而不会增加主处理器内核的负担。 | Pico有一个技巧——PIO。 我们将在本书后面(附录 C)更仔细地研究这一点,但它是微控制器中的额外硬件,可以专用于I2C和SPI等输入/输出协议。 使用PIO,您可以创建额外的I2C或SPI总线,而不会增加主处理器内核的负担。 | ||
</WRAP> | </WRAP> | ||
+ | |||
+ | ### 3. MMA7660姿态传感器信息获取 | ||
+ | #### 扫描I2C总线获取设备的信息 | ||
+ | |||
+ | <code python> | ||
+ | # Scanner i2c en MicroPython | MicroPython i2c scanner | ||
+ | # Renvoi l'adresse en decimal et hexa de chaque device connecte sur le bus i2c | ||
+ | # Return decimal and hexa adress of each i2c device | ||
+ | # https://projetsdiy.fr - https://diyprojects.io (dec. 2017) | ||
+ | |||
+ | import machine | ||
+ | i2c = machine.I2C(scl=machine.Pin(5), sda=machine.Pin(4)) | ||
+ | |||
+ | print('Scan i2c bus...') | ||
+ | devices = i2c.scan() | ||
+ | |||
+ | if len(devices) == 0: | ||
+ | print("No i2c device !") | ||
+ | else: | ||
+ | print('i2c devices found:',len(devices)) | ||
+ | |||
+ | for device in devices: | ||
+ | print("Decimal address: ",device," | Hexa address: ",hex(device)) | ||
+ | </code> | ||
+ | |||
+ | |||
+ | #### 读取测量的数据 | ||
+ | <code python> | ||
+ | import machine, time, bme280 | ||
+ | i2c = machine.I2C(scl=machine.Pin(22), sda=machine.Pin(18)) | ||
+ | bme = bme280.BME280(i2c=i2c,address=0x76) | ||
+ | while True: | ||
+ | print("BME280 values:") | ||
+ | temp,pa,hum = bme.values | ||
+ | print(temp) | ||
+ | print(pa) | ||
+ | print(hum) | ||
+ | time.sleep_ms(2000) | ||
+ | </code> | ||
+ | |||
+ | #### 显示读取的数据 | ||
+ | <code> | ||
+ | import machine, ssd1306 | ||
+ | i2c = machine.I2C(scl=machine.Pin(22), sda=machine.Pin(18)) | ||
+ | oled = ssd1306.SSD1306_I2C(128, 64, i2c, 0x3c) | ||
+ | oled.fill(0) | ||
+ | oled.text("Hello World", 0, 0) | ||
+ | oled.show() | ||
+ | </code> | ||