前言:这学期选了嵌入式这门课,对于以后打算走web前后端开发路线的我感觉这门课对我来说主要的用处是学习操作系统,看了某内的视频课,学完了UnixC部分让我受益匪浅,但看到后面裸板开发和驱动程序部分让我停下了脚步,往后继续学的话要花费很多的时间精力,这里我做了妥协处理(不是专业方向别花太多时间),但为了这门课不摆烂或者说入个嵌入式的门我还是买了个树莓派写了些好玩的小项目。
写代码之前
1. 连接树莓派:一开始选择ssh连接,后来为了跟嵌入式搭点边有又学了串口连接(硬件层面的连接),但ssh真的太香了,开发过程中我还是选择ssh连接
2. GPIO口和高低电平:我是计算机专业的,不是电子,对这些只了解个皮毛,反正就是树莓派提供了GPIO口,可以input或者output高电平低电平,用来外接别的设备,代码也就类似于驱动程序来处理一些逻辑(听老师说驱动程序还要带什么操作系统,我这里的树莓派准确来说并不是纯裸板,并不能从专业的嵌入式编程,也就自己玩玩)
3. 环境:树莓派4b 一堆杜邦线 笔记本电脑网线接路由器 树莓派网线接路由器 无源蜂鸣器,有源蜂鸣器,面包板, LED小灯珠,声敏光敏传感器,4*4小键盘等
项目1:高分贝报警器
input:声敏传感器 output:无源蜂鸣器
简介:简单的IO
import RPi.GPIO as GPIO
import time
import signal
INPUT = 12
OUTPUT = 25
def sound(i, o, t):
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(o, GPIO.OUT)
GPIO.setup(i, GPIO.IN)
def handler(signum, frame):
GPIO.output(o, GPIO.LOW)
exit(0)
signal.signal(signal.SIGINT, handler)
while 1:
if GPIO.input(i) != 0:
GPIO.output(o, GPIO.HIGH)
time.sleep(t)
else:
GPIO.output(o, GPIO.LOW)
sound(INPUT, OUTPUT, 0.1)
项目2:简陋钢琴
input:4*4键盘 output:有源蜂鸣器
简介:这个是期中写的项目,期末现在写博客懒得改细节了 ,music类是根据12平均律输出音符,具体部分看乐理书去,keyboarg_music类是调用了music类根据键盘输入输出音符(这里最好键盘封装一个类,music封装一个,调用写一个程序好一点,不过我懒的改了),使用手册如下:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
1-12为C到B
13降一个8度,14升一个8度,15回到中间的8度,16输出小星星(你可以自己改代码写曲子)
# Music.py
import RPi.GPIO as GPIO
import time
class Music:
# c1_ is c1#
c1 = 33
c1_ = 35
d1 = 37
d1_ = 39
e1 = 41
f1 = 44
f1_ = 46
g1 = 49
g1_ = 52
a1 = 55
a1_ = 58
b1 = 62
c2 = 65
c2_ = 69
d2 = 73
d2_ = 78
e2 = 82
f2 = 87
f2_ = 93
g2 = 98
g2_ = 104
a2 = 110
a2_ = 117
b2 = 123
c3 = 131
c3_ = 139
d3 = 147
d3_ = 156
e3 = 165
f3 = 175
f3_ = 185
g3 = 196
g3_ =