2016-04-21 22 views
1

Ich habe ein Adafruit PCA9685 gekauft und die Installation der Bibliothek abgeschlossen. Ich habe jedoch keine Ahnung, wie ich es programmieren soll. Ich möchte es auf den folgenden Code, den ich schrieb:Steuern von LEDs mit 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) 

Ich weiß nicht, ob auf diesem ist es ähnlich. Ich kaufte es, weil ich mehr LEDs mit PWM vom Raspberry Pi steuern wollte. Ich schaute hinein und fand alle möglichen seltsamen Befehle und Begriffe speziell für diesen Chip.

Danke!

+0

Kann mir jemand ein paar Infos dazu geben oder mir Links geben, weil ich nichts gefunden habe, um LEDs zu steuern. – KnalexAlex

+2

Ich schaute auf dieses Tutorial (https://learn.adafruit.com/downloads/pdf/adafruit-16-channel-servo-driver-with-raspberry-pi.pdf) und a) es funktioniert nur mit Servos, b) es hat nicht funktioniert. Ist es wirklich so kompliziert LEDs mit diesem Gerät zu steuern? – KnalexAlex

+0

* "Es funktioniert nur mit Servos" * Woher weißt du das? Sagt es das eigentlich in der Anleitung? (Ich sehe nicht, warum es mit anderen Sachen nicht funktionieren würde) – jDo

Antwort

1

Zunächst sehen Sie auf Seite 29 des Datenblattes (Abb. 15), dass Sie für die direkte LED-Verbindung Ihre LEDs invertiert anschließen müssen. dh verbinden Sie die Masse der LED mit der PWM-Leitung auf dem PCA9685 und das Plus der LED mit dem V +

Code ist ziemlich einfach (unten ist für einen Arduino) Und Sie verwenden die Funktion pwm.setPWM(uint8_t num, uint16_t on, uint16_t off), um die LEDs einzuschalten und Aus und zu verschiedenen Helligkeitsstufen.

#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) 
} 

Hoffe, dass Ihre Frage beantwortet!

Verwandte Themen