簡體   English   中英

使用 PCA9685 控制 LED

[英]Controlling LED's with PCA9685

我已經購買了 Adafruit PCA9685 並完成了庫安裝,但是,我不知道如何對其進行編程。 我想基於我編寫的以下代碼:

import RPi.GPIO as GPIO
import time
import sys
from pubnub import Pubnub

GPIO.setmode(GPIO.BCM)

PIN_LIVING = 22
PIN_PORCH = 17
PIN_FIREPLACE = 27

GPIO.setup(PIN_LIVING,GPIO.OUT)
GPIO.setup(PIN_PORCH,GPIO.OUT)
GPIO.setup(PIN_FIREPLACE,GPIO.OUT)

FREQ = 100 # frequency in Hz
FIRE_FREQ = 30 #  flickering effect

# Duty Cycle (0 <= dc <=100)

living = GPIO.PWM(PIN_LIVING, FREQ)
living.start(0)

porch = GPIO.PWM(PIN_PORCH, FREQ)
porch.start(0)

fire = GPIO.PWM(PIN_FIREPLACE, FIRE_FREQ)
fire.start(0)

# PubNub

pubnub = Pubnub(publish_key='demo', subscribe_key='demo')

channel = 'pi-house'

def _callback(m, channel):
    print(m)

    dc = m['brightness'] *10

    if m['item'] == 'light-living':
        living.ChangeDutyCycle(dc)

    elif m['item'] == 'light-porch':
        porch.ChangeDutyCycle(dc)

    elif m['item'] == 'fireplace':
        fire.ChangeDutyCycle(dc)

def _error(m):
  print(m)

pubnub.subscribe(channels='pi-house', callback=_callback, error=_error)

try:
    while 1:
        pass
except KeyboardInterrupt:
    GPIO.cleanup()
    sys.exit(1)

我不知道這是否類似。 我購買它是因為我希望能夠通過 Raspberry pi 的 PWM 控制更多 LED。 我查看了它,發現了特定於該芯片的各種奇怪的命令和術語。

謝謝!

首先,如果您查看數據表的第 29 頁(圖 15),它表明對於直接 LED 連接,您需要將 LED 倒置連接。 即將 LED 的地連接到 PCA9685 上的 PWM 線,將 LED 的正極連接到 V+

代碼非常簡單(以下是針對 Arduino 的)並且您使用函數pwm.setPWM(uint8_t num, uint16_t on, uint16_t off)打開和關閉 LED 以及不同級別的亮度。

#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();

void setup()
{
Serial.begin(9600);

pwm.begin();
pwm.setPWMFreq(1600);  //This is the maximum PWM frequency

pwm.setPWM(1,0,4095); //this turns on the LED connected to channel one (I suspect the only line you're really looking for)
}

希望這能回答你的問題!

請參閱下面如何在 python 中執行此操作

import Adafruit_PCA9685
pwm = Adafruit_PCA9685.PCA9685()

pwm.set_pwm_freq(60)

# Demo using LED on Channel 12 of the PCA9685
# Wire up the LED  on  Channel 12 such that 
#    Shortleg of LED goes to GND and
#    Long leg goes to PWM pin on channel 12

pwm.set_pwm(12,0,4095)   # Full bright
time.sleep(5)

pwm.set_pwm(12,1024,3072) # half bright
time.sleep(5)

pwm.set_pwm(12,0,0)  #off
time.sleep(5)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM