esp32 驱动LED 使用gnd vcc scl sda 代码

2023-04-11by@51749082-9k-vy&@ChatGPT.Model: gpt-3.5
51749082-9k-vy

esp32 驱动LED 使用gnd vcc scl sda 代码

Avatar
Avatar

以下是使用ESP32驱动LED的示例代码,使用GND、VCC、SCL和SDA引脚:

#include <Wire.h>

#define LED_PIN 2

void setup() {
  Wire.begin();
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  Wire.beginTransmission(8); // 8是LED所在I2C地址
  Wire.write(LED_PIN);
  Wire.write(1); // 1表示点亮LED,0表示关闭LED
  Wire.endTransmission();
  delay(1000);
}

上述代码使用了Wire库来实现I2C通信,将LED的状态发送到I2C地址为8的设备上。在setup()函数中,初始化Wire库和LED引脚的状态。在loop()函数中,向I2C设备发送LED的状态,并等待1秒钟后再次发送。

51749082-9k-vy

用python写一个完整实例

Avatar
Avatar

以下是使用Python编写ESP32驱动LED的完整实例代码,使用GND、VCC、SCL和SDA引脚:

import machine
import time

led_pin = machine.Pin(2, machine.Pin.OUT)
i2c = machine.I2C(scl=machine.Pin(22), sda=machine.Pin(21), freq=100000)
i2c_addr = 8

while True:
    led_pin.on()
    i2c.writeto(i2c_addr, b'\x02\x01')
    time.sleep(1)
    
    led_pin.off()
    i2c.writeto(i2c_addr, b'\x02\x00')
    time.sleep(1)

在上述代码中,首先通过machine库初始化LED引脚和I2C总线,并设置I2C地址为8。然后在一个无限循环中,交替点亮和关闭LED,并将LED状态通过I2C发送到设备上。其中,b'\x02\x01'表示发送到I2C设备的数据为LED引脚号为2,状态为1(点亮LED);b'\x02\x00'表示LED状态为0(关闭LED)。time.sleep(1)表示等待1秒钟后再执行下一步操作。

51749082-9k-vy

i2c.scan 有值,为啥屏幕点不亮

Avatar
Avatar

如果你的I2C总线扫描出了设备地址,但屏幕仍然无法点亮,可能有以下几种原因:

  1. I2C地址不正确:虽然I2C总线扫描出了设备地址,但屏幕的I2C地址可能与扫描到的地址不同。你需要确认屏幕的I2C地址是否正确,并在代码中使用正确的地址。

  2. 电源问题:屏幕需要足够的电源来运行。如果电源不足,屏幕可能无法正常工作。你需要检查屏幕的电源是否正常,并确保它能够提供足够的电流。

  3. 通信问题:如果I2C通信出现问题,屏幕可能无法正常工作。你需要检查I2C总线和屏幕之间的连接是否正确,并确保代码中的I2C设置正确。

  4. 屏幕损坏:如果以上所有问题都已排除,那么可能是屏幕本身损坏了。你需要检查屏幕是否正常工作,并考虑更换屏幕。

51749082-9k-vy

from machine import Pin, SoftI2C
i2c = SoftI2C(scl=Pin(22), sda=Pin(23), freq=100000)
xx=i2c.scan() # scan for devices
print(xx)
i2c.readfrom(0x3c, 4) # read 4 bytes from device with address 0x3a
i2c.writeto(0x3c, '12') # write '12' to device with address 0x3a

buf = bytearray(10) # create a buffer with 10 bytes
i2c.writeto(0x3c, buf) # write the given buffer to the peripheral

Avatar
Avatar

这段代码中