精华内容
下载资源
问答
  • 树莓派项目-源码

    2021-02-21 09:36:51
    树莓派项目
  • 早期树莓派项目代码plm
  • 项目:Een树莓派项目voor het aansturen van mijn verlichting
  • 课程主要学习树莓派的一些基础知识、常规的操作、安装软件出现的常见问题处理、基于树莓派的一些项目、避免新手入坑。例如:从安装系统、远程桌面控制、中文界面的设置、密码的设置、 安装输入法 、Linux基础命令、...
  • 树莓派基础学习&树莓派项目实战演示&Python语言 本人就读于兴义民族师范...

    扫码下载「CSDN程序员学院APP」,1000+技术好课免费看

    APP订阅课程,领取优惠,最少立减5元 ↓↓↓

    订阅后:请点击此处观看视频课程

     

    视频教程-树莓派基础学习&树莓派项目实战演示&Python语言-Python

    学习有效期:永久观看

    学习时长:74分钟

    学习计划:2天

    难度:

     

    口碑讲师带队学习,让你的问题不过夜」

    讲师姓名:莫明作

    学生

    讲师介绍:本人就读于兴义民族师范学院,即将毕业,共同学习,共同成长。

    ☛点击立即跟老师学习☚

     

    「你将学到什么?」

    课程主要学习树莓派的一些基础知识和一些常规的操作和安装软件出现的常见问题以及学习基于树莓派的一些项目,避免新手入坑。例如:从安装系统——远程桌面控制——中文界面的设置——密码的设置—— 安装输入法 ——Linux基础命令——文件操作——树莓派摄像头的使用 ——基于树莓派人脸识别——语音识别——图像识别——语音播报——OpenCV2的安装——无论是新手还是树莓派爱好者希望能在里边共同学习到一些树莓派知识和使用方法。

     

    「课程学习目录」

    第1章:系统安装效果
    1.树莓派系统的安装
    第2章:树莓派自动连网(无网线),ssh远程连接 桌面连接
    1.树莓派安装系统后自动连网(不需网线 不需路由器)
    2.ssh远程连接(putty)
    3.电脑自带远程桌面连接进入树莓派桌面
    第3章:树莓派设置中文界面 修改密码 安装输入法 换源效果的
    1.设置中文界面
    2.修改密码
    3.安装输入法
    4.换源
    5.树莓派扩容
    6.修改和校正树莓时间
    7.固定树莓派IP
    第4章:树莓派(Linux)一些常用的命令以及nano编辑器的使用
    1.树莓派基础命令
    2.软件安装与卸载
    3.文件目录管理
    4.nano 编辑器基本使用
    第5章:python学习以及使用
    1.树莓派添加Python3 IDLE
    2.python导入包模块
    3.Python多行注释以及单行注释
    4.Python条件语句 循环语句 输入和输出
    5.树莓派上运行python点亮LED灯
    第6章:百度云人工智能(AI)系列
    1.百度云环境的搭建
    2.人脸搜索识别
    3.活体检测
    4.语音合成
    5.语音识别
    6.人流量统计
    7.人体检测与属性识别
    8.车牌识别
    9.相似度图片搜索

     

    7项超值权益,保障学习质量」

    • 大咖讲解

    技术专家系统讲解传授编程思路与实战。

    • 答疑服务

    专属社群随时沟通与讲师答疑,扫清学习障碍,自学编程不再难。

    • 课程资料+课件

    超实用资料,覆盖核心知识,关键编程技能,方便练习巩固。(部分讲师考虑到版权问题,暂未上传附件,敬请谅解)

    • 常用开发实战

    企业常见开发实战案例,带你掌握Python在工作中的不同运用场景。

    • 大牛技术大会视频

    2019Python开发者大会视频免费观看,送你一个近距离感受互联网大佬的机会。

    • APP+PC随时随地学习

    满足不同场景,开发编程语言系统学习需求,不受空间、地域限制。

     

    「什么样的技术人适合学习?」

    • 想进入互联网技术行业,但是面对多门编程语言不知如何选择,0基础的你
    • 掌握开发、编程技术单一、冷门,迫切希望能够转型的你
    • 想进入大厂,但是编程经验不够丰富,没有竞争力,程序员找工作难。

     

    「悉心打造精品好课,2天学到大牛3年项目经验」

    【完善的技术体系】

    技术成长循序渐进,帮助用户轻松掌握

    掌握Python知识,扎实编码能力

    【清晰的课程脉络】

    浓缩大牛多年经验,全方位构建出系统化的技术知识脉络,同时注重实战操作。

    【仿佛在大厂实习般的课程设计】

    课程内容全面提升技术能力,系统学习大厂技术方法论,可复用在日后工作中。

     

    「你可以收获什么?」

    树莓派安装系统,中文界面,密码等一些基本配置

    树莓派ssh远程控制 图形界面的安装使用

    python点亮一盏灯

    基于树莓派人脸识别,语音识别,图像识别

     

    展开全文
  • ansible-raspi-playbooks:用于设置和更新树莓派项目的手册
  • alarmpi, 这是 树莓派 项目的最新版本闹钟 欢迎使用AlarmPi项目。这是你的树莓派的"一个简单的语音和新闻时钟"。 请随意接受它,并按照你的意愿做。 这个项目是 3个独立项目的顶点,可以在这里看到: ...
  • 5 个很适合在课堂上演示的树莓派项目 1. 我的世界: Pi 源于 Raspberry Pi 基金会.CC BY-SA 4.0 “我的世界”是世界上几乎每一个青少年都特别喜欢的一款游戏,而且它成功抓住了年轻人眼球,成为目前最...
    5 个很适合在课堂上演示的树莓派项目

    1. 我的世界: Pi

    源于 Raspberry Pi 基金会. CC BY-SA 4.0

    源于 Raspberry Pi 基金会. CC BY-SA 4.0

    “我的世界”是世界上几乎每一个青少年都特别喜欢的一款游戏,而且它成功抓住了年轻人眼球,成为目前最能激发年轻人创造力的游戏之一。这个树莓派版本自带的我的世界不仅仅是一个具有创造性的建筑游戏,还是一个具有编程接口,可以通过 Python 与之交互的版本。

    我的世界:Pi 版对于老师来说是一个教授学生解决问题和编写代码完成任务的好方式。你可以使用 Python API 创建一个房子,并且一直跟随这你的脚步移动,在所到之处建造一座桥,让天空落下熔岩雨滴,在空中显示温度,以及其它你可以想象到的一切东西。

    详情请见 "我的世界: Pi 入门"

     

    2. 反应游戏和交通灯

    源于 Low Voltage Labs. CC BY-SA 4.0

    源于 Low Voltage LabsCC BY-SA 4.0

    使用树莓派可以很轻松地进行物理计算,只需要连接几个 LED 和按钮到开发板上的 GPIO 接口,再用几行代码你就可以按下按钮来开灯。一旦你了解了如何使用代码来完成这些基本的操作,接下来就可以根据你的想象来做其它事情了。

    如果你知道如何让一个灯闪烁,你就可以控制三个灯闪烁。挑选三个和交通灯一样颜色的 LED 灯,然后编写控制交通灯的代码。如果你知道如何使用按钮触发事件,那么你就可以模拟一个行人过马路。同时你可以参考其它已经完成的交通灯附件,比如PI-TRAFFICPI-STOPTraffic HAT,等等。

    代码并不是全部——这只是一个演练,让你理解现实世界里系统是如何完成设计的。计算思维是一个让你终身受用的技能。

    源于 Raspberry Pi 基金会. CC BY-SA 4.0

    源于 Raspberry Pi 基金会. CC BY-SA 4.0

    接下来试着接通两个按钮和 LED 灯的电源,实现一个双玩家的反应游戏 —— 让 LED 灯随机时间点亮,然后看是谁抢先按下按钮。

    要想了解更多可以看看 GPIO Zero recipes。你所需要的资料都可以在 CamJam EduKit 1 找到。

     

    3. Sense HAT 电子宠物

    Astro Pi —— 一个增强版的树莓派 —— 将在 12 月问世,但是你并没有错过亲手把玩这个硬件的机会。Sense HAT 是使用在 Astro Pi 的一个传感器扩展板,现在已经开放购买了。你可以使用它来进行数据搜集、科学实验,游戏等等。可以看看下面树莓派的 Carrie Anne 拍摄的 Gurl Geek Diaries 的视频,里面演示了一种很棒的入门途径——在 Sense HAT 屏幕上自己设计一个生动的像素宠物:视频(墙外)。

    详见 "探索 Sense HAT."

     

    4. 红外鸟笼

    源于 Raspberry Pi 基金会. CC BY-SA 4.0

    源于 Raspberry Pi 基金会. CC BY-SA 4.0

    让整个班级都可以参与进来的好主意是在鸟笼里放置一个树莓派和夜视镜头,以及一些红外线灯,这样子你就可以在黑暗中看见鸟笼里的情况了,然后使用树莓派通过网络串流视频。然后就可以等待小鸟归笼了,你可以在不打扰的情况下近距离观察小窝里的它们了。

    要了解更多有关红外线和光谱的知识,以及如何校准摄像头焦点和使用软件控制摄像头,可以访问 打造一个红外鸟笼

     

    5. 机器人

    源于 Raspberry Pi 基金会. CC BY-SA 4.0

    源于 Raspberry Pi 基金会. CC BY-SA 4.0

    只需要一个树莓派、很少的几个电机和电机控制器,你就可以自己动手制作一个机器人。可以制作的机器人有很多种,从简单的由几个轮子和自制底盘拼凑的简单小车,到由游戏控制器驱动、具有自我意识、配备了传感器,安装了摄像头的金属小马。

    要学习如何控制不同的电机,可以使用 RTK 电机驱动开发板入门或者使用配置了电机、轮子和传感器的 CamJam 机器人开发套件——具有很大的价值和大量的学习潜力。

    或者,如果你还想了解更多核心内容,可以试试 PiBorg 的 4Borg(£99/$150)和 DiddyBorg(£180/$273),或者购买 Metal 版 DoodleBorg (£250/$380),然后构建一个最小版本的 DoodleBorg tank(非卖品)。

    详情可见 机器人装备表

    树莓派入门教程图解PDF版  http://www.linuxidc.com/Linux/2016-03/129109.htm

    如何在树莓派 2 运行 Ubuntu Snappy Core  http://www.linuxidc.com/Linux/2015-08/122438.htm

    在(Raspberry Pi)树莓派上安装NodeJS  http://www.linuxidc.com/Linux/2015-01/111714.htm

    Raspberry Pi 树莓派上安装Weston http://www.linuxidc.com/Linux/2013-06/86685.htm

    用于Raspberry Pi 的Linux 操作系统已经可用 http://www.linuxidc.com/Linux/2012-03/56058.htm

    Raspberry Pi(树莓派)试用小记 http://www.linuxidc.com/Linux/2013-10/91008.htm

    Raspberry Pi(树莓派)的安装、配置IP及软件源等入门 http://www.linuxidc.com/Linux/2013-10/91009.htm

    转载于:https://www.cnblogs.com/RM-Anton/p/9116790.html

    展开全文
  • raspi_project 带有Raspberry-pi3的智能家居
  • 所需硬件:树莓派3B,TP-LINK WiFi模块,笔记本电脑,网线 所需软件:Putty、远程桌面链接、python、cmd界面 树莓派3B是只有信用卡大小的微型电脑,其系统基于Linux。在WIFI网络互传测试实验中作为服务器Server端...

    实验原理

    所需硬件:树莓派3B,TP-LINK WiFi模块,笔记本电脑,网线

    所需软件:Putty、远程桌面链接、python、cmd界面

    树莓派3B是只有信用卡大小的微型电脑,其系统基于Linux。在WIFI网络互传测试实验中作为服务器Server端,接收PC端的链接请求,并向其发射数据。

    TP-LINK WiFi模块搭建在树莓派3B上为树莓派3B链接无线网络。

    PC端作为客户端向树莓派3B发送链接请求,链接上后接收树莓派3B发送的数据。

    无线网络为树莓派和PC端提供同一个网络信号。

    网线首次连接树莓派获取IP。

    实验步骤

    1. 树莓派安装系统,搭建TP-LINK WiFi模块,。
    2. Putty第一次链接树莓派可以通过网线链接获得一个IP地址,进入连接状态输入pi与密码raspberry,可以利用远程桌面连接工具连接到树莓派的桌面进行操作,并且设置无线的静态IP

    设置静态IP步骤:

    1)sudo vim /etc/dhcpcd.conf

    2)interface wlan1

     

    static ip_address=192.168.1.133/24

    static routers=192.168.1.1

    static domain_name_servers=192.168.1.1

    eth0是有线的配置  , wlan0是无线配置

    ip_address就是静态IP , 后面要接/24

    routers是网关

    static domain_name_servers是DNS

    3)sudo reboot

    1. 树莓派上利用python编写server程序:
     1 import socket
     2 
     3 import time
     4 
     5 import sys
     6 
     7 HOST_IP = "192.168.1.133"
     8 
     9 HOST_PORT = 8888
    10 
    11 #创建Socket,SOCK_STREAM表示类型为TCP
    12 
    13 print("Starting socket: TCP...")
    14 
    15 socket_tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    16 
    17  #绑定IP和端口,并进行监听
    18 
    19 #137.58.230.162为本机IP,端口为7654
    20 
    21 print("TCP server listen @ %s:%d!" %(HOST_IP, HOST_PORT) )
    22 
    23 host_addr = (HOST_IP, HOST_PORT)
    24 
    25 socket_tcp.bind(host_addr)
    26 
    27 socket_tcp.listen(1)
    28 
    29 #接受Client发出的连接请求,返回值包含了Client的IP和端口
    30 
    31 socket_con, (client_ip, client_port) = socket_tcp.accept()
    32 
    33 print("Connection accepted from %s." %client_ip)
    34 
    35 #向Clinet发送数据
    36 
    37 socket_con.send("Welcome to RPi TCP server!")
    38 
    39 socket_tcp.close()

     

    运行结果:

    1 Starting socket: TCP...
    2 
    3 TCP server listen @ 192.168.1.133:8888!
    4 
    5 Connection accepted from 192.168.1.111.

     

    注意:

    端口号为8888可以自己设置,范围为0-65535,设置时不能占用已经使用的端口号。如Putty连接树莓派用到了22这个端口,就不能再设置成22.

    1. PC 机上利用python编写cline程序:
     1 import socket   
     2 
     3 import time
     4 
     5 import sys    
     6 
     7 SERVER_IP = "192.168.1.133"
     8 
     9 SERVER_PORT = 8888
    10 
    11 print("Starting socket: TCP...")
    12 
    13 socket_tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    14 
    15 print("Connecting to server @ %s:%d..." %(SERVER_IP, SERVER_PORT))
    16 
    17 server_addr = (SERVER_IP, SERVER_PORT)
    18 
    19 socket_tcp.connect(server_addr)  
    20 
    21 data = socket_tcp.recv(512)
    22 
    23 print("Server: %s" %data)
    24 
    25 socket_tcp.close()

     

     运行结果:

    1 runfile('E:/socket_tcp_clinet1.py', wdir='E:')
    2 
    3 Starting socket: TCP...
    4 
    5 Connecting to server @ 192.168.1.133:8888...
    6 
    7 Server: Welcome to RPi TCP server!

     

    命令大全

    sudo raspi-config 进入树莓派设置界面

    hostname -I      树莓派查IP

    sudo apt-get install xrdp  下载xrdp服务包

    cmd  arp  -a     电脑查IP

    man              查询命令

    ls               查看文件夹里面的内容

    cat  /boot/config.txt -n  显示内容

    mkdir            新建文件夹

    cd /usr          进入目录

    sudo reboot      重启树莓派

    vim              进入vim

    :q!              退出vim

    :wq              保存并退出vim

    i a o            vim切换到输入状态

    Esc              切换状态

    ipconfig         电脑查IP

    ifconfig          树莓派查IP

    python test.py    运行python程序

    netstat  -an      电脑查端口号

    netstat  p        树莓派查端口号

    转载于:https://www.cnblogs.com/fpzs/p/9625706.html

    展开全文
  • 项目涉及到的材料有: 树莓派4b 1个LED灯 2根杜邦母线 照片 1.1了解树莓派引脚 以下是树莓派的引脚图: 大家可以看到,一共有40个引脚,每个引脚都带有编号,左列是奇数,右列是偶数...

    第一节 点亮LED灯

    1.1 了解树莓派引脚

    1.2 用Python控制GPIO

    1.3 连接LED灯

    1.4 点亮LED灯

    1.5 用LED灯表示摩斯电码


    在本节,我们将学习如何用树莓派点亮LED灯(发光二极管)并控制其明暗程度,最后我们还会结合摩斯电码用LED灯来表示"Hello World"。该项目涉及到的材料有:

    1. 树莓派 * 1
    2. LED灯 * 1
    3. 限流电阻 * 1
    4. 杜邦线(母对母) * 3

     

    1.1 了解树莓派引脚

    以下是树莓派的引脚图:

    大家可以看到,一共有40个引脚,每个引脚都带有编号,左列是奇数,右列是偶数。我们用到的引脚主要分为以下几类:

    • GPIO (General-Purpose Input/Output)引脚:用来读取或输出高低电平,我们可以用该引脚达到与其他硬件交互的目的。
    • Ground引脚:缩写为GND,用于接地。
    • 3V3和5V引脚:给其他硬件供电。

     

    我们可以在终端中输入pinout命令来快速查看当前版本树莓派的引脚图:

     

    1.2 用Python控制GPIO

    我们可以使用RPi.GPIO这个库来控制GPIO,通过以下命令即可安装:

    pip3 install RPi.GPIO

     

    接着导入RPi.GPIO库(此时运行代码,如果没有任何报错,说明安装成功):

    import RPi.GPIO as GPIO

     

    在导入模块后要做的第一件事就是确定所采用的GPIO引脚编码方式:

    GPIO.setmode(GPIO.BOARD)

    注:树莓派的GPIO引脚有多种编码方式,如wiringPi、BCM、BOARD等。RPi.GPIO这个库提供BCM和BOARD编码方式,但在本系列教程中笔者将统一使用BOARD编码(即引脚上的编号)。使用该编码方式的好处是:树莓派各版本的BOARD编码方式是相同的,所以就算更换了树莓派版本,我们也无需修改代码。关于其他编码方式,笔者这里不作详解,大家可以自行去了解下。

     

    确定完编码方式之后,我们就要设置所用到的GPIO引脚(先设置,再使用):

    # 将引脚设置为输入模式
    GPIO.setup(num, GPIO.IN)
    
    # 将引脚设置为输出模式
    GPIO.setup(num, GPIO.OUT)

    我们可以通过GPIO.setup方法将相应引脚设置为输入模式或者输出模式,num即为引脚编号(请见1.1小节中的图片)。

     

    设置完之后,我们就可以通过GPIO.input和GPIO.output来接收或者发送高低电平:

    # 通过GPIO.input方法来判断接收的是高电平还是低电平
    if GPIO.input(num) == GPIO.HIGH:
        ...
    else:
        ...
    
    # 通过GPIO.output方法来发送高低电平
    GPIO.output(num, GPIO.HIGH)
    GPIO.output(num, GPIO.LOW)

    我们可以用1或者True来代替GPIO.HIGH,用0或者False来代替GPIO.LOW。

    注:树莓派GPIO引脚输出的电压为3.3V。

     

    使用完GPIO引脚后,我们要调用GPIO.cleanup()来将引脚释放掉:

    # 释放GPIO引脚资源
    GPIO.cleanup()

    如果不释放,那么再次运行代码后,会提示当前GPIO引脚正在使用当中:

    如果不想要出现这提示,可以使用GPIO.setwatnings(False)来屏蔽掉。不过大家应该养成好习惯,记得加入这行代码,否则可能会对树莓派造成损坏。

     

    1.3 连接LED灯

    首先我们来学习下如何区分LED灯的正负极,笔者这里提供两种方法:

    1. 长腿的是正极,短腿的是负极。
    2. 铁片小的是正极,铁片大的是负极。

     

    本项目中所使用的黄色LED灯工作电压约为1.8V (可以使用万用表测量),而这种LED灯的额定电流为20mA,我们应该加上一个限流电阻来防止LED灯被烧坏。

    已知树莓派GPIO高电平输出电压为3.3V,黄色LED等的工作电压为1.8V,额定电流为20mA。根据欧姆定律I = U / R,限流电阻最小应为:(3.3-1.8) / 0.02 = 75 Ω

    注:不同颜色的LED灯工作电压不同,请大家根据实际情况挑选合适的限流电阻。如果电阻太小,LED灯会过亮容易烧坏;如果电阻过大,LED灯会太暗,也会导致现象不明显。一般LED灯给个2mA-10mA电流就会发亮,只是亮度不同,给20mA的话就最亮了。

     

    笔者这里选择了一个100Ω的限流电阻。

    现在我们将LED灯的两个腿插到杜邦线中(短腿黄色,长腿橙色):

    再将限流电阻插到任意一个杜邦线中,笔者这里插到了连接短腿的杜邦线里:

    接着将限流电阻的另一头插到剩下的一根杜邦线中:

    接着将连接负极的线插到14号GND接地引脚中,将连接正极的线插到16号GPIO引脚中:

                               

    到此LED灯的连接工作就结束了。

    注:在以后的章节中我们会使用面包板。

     

    1.4 点亮LED灯

    要点亮LED灯,我们只需给它一个高电平即可:

    import RPi.GPIO as GPIO
    import time
    
    # 设置编码方式
    GPIO.setmode(GPIO.BOARD)
    
    # 设置GPIO引脚
    GPIO.setup(16, GPIO.OUT)
    
    # 用16号引脚输出一个高电平,灯亮
    GPIO.output(16, GPIO.HIGH)
    
    # 等3秒
    time.sleep(3)
    
    # 用16号引脚输出一个低电平,灯灭
    GPIO.output(16, GPIO.LOW)
    
    # 等3秒
    time.sleep(3)
    
    # 再亮灯
    GPIO.output(16, GPIO.HIGH)
    
    # 等3秒
    time.sleep(3)
    
    # 使用结束,释放引脚
    GPIO.cleanup()

    这里我们还引入了time模块来控制亮灯灭灯时长。最后结束时,调用GPIO.cleanup()释放了引脚资源。

     

    以下是代码运行后的视频:

    《树莓派项目实战》第一节 点亮LED灯

     

    1.5 用LED灯表示摩斯电码

    下面是摩斯电码对照表:

    我们将它用python字典来表示:

    MORSE_DICT = {
        'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.', 'G': '--.',
        'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.',
        'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.', 'S': '...', 'T': '-', 'U': '..-',
        'V': '...-', 'W': '.--', 'X': '-..-',  'Y': '-.--', 'Z': '--..',
    
        '1': '.----', '2': '..---', '3': '...--', '4': '....-', '5': '.....',
        '6': '-....', '7': '--...', '8': '---..', '9': '----.', '0': '-----',
    }
    

    那怎么用灯来表示摩斯电码呢?我们来看下图片上的这段话:

    翻译出来是这样的:

    1. 一个点算一个单位。
    2. 一个横线算三个单位。
    3. 单个字母的摩斯电码,其点线(点点或线线)间的间隔算一个单位。
    4. 字母与字母间的间隔算三个单位。
    5. 单词与单词间的间隔算七个单位。

    好,那么我们规定一个单位算0.1秒,碰到点和线就亮相应时长,碰到间隔就灭相应时长。

     

    现在我们就将LED灯摩斯电码结合起来表示"Hello World"这句话。以下是完整代码:

    import RPi.GPIO as GPIO
    import time
    
    # 设置编码方式
    GPIO.setmode(GPIO.BOARD)
    
    # 设置GPIO引脚
    GPIO.setup(16, GPIO.OUT)
    
    # 摩斯电码对照字典
    MORSE_DICT = {
        'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.', 'G': '--.',
        'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.',
        'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.', 'S': '...', 'T': '-', 'U': '..-',
        'V': '...-', 'W': '.--', 'X': '-..-',  'Y': '-.--', 'Z': '--..',
    
        '1': '.----', '2': '..---', '3': '...--', '4': '....-', '5': '.....',
        '6': '-....', '7': '--...', '8': '---..', '9': '----.', '0': '-----',
    }
    
    # 时长单位
    UNIT = 0.1
    
    
    def get_morse(sentence):
        """获取每个字母的摩斯电码"""
        morse_list = []
    
        for c in sentence.upper():
            morse = MORSE_DICT.get(c)
    
            if morse:
                morse_list.append(morse)
            else:
                morse_list.append(' '*7)
    
        print(morse_list)
        return morse_list
    
    
    def show(morse_list):
        """遍历列表,用LED灯表示点、线和间隔"""
        for element in morse_list:
    
            # 单词间的间隔
            if ' ' in element:
                GPIO.output(16, GPIO.LOW)
                time.sleep(UNIT*7)
    
            # 点和线
            else:
                for i, c in enumerate(element):
                    if c == '.':
                        GPIO.output(16, GPIO.HIGH)
                        time.sleep(UNIT)
    
                    elif c == '-':
                        GPIO.output(16, GPIO.HIGH)
                        time.sleep(UNIT*3)
    
                    # 点或线如果是最后一个的话,则不用算间隔
                    if i != len(element)-1:
                        GPIO.output(16, GPIO.LOW)
                        time.sleep(UNIT)
    
                # 字母间的间隔
                GPIO.output(16, GPIO.LOW)
                time.sleep(UNIT*3)
    
    
    def main():
        """主逻辑"""
        sentence = 'Hello World'            # 1
    
        morse_list = get_morse(sentence)    # 2
        show(morse_list)                    # 3
    
        GPIO.cleanup()                      # 4
    
    
    if __name__ == '__main__':
        main()
    

    1. 首先构造"Hello World"字符串,存储在sentence变量中。

    2. 通过get_morse方法,循环遍历字符串中每个字符,转换成摩斯电码后添加到morse_list列表中。由于字典中的键是大写的,所以要调用upper()将sentence中的字符变为大写。碰到空字符时,就表示遇上了单词间的间隔,所以我们就往列表中添加7个空字符(1个字符为0.1秒)。"Hello World"打印出来的morse_list是这样的:

    ['....', '.', '.-..', '.-..', '---', '       ', '.--', '---', '.-.', '.-..', '-..']
    

    3. 接着我们调用show()来表示morse_list中的点、线以及间隔。

    • 循环列表,如果元素中存在空字符' ',那么就表明现在碰到了单词间的间隔,输出低电平让灯灭掉,持续0.7秒;
    • 如果不存在空字符,那么就是字母的摩斯电码,于是我们循环该摩斯电码中的每个字符。如果是点'.',那么输出一个高电平,持续0.1秒;如果是线'-',那么点亮0.3秒。点或线表示完之后就要表示间隔,持续0.1秒。不过如果点或者线已经是该摩斯电码中最后一个了的话,则无需表示间隔。
    • 单个字母的摩斯电码循环完毕之后,就可以表示字母间的间隔了,持续0.3秒。

    4. 表示完毕后,释放引脚资源。

     

    运行视频如下:

    《树莓派项目实战》用LED灯表示摩斯电码

     

    提示:如果感觉太快,大家可以调整UNIT的值来调整亮灭灯时长。

    展开全文
  • RaspberryPi Model B的第一个项目-多功能闹钟。 我之所以选择这个项目,是因为目前市场上几乎没有任何廉价的互联网收音机闹钟(大多从80€起)。因此,DIY
  • 树莓派项目汇总(整理)

    万次阅读 2016-06-17 18:25:17
    树莓派可用软件包一览  http://www.raspberryconnect.com/raspbian-packages-list http://www.raspberrypi-spy.co.uk/ 极客工坊: http://www.geek-workshop.com/forum-
  • 看看我在好玩、能学习、有用处的树莓派上做了些什么。-- Anderson Silva无论是从历史上,还是从理论上讲,当时钟走到一个十年份第一年的 1 月 1 日的午夜 0 点时,就开始了...
  • 树莓派项目(1)人脸识别python

    千次阅读 2019-10-03 01:45:39
    ...使用树莓派进行简易人脸识别 http://shumeipai.nxez.com/2017/03/16/raspberry-pi-face-recognition-system.html 主要学习这个加速策略 多核加跳帧…帧数可到28帧左右。 效果 1人脸检...
  • 第四节 用led阵列显示爱心 在本节,我们将学习如何用树莓派点亮led阵列,最后我们还会结合摩斯电码用LED灯来表示"Hello ...该项目涉及到的材料有: 树莓派* 1 LED灯 * 1 限流电阻 * 1 杜邦线(母对母)* 3 ...
  • 第二节 控制LED灯的亮与暗 在本节,我们将理解PWM...最后我们还会做一个呼吸灯,该项目涉及到的材料有: 树莓派4b 5个LED灯 2根杜邦母线 占空比是指在一个脉冲循环内,通电时间相对于总时间所占的比例。 ...
  • 树莓派 电脑可被用来进行多种设置用于不同的目的。-- Ben Nuttall树莓派电脑可被用来进行多种设置用于不同的目的。显然它在教育市场帮助学生在教室和创客空间中学习...
  • 项目涉及到的材料有: 树莓派 * 1 1位数码管 * 1 杜邦母线 * 10 3.1 数码管简介 数码管按段数可分为7段数码管和8段数码管,8段数码管比7段数码管多一个LED单元,也就是多一个右下角的小数点(DP---Decimal ...
  • 级联分类器 在这里,我们学习如何使用objdetect在我们的图像或视频中查找对象 ... 级联分类器训练 本教程描述了opencv_traincascade应用程序及其参数。 https://docs.opencv.org/3.3...
  • https://github.com/digitalbrain79/darknet-nnpack https://github.com/AlexeyAB/darknet#how-to-train-to-detect-your-custom-objects https://www.ctolib.com/thomaspark-pkj-darknet-nnpac...
  • 树莓派上的MQTT。 屏幕截图 视频 *基于Stephan Zerhusen的演示实现了Spring Security 更改为利用mysql而不是h2。 更改了令牌的返回以返回用户详细信息以及令牌。 更改了异常处理以处理方法级自动化异常。 更改...
  • 文章目录树莓派的引脚编号继电器|继电器与树莓派的引脚连接实际操作代码与效果沉思文章更新记录 树莓派的引脚编号 对应实际的树莓派板子,图片中左边一侧引脚标号对应树莓派靠近 CPU 一侧的引脚,右边对应树莓派靠...
  • 这是一个小型 Raspberry Pi 项目,用于构建与 Evernote 云服务很好地集成的家庭扫描解决方案。 它建立在其他人的伟大项目描述和博客之上,我试图让其他人使用该现有技术变得简单(r),例如 (不再可访问) 与...
  • 通过树莓派引脚编程操作超声波模块 |测距源代码: chaoShengBo.c /* chaoShengBo.c */ #include #include #include #define Trig 2 #define Echo 3 void chaoShengBoInit() { //超声波接收端设为输入端。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,650
精华内容 1,060
关键字:

树莓派项目