풀 컬러 LED

2472 단어 RaspberryPi

환경 정보

  • Raspberry Pi2 Model B
  • Raspbian JESSIE
  • Python 2.7.9
  • A/D 변환기 MCP 3008
  • 반고정 저항(~100Ω)×3개
  • RGB LED(공통 단말기 양극)
  • 저항 330Ω×3개
  • 의 목적


    반고정 저항을 이용하여 저항치에 따라 발광 LED의 색깔을 바꾼다.이때 PWM을 사용하여 LED로 전송되는 전압을 시뮬레이션하여 LED의 R(빨간색), G(녹색), B(파란색) 중 각 INPUT를 조정한다.

    용어 설명


    PWM


    PWM은 Pulse Width Modulation 펄스 변조를 위한 신호 변조 방법입니다.전압의 상승과 하락 간격을 자세하게 조정함으로써 전압을 조정하는 방법을 시뮬레이션하다.

    사전 정보


    RGB 풀컬러 LED는 최장 단자가 양극(+)에 연결되는 경우도 있고 음극(-)에 연결되는 경우도 있다.상점에서 살 때 컨트롤 모델이 없어서 삽입해 봤는데 양극 타입이에요.
    프로그램의 코드는 양극에서 운행한다.음극이라면 점공비를 100에서 빼면 된다.

    전기회로


    나는 어떻게 전자방식으로 회로도를 묘사해야 할지 몰라서 사진을 사용한다

    MCP3008


    MCP 3008 채널 8개를 갖춘 10bit A/D 변환기
    데이터 테이블

    절차.

    # !/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import RPi.GPIO as GPIO
    from time import sleep
    import spidev
    import subprocess
    
    def readacd(ch):
        resp = spi.xfer2([0x1,(8+ch)<<4, 0x00])
        value = ((resp[1]&3)<<8) + resp[2]
        return value
    
    GPIO.setmode(GPIO.BCM)
    LEDIN=25
    LEDIN2=24
    LEDIN3=23
    GPIO.setup(LEDIN, GPIO.OUT)
    GPIO.setup(LEDIN2, GPIO.OUT)
    GPIO.setup(LEDIN3, GPIO.OUT)
    p0=GPIO.PWM(LEDIN, 50)
    p1=GPIO.PWM(LEDIN2, 50)
    p2=GPIO.PWM(LEDIN3, 50)
    p0.start(0)
    p1.start(0)
    p2.start(0)
    
    # opne SPI device 0.0
    
    spi = spidev.SpiDev()
    spi.open(0 , 0)
    
    try:
        while True:
            input0 = readacd(0)
            input1 = readacd(1)
            input2 = readacd(2)
            duty0 = 100 - (input0*100/1023)
            duty1 = 100 - (input1*100/1023)
            duty2 = 100 - (input2*100/1023)
    
            p0.ChangeDutyCycle(duty0)
            p1.ChangeDutyCycle(duty1)
            p2.ChangeDutyCycle(duty2)
            print("duty0:{:8}".format(duty0)+","+"duty1:{:8}".format(duty1)+","+"duty2:{:8}".format(duty2))
            sleep(1)
    
    except KeyboardInterrupt:
        pass
    
    p0.stop()
    p1.stop()
    p2.stop()
    spi.close()
    GPIO.cleanup()
    
    readrcd에서 채널을 매개 변수에 넘깁니다.각 채널의 값을 얻기 위해 매개 변수의 값을 변경하면서 데이터를 얻는다.
    결과영화 필름.
    Ctrl+C가 끝나면 Typereror가 나오는데 해결 방법을 몰라요.누가 나에게 알려줄 수 있겠는가

    좋은 웹페이지 즐겨찾기