tu787878 gửi vào
- 29522 lượt xem
Hôm nay mình sẽ chia sẻ với các bạn một cách để mình điều khiển đèn nhiều LED (8 LED) trên máy tính Raspberry Pi. ĐIều đặc biệt mình và có lẽ các bạn cũng sẽ rất hứng thú đó là chúng ta có thể lập trình nó theo phong cách arduino :). Raspi theo phong cách arduino như thế nào? Chúng ta cùng bắt đầu nào :p
Chuẩn bị PHẦN CỨNG
- Raspberry Pi
- 74HC595
- 1 Breakboard
- 8 bóng đèn
- Điện trở 220 ohm
- Dây breadboard
Nguyên lý
Phần này hoàn toàn giống với arduino. Chỉ khác chỗ chúng ta điều khiển GPIO của raspberry pi với arduino .
Mình sẽ không nhắc lại, các bạn chịu khó đọc lại bài a Khánh nka: http://arduino.vn/bai-viet/113-dieu-khien-8-den-led-sang-nhap-nhay-theo-y-muon-cua-ban-de-hay-kho
Lập trình
Để điều khiển Led với 74HC595 chúng ta có rất nhiều cách, nhưng để tạo sự gần gũi với các fan arduino mình sẻ nói đến thư viện shiftpi của Tác giả Marian Ignev. Có thể nhiều bạn đã biết rồi, và mình viết bài này muốn share lại cho các bạn chưa biết đến và góp phần tạo nên một nguồn tài nguyên Raspberry Pi trên cộng đồng Arduino Việt Nam
Thôi mình vô vấn đề
Bạn chạy các lệnh sau trên PI:
sudo apt-get update && sudo apt-get -y install python-rpi.gpio python-dev
Tải thư viện shiftpi này về
git clone git://github.com/mignev/shiftpi.git
Install nó
sudo python shiftpi/setup.py install
Khi muốn remove (không nhất thiết phải chạy)
sudo rm -rf shiftpi
Vậy là xong, bây giờ chúng ta tạo một file python và chạy
Lưu ý rằng file python và file thư viện phải cùng nằm trong 1 thư mục
Trong file python:
Đầu tiên ta import thư viện shiftpi vào: (ta có 2 cách)
Cách 1 | Cách 2 |
import shiftpi | from shiftpi import HIGH, LOW, delay, digitalWrite, ALL |
shiftpi.digitalWrite(pin, mode) | digitalWrite(pin, mode) |
shiftpi.LOW, shiftpi.HIGH | LOW, HIGH |
shiftpi.delay() | delay() |
Ngoài ra chúng ta còn có thêm các hàm sau:
Bạn khai báo hàm này khi muốn đổi chân kết nối raspberry pi với 74hc595
pinsSetup({"ser": SER_PIN, "rclk": RCLK_PIN, "srclk": SRCLK_PIN})
Mặc định theo sơ đồ trên và thư viện là:
Raspberry Pi HC595 25 (BCM) 14 24 (RCLK) 12 23 (SRCLK) 11
Bây giờ test thử: tạo file vd.py vào cùng thư mục với thư viện shiftpi với code sau
from ledpi import HIGH, LOW, digitalWrite, delay, ALL while True: for i in range(4): digitalWrite(ALL, HIGH) delay(300) digitalWrite(ALL, LOW) delay(300) for j in range(4): count = 0 while (count < 8): digitalWrite(count, HIGH) delay(100) count = count + 1 count = 7 while (count >= 0): digitalWrite(count, LOW) delay(100) count = count - 1
Lưu lại và kiểm tra.
python vd.py
Kết luận
Như vậy là chúng ta có thể điều khiển 8LED với HC595 với raspi như 1 arduino rồi
Và các bạn hãy đọc thêm thư viện này https://github.com/mignev/shiftpi và thử làm nó với nhiều 74HC595 và nhiều LED hơn nữa nhé
Cảm ơn các bạn đã đọc Chúc các bạn thành công.