هت رزبری ®ProMake
معرفی
هت رزبری راهکاری منطعف برای استفاده از رنج وسیعی از ماژولهای ®Promake برای پلتفرم رزبری می باشد.
قابلیت ها
- Easy Mounted Promake Modules , No need to Soldering.
- compatible with all of Standard Arduino Boards
- Supports two individual ProMake Modules
- Each Slot Supports SPI,Serial,I2C and Analog Interfaces
- Buzzer
- Push button
- Optional onboard ADC Chip
- Two RGB Leds
- QWIIC & Grove Expansion Connectors
مشخصات فنی
- Board Dimensions : 64cm*54cm
- POWER Options :
- On board USB Type-C Connector
- 5V Power From Arduino Board
- 3.3V OnBoard LDO With Maximum Current of 600mA
منابع
شماتیک برد
نرم افزار
رزبری
کلید فشاری، بازر، دیود IR و LED
برای نمونه زیر باری استفاده از کلید فشاری و دیود IR و LED و بازر روی برد نوشته شده است.
import RPi.GPIO as GPIO
from time import sleep
GPIO.setwarnings(False)
#sets gpio to numerical pin assignments... 1-40
GPIO.setmode(GPIO.BCM)
#sets pins as outputs
GPIO.setmode(GPIO.BCM)
GPIO.setup(12, GPIO.OUT) # buzzer
GPIO.setup(17, GPIO.OUT) # LED
GPIO.setup(22, GPIO.IN) # key
GPIO.setup(23, GPIO.IN) # IR
GPIO.setup(12,GPIO.OUT)
f1 = 5000
p = GPIO.PWM(12,f1)
while True:
GPIO.output(17, 1)
if GPIO.input(22) == 0:
GPIO.output(17, 0)
p.start(10)
sleep(0.01)
p.start(0)
if GPIO.input(23) == 0:
#p = GPIO.PWM(12,2000)
#f2 = 4000
GPIO.output(17, 0)
p.start(10)
sleep(0.1)
p.start(0)
```
### RGB LED
روی برد HAT رزبری پرومیک دو عدد RGB LED وجود دارد از سری WS2812 که می توان با ترکیب رنگها پروژه های بسیار جالب طراحی نمود و یا بطور مثال انواع وضعیت برد و ماژولهای متصل را با رنگهای متنوع مشخص نمود. برای اجرای این برنامه لازم است که ماژول صدای خروجی برد رزبری در ابتدا غیر فعال شود که در ادامه توضیح داده می شود.
1- غیر فعال کردن پخش صدا در فایل کانفیگ
sudo nano /etc/modprobe.d/snd-blacklist.conf
خط زیر اضافه شود.
```
blacklist snd_bcm2835
سپس با زدن کلید های CTRL + O and CTRL + X ویرایشگر را ذخیره و ببندید. 2- ویرایش فایل کانفیگ
sudo nano /boot/config.txt
بخش زیر را بیابید:
# Enable audio (loads snd_bcm2835)
dtparam=audio=on
و با قرار دادن # کامنت و غیر فعال نمائید.
#dtparam=audio=on
سپس رزبری را ریست نمائید.
sudo reboot
حال می توان برنامه را اجرا کرد. از آنجائیکه این برنامه به دسترسی ادمین برای در اختیار گیری بخش PWM صدا را نیاز دارد بصورت زیر و با فرض مسیر زیر (در برنامه خودتان تغییر دهید اجرا نمائید. )
sudo nano examples/RGB_LED.py
```
#!/usr/bin/env python3
import time from rpi_ws281x import PixelStrip, Color import argparse
LED strip configuration:
LED_COUNT = 2 # Number of LED pixels. LED_PIN = 18 # GPIO pin connected to the pixels (18 uses PWM!).
LED_PIN = 10 # GPIO pin connected to the pixels (10 uses SPI /dev/spidev0.0).
LED_FREQ_HZ = 800000 # LED signal frequency in hertz (usually 800khz) LED_DMA = 10 # DMA channel to use for generating signal (try 10) LED_BRIGHTNESS = 255 # Set to 0 for darkest and 255 for brightest LED_INVERT = False # True to invert the signal (when using NPN transistor level shift) LED_CHANNEL = 0 # set to '1' for GPIOs 13, 19, 41, 45 or 53
Define functions which animate LEDs in various ways.
def colorWipe(strip, color, wait_ms=50): """Wipe color across display a pixel at a time.""" for i in range(strip.numPixels()): strip.setPixelColor(i, color) strip.show() time.sleep(wait_ms / 1000.0)
def theaterChase(strip, color, wait_ms=50, iterations=10): """Movie theater light style chaser animation.""" for j in range(iterations): for q in range(3): for i in range(0, strip.numPixels(), 3): strip.setPixelColor(i + q, color) strip.show() time.sleep(wait_ms / 1000.0) for i in range(0, strip.numPixels(), 3): strip.setPixelColor(i + q, 0)
def wheel(pos): """Generate rainbow colors across 0-255 positions.""" if pos < 85: return Color(pos * 3, 255 - pos * 3, 0) elif pos < 170: pos -= 85 return Color(255 - pos * 3, 0, pos * 3) else: pos -= 170 return Color(0, pos * 3, 255 - pos * 3)
def rainbow(strip, wait_ms=20, iterations=1): """Draw rainbow that fades across all pixels at once.""" for j in range(256 * iterations): for i in range(strip.numPixels()): strip.setPixelColor(i, wheel((i + j) & 255)) strip.show() time.sleep(wait_ms / 1000.0)
def rainbowCycle(strip, wait_ms=20, iterations=5): """Draw rainbow that uniformly distributes itself across all pixels.""" for j in range(256 * iterations): for i in range(strip.numPixels()): strip.setPixelColor(i, wheel( (int(i * 256 / strip.numPixels()) + j) & 255)) strip.show() time.sleep(wait_ms / 1000.0)
def theaterChaseRainbow(strip, wait_ms=50): """Rainbow movie theater light style chaser animation.""" for j in range(256): for q in range(3): for i in range(0, strip.numPixels(), 3): strip.setPixelColor(i + q, wheel((i + j) % 255)) strip.show() time.sleep(wait_ms / 1000.0) for i in range(0, strip.numPixels(), 3): strip.setPixelColor(i + q, 0)
Main program logic follows:
if name == 'main': # Process arguments parser = argparse.ArgumentParser() parser.add_argument('-c', '--clear', action='store_true', help='clear the display on exit') args = parser.parse_args()
# Create NeoPixel object with appropriate configuration.
strip = PixelStrip(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA, LED_INVERT, LED_BRIGHTNESS, LED_CHANNEL)
# Intialize the library (must be called once before other functions).
strip.begin()
print('Press Ctrl-C to quit.')
if not args.clear:
print('Use "-c" argument to clear LEDs on exit')
try:
while True:
print('Color wipe animations.')
colorWipe(strip, Color(255, 0, 0)) # Red wipe
colorWipe(strip, Color(0, 255, 0)) # Green wipe
colorWipe(strip, Color(0, 0, 255)) # Blue wipe
print('Theater chase animations.')
theaterChase(strip, Color(127, 127, 127)) # White theater chase
theaterChase(strip, Color(127, 0, 0)) # Red theater chase
theaterChase(strip, Color(0, 0, 127)) # Blue theater chase
print('Rainbow animations.')
rainbow(strip)
rainbowCycle(strip)
theaterChaseRainbow(strip)
except KeyboardInterrupt:
if args.clear:
colorWipe(strip, Color(0, 0, 0), 10)
```