树莓派高分贝报警器和键盘

阅读: 评论:0

树莓派高分贝报警器和键盘

树莓派高分贝报警器和键盘

前言:这学期选了嵌入式这门课,对于以后打算走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 signalINPUT = 12
OUTPUT = 25def 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  = 33c1_ = 35d1  = 37d1_ = 39e1  = 41f1  = 44f1_ = 46g1  = 49g1_ = 52a1  = 55a1_ = 58b1  = 62c2  = 65c2_ = 69d2  = 73d2_ = 78e2  = 82f2  = 87f2_ = 93g2  = 98g2_ = 104a2  = 110a2_ = 117b2  = 123c3  = 131c3_ = 139d3  = 147d3_ = 156e3  = 165f3  = 175f3_ = 185g3  = 196g3_ = 208a3  = 220a3_ = 233b3  = 247c4  = 262c4_ = 277d4  = 294d4_ = 311e4  = 330f4  = 349f4_ = 370g4  = 392g4_ = 415a4  = 440a4_ = 466b4  = 494c5  = 523c5_ = 554d5  = 587d5_ = 622e5  = 659f5  = 698f5_ = 740g5  = 784g5_ = 831a5  = 880a5_ = 932b5  = 988c6  = 1047c6_ = 1109d6  = 1175d6_ = 1245e6  = 1319f6  = 1397f6_ = 1460g6  = 1568g6_ = 1661a6  = 1760a6_ = 1865b6  = 1976c7  = 2093c7_ = 2217d7  = 2349d7_ = 2489e7  = 2537f7  = 2794f7_ = 2960g7  = 3136g7_ = 3322a7  = 3520a7_ = 3729b7  = 3951def __init__(self):GPIO.setwarnings(False)GPIO.setmode(GPIO.BCM)GPIO.setup(12, GPIO.OUT)GPIO.output(12, GPIO.HIGH)def outOne(self, note, t):buzz = GPIO.PWM(12, note)buzz.start(50)time.sleep(t)buzz.stop()def get_mode_list(self):ret = [[[self.c1,   self.c1_,    self.d1,     self.d1_],[self.e1,   self.f1,     self.f1_,    self.g1],[self.g1_,  self.a1,     self.a1_,    self.b1],],[[self.c2,   self.c2_,    self.d2,     self.d2_],[self.e2,   self.f2,     self.f2_,    self.g2],[self.g2_,  self.a2,     self.a2_,    self.b2],],[[self.c3,   self.c3_,    self.d3,     self.d3_],[self.e3,   self.f3,     self.f3_,    self.g3],[self.g3_,  self.a3,     self.a3_,    self.b3],],[[self.c4,   self.c4_,    self.d4,     self.d4_],[self.e4,   self.f4,     self.f4_,    self.g4],[self.g4_,  self.a4,     self.a4_,    self.b4],],[[self.c5,   self.c5_,    self.d5,     self.d5_],[self.e5,   self.f5,     self.f5_,    self.g5],[self.g5_,  self.a5,     self.a5_,    self.b5],],[[self.c6,   self.c6_,    self.d6,     self.d6_],[self.e6,   self.f6,     self.f6_,    self.g6],[self.g6_,  self.a6,     self.a6_,    self.b6],],[[self.c7,   self.c7_,    self.d7,     self.d7_],[self.e7,   self.f7,     self.f7_,    self.g7],[self.g7_,  self.a7,     self.a7_,    self.b7],],] return retdef out_star(self):buzz = GPIO.PWM(12, 440)star = [self.c4, self.c4, self.g4, self.g4, self.a4, self.a4, self.g4]for i in star:buzz.ChangeFrequency(i)buzz.start(50)time.sleep(0.4)buzz.stop()time.sleep(0.1)if __name__ == "__main__":pass
# keyboard_music.py
import RPi.GPIO as GPIO
import time
import Music
import signal
class keybroad:rows = [17, 27, 22, 16]columns = [5, 6, 13, 26]keybroad_map = [["1","2","3","4"],["5","6","7","8"],["9","10","11","12"],["A","B","C","D"]]m = Music.Music()mode_list = m.get_mode_list()  # 7s 8curMode = 3def __init__(self):GPIO.setwarnings(False)GPIO.setmode(GPIO.BCM)for row ws:GPIO.setup(row, GPIO.OUT)for col lumns:GPIO.setup(col, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)def deal(self, x, y):t = 0.2if x < de_list[self.curMode][x][y], t)elif y == 0:if self.curMode > 0:self.curMode -= 1elif y == 1:if self.curMode < 6:self.curMode += 1elif y == 2:self.curMode = 3elif y == ut_star()else:print(x, y)def start(self):while 1:for i in range(len(self.keybroad_map)):GPIO.ws[i], GPIO.HIGH)for j in range(lumns)):if (GPIO.lumns[j]) == 1):self.deal(i, j)time.sleep(0.3)GPIO.ws[i], GPIO.LOW)def check(self, code):ret = 0for i in range(len(self.keybroad_map)):GPIO.ws[i], GPIO.HIGH)for j in range(lumns)):if (GPIO.lumns[j]) == 1 and code == self.keybroad_map[i][j]):ret = 1GPIO.ws[i], GPIO.LOW)return retdef handler(signum, frame):exit(0)if __name__ == "__main__":signal.signal(signal.SIGINT, handler)k = keybroad()k.start()

本文发布于:2024-01-29 17:58:59,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170652234317264.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:分贝   报警器   键盘   树莓派高
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23