В этом эксперименте мы будем управлять цветом RGB-светодиода с Arduino и с Raspberry Pi. В той версии эксперимента, которая выполняется на Raspberry Pi для управления цветом мы воспользуемся графическим пользовательским интерфейсом с тремя ползунками. На рисунках показаны вариант эксперимента для Raspberry Pi и схема эксперимента.
- Подключение макетной платы для смешивания цветов при помощи aspberry Pi.jpg
- Схема эксперимента с RGB-светодиодом.jpg
Комплектующие
В этом эксперименте для работы с Arduino и Raspberry Pi понадобятся следующие комплектующие:
LED1 - RGB-светодиод
R1-3 - Резистор 470 Ом 0,25 Вт
400-точечная беспаечная макетная плата
Перемычки «папа-папа»
Перемычки мама-папа (только для Рі)
Напомню, что перемычки «мама-папа» понадобятся только для подключения к макетной плате контактов GPIO Raspberry Pi (если вы планируете провести этот эксперимент с Raspberry Pi тоже).
Достичь оптимальной яркости и наилучшего цветового баланса можно лишь при внимательном подборе резисторов соответствующих сопротивлений. Однако при обретать комплектующие проще, если на всех трех каналах использовать резисторы с одним и тем же значением. В нашем случае я рекомендую в качестве универсальных применить резисторы на 470 Ом - они будут работать и с Raspberry Pi, и с Arduino.
Подключение к Raspberry Pi
В версии эксперимента, ориентированной на Raspberry Pi, мы не просто будем вводить команды для изменения цвета, а воспользуемся небольшим окном с пользовательским интерфейсом, содержащим три ползунка - по одному на каждый цветовой канал. Когда вы будете менять положение ползунков, станет меняться и цвет RGB-светодиода.
Поскольку в этой программе организуется графический пользовательский интерфейс, а в ЅЅН графический интерфейс отсутствует, вам потребуется подключить к Raspberry Pi клавиатуру, мышь и монитор.
Компоновка макетной платы для работы с Raspberry Pi показана на рисунке - она точно такая же, как и в случае с Arduino, за тем исключением, что при работе с Raspberry Pi вам понадобятся перемычки «мама-папа». В качестве ШИМ-выходов здесь задействуются GPIO-контакты 18, 23 и 24.
- Компоновка макетной платы для смешивания цветов RGB-светодиода с помощью Raspberry Pi
Программа для Raspberry Pi.
В программе для этого эксперимента, написанной на языке Python, применяется Фреймворк
Tkinter. С его помощью можно создавать оконные приложения, имеющие свои элементы управления, что дает возможность не ограничиваться примитивной командной строкой, с которой вы работали до сих пор. Соответственно и код программы получается немного длиннее, чем обычно. Кроме того, местами в нем используется сравнительно сложное программирование.
Рассмотрим код:
Код: Выделить всё
from Tkinter import *
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM) # (1)
GPIO.setup(18, GPIO.OUT)
GPIO.setup(23, GPIO.OUT)
GPIO.setup(24, GPIO.OUT)
pwmRed = GPIO.PWM(18, 500) # (2)
pwmRed.start(100)
pwmGreen = GPIO.PWM(23, 500)
pwmGreen.start(100)
pwmBlue = GPIO.PWM(24, 500)
pwmBlue.start(100)
class App:
def __init__(self, master): #(3)
frame = Frame(master) #(4)
frame.pack()
Label(frame, text='Red').grid(row=0, column=0) # (5)
Label(frame, text='Green').grid(row=1, column=0)
Label(frame, text='Blue').grid(row=2, column=0)
scaleRed = Scale(frame, from_=0, to=100, # (6)
orient=HORIZONTAL, command=self.updateRed)
scaleRed.grid(row=0, column=1)
scaleGreen = Scale(frame, from_=0, to=100,
orient=HORIZONTAL, command=self.updateGreen)
scaleGreen.grid(row=1, column=1)
scaleBlue = Scale(frame, from_=0, to=100,
orient=HORIZONTAL, command=self.updateBlue)
scaleBlue.grid(row=2, column=1)
def updateRed(self, duty): # (7)
# change the led brightness to match the slider
pwmRed.ChangeDutyCycle(float(duty))
def updateGreen(self, duty):
pwmGreen.ChangeDutyCycle(float(duty))
def updateBlue(self, duty):
pwmBlue.ChangeDutyCycle(float(duty))
root = Tk() # (8)
root.wm_title('RGB LED Control')
app = App(root)
root.geometry("200x150+0+0")
try:
root.mainloop()
finally:
print("Cleaning up")
GPIO.cleanup()
Уточним некоторые моменты этой программы по пунктам, воспользовавшись разметкой строк, сделанной в комментариях:
- Сконфигурируем Рі так, чтобы можно было работать с именами контактов по системе Broadcom, а не просто с обозначениями позиций.
- Запускаем широтно-импульсную модуляцию (ШИМ) на красном, зеленом и синем канале, чтобы управлять яркостью светодиодов.
- Эта функция вызывается при создании приложения.
- В этом фрейме содержатся различные элементы управления из графического
интерфейса.
- Создаем надписи и располагаем каждую в своей ячейке сетки.
- Создаем ползунки и располагаем каждый в своей ячейке сетки. Атрибут command указывает, какой метод нужно вызывать при перемещении ползунка.
- Этот метод и подобные методы для других цветов вызываются при перемещении ползунка.
- Запускаем графический пользовательский интерфейс, задаем для окна название, размер и положение.
Загружаем и выполняем программу
Запустим программу от имени администратора при помощи следующей команды:
$ sudo python mixing_colors.py
Спустя пару секунд появится окно, показанное на рисунке. При перемещении ползунков цвет RGB-светодиода будет меняться.
- Перемещаем ползунки для изменения цвета RGB-светодиода
- Перемещаем ползунки для изменения цвета RGB-светодиода.jpg (13.2 КБ) 3049 просмотров