爬蟲最近搞不懂動了
為了畢設,開始弄一下樹莓派
為了圖方便,先摸了摸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()