樹莓派圖形編程(Python,C++,Scratch,BlockPi)Part.1 RGB燈間隔亮


爬蟲最近搞不懂動了
為了畢設,開始弄一下樹莓派

為了圖方便,先摸了摸scratch圖形編程,雖然自己也會C++和Python。
有圖形編程在前,后面的就很好理解了,先開第一章,努力寫好樹莓派和傳感器的日志(不敢說教程,太菜了)。

嵌入式第一條!針腳定義要知道

針腳定義圖:

針腳圖
C++用得wiringPi模塊,所以用的是wiringPi Pin對應的針腳;Scratch用的是BCM;Python有setmode()函數(這函數BCM和實際物理管腳定義都可以),所以我這里用Header那一列實際物理管腳給GPIO口就可以了。
這是本節用的接線方式,底下是個面包板,當然了,你可以選擇直接每個杜邦線插在樹莓派上對應的針腳也是一樣的。
接線示意圖:
接線圖
沒有擴展板的對應針管示意圖:
實物圖
LED燈圖:
接線
RGB分別接G17,G18,G27,GND接地(就是0V)(因為我這個轉接板用得是BCM編碼,所以我這里針腳號是BCM GPIO對應那一列號)。

1.Scratch

然后就是循環瞎亮

2.Python

(先按 Ctrl+C停止子函數的調用,再點程序停止,否則程序會直接關閉,忘了把所有針腳占空比改為0)

import RPi.GPIO as GPIO
import time

makerobo_pins = (11,12,13)  # PIN管腳字典

GPIO.setmode(GPIO.BOARD)     # 采用實際的物理管腳給GPIO口
GPIO.setwarnings(False)      # 去除GPIO口警告
GPIO.setup(makerobo_pins, GPIO.OUT)   # 設置Pin模式為輸出模式
GPIO.output(makerobo_pins, GPIO.LOW)  # 設置Pin管腳為低電平(0V)關閉LED

p_R = GPIO.PWM(makerobo_pins[0], 2000)  # 設置頻率為2KHz
p_G = GPIO.PWM(makerobo_pins[1], 2000)  # 設置頻率為2KHz
p_B = GPIO.PWM(makerobo_pins[2], 2000)

# 初始化占空比為0(led關閉)
p_R.start(0)
p_G.start(0)
p_B.start(0)

def makerobo_set_Color():
	p_R.ChangeDutyCycle(100)     # 改變占空比
	time.sleep(0.5)
	p_R.ChangeDutyCycle(0)
	p_G.ChangeDutyCycle(100)     # 改變占空比
	time.sleep(0.5)
	p_G.ChangeDutyCycle(0)
	p_B.ChangeDutyCycle(100)     # 改變占空比
	time.sleep(0.5)
	p_B.ChangeDutyCycle(0)    

# 調用循環函數
def makerobo_loop():
	while True:
		makerobo_set_Color()

# 釋放資源
def makerobo_destroy():
	p_G.stop()
	p_R.stop()
	GPIO.output(makerobo_pins, GPIO.LOW)    # 關閉所有LED
	GPIO.cleanup()                          # 釋放資源

# 程序入口
if __name__ == "__main__":
	try:
		makerobo_loop()       # 調用循環函數
	except KeyboardInterrupt:  # 當按下Ctrl+C時,將執行destroy()子程序。
		makerobo_destroy()    # 釋放資源

3.C++

#include <wiringPi.h>
#include <softPwm.h>
#include <stdio.h>

#define uchar unsigned char

#define makerobo_Led_PinRed    0 // 紅色LED 管腳
#define makerobo_Led_PinGreen  1 // 綠色LED 管腳
#define makerobo_Led_PinBlue   2 // 藍色LED 管腳

// LED 初始化
void makerobo_led_Init(void)
{
	softPwmCreate(makerobo_Led_PinRed,  0, 100);
	softPwmCreate(makerobo_Led_PinGreen,0, 100);
	softPwmCreate(makerobo_Led_PinBlue, 0, 100);
}
// LED 顏色設置
void makerobo_led_Color_Set(uchar r_val, uchar g_val, uchar b_val)
{
	softPwmWrite(makerobo_Led_PinRed,   r_val);
	softPwmWrite(makerobo_Led_PinGreen, g_val);
	softPwmWrite(makerobo_Led_PinBlue,  b_val);
}

//-------------主程序-----------------
int main(void)
{
    //初始化連接失敗時,將消息打印到屏幕
	if(wiringPiSetup() == -1){
		printf("setup wiringPi failed !");
		return 1; 
	}
	makerobo_led_Init();

	while(1)
	{
		makerobo_led_Color_Set(0xff,0x00,0x00);   // 紅色	
		delay(500);                      // 延時500ms
		makerobo_led_Color_Set(0x00,0xff,0x00);   // 綠色
		delay(500);                      // 延時500ms
		makerobo_led_Color_Set(0x00,0x00,0xff);   // 藍色
		delay(500);

		makerobo_led_Color_Set(0xff,0xff,0x00);   //黃色
		delay(500);                      // 延時500ms
		makerobo_led_Color_Set(0xff,0x00,0xff);   //pick
		delay(500);                      // 延時500ms
		makerobo_led_Color_Set(0xc0,0xff,0x3e);
		delay(500);                     // 延時500ms

4.BlockPi

這是一個比Scratch3還要強大的開源項目,圖形化編程超級爽!
介紹和簡單安裝
以及
作者大大的知乎專欄
這個在你給完圖形編程的同時,有對應的Python代碼生成,多的我就不多贊述了,搭積木的快樂~
比Scratch內的樹莓派模塊強大很多
直接上圖:
圖形化編程
與之對應生成的代碼:

from gpiozero import *
from colorzero import Color
import time

rgbled = None


rgbled = RGBLED(17, 18, 27)
rgbled.on()
for count in range(10):
  rgbled.color = Color('#ff0000')
  time.sleep(1)
  rgbled.color = Color('#009900')
  time.sleep(1)
  rgbled.color = Color('#3333ff')
  time.sleep(1)
  continue
rgbled.close()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM