回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

从零开始用microbit做一个无线电报机 简单

头像 正在写bug的小天 2024.04.18 42 7

背景

最近刚刚接触到microbit,我便被它强大且易用的无线通讯功能吸引了。得益于其可以通过2.4G方式通信,只需简单设置就可以做到多块板子之间的信息收发。我便计划利用它的这个特性,做一些有意思的无线通讯小作品出来。

 

就在这时,我突然想到了摩尔斯电码(Morse code),它也被称作摩斯密码,是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。它发明于1837年,是一种早期的数字化通信形式。不同于现代化的数字通讯,摩尔斯电码只使用零和一两种状态的二进制代码,它的代码包括五种:短促的点信号“・”,保持一定时间的长信号“—”,表示点和划之间的停顿、每个词之间中等的停顿,以及句子之间长的停顿。

cdbf6c81800a19d80a8426492447ca87a41e46c4.jpeg

因为摩斯电码只是依靠一个平稳的不变调的无线电信号,所以它的无线电通讯设备比起其他方式的就会更加的简单,同时它还能在高噪声、低信号的环境中被使用。与此同时,它所需要的频宽也是很窄的,而且还能够帮助两个母语不同、在话务通讯时会遇到巨大困难的操作者之间进行沟通。

 

作品设计

而microbit板载A,B两个按键,而且还有5*5的点阵屏可供使用。我便计划利用A键表示短促的点信号“・”,B键表示长信号“—”进行信息输入,A+B键一起按下就发送。并通过点阵屏显示接收到的信息。这样,一套基于microbit的无线电报机便可以实现了

 

实现过程

本作品最核心功能的是记录输入的电码并识别出相应的字符。

在这方面我的设想是使用一串由1和2组成的变量实现。
1代表点信号“・”,2代表长信号“—”

这样以来,字符A的摩斯电码是“・—”,通过变量就可以表示为“12”
以此类推,字符B的摩斯电码是“—・・・”,通过变量就可以表示为“2111”

 

实现位数加减的方式也十分简单,
如果按下A键,也就是用户输入“1”,那么就把变量乘上10后再加上1,变量也就在末尾增加了一位“1”
如果按下B键,也就是用户输入“2”,那么就把变量乘上10后再加上2,变量也就在末尾增加了一位“2”

 

为了更加方便读者理解,在此举个栗子:

原本的数值是“212”,用户现在按下A键,那么变量就是212*10+1=2121,变量的结尾就加上了“1”

原本的数值是“212”,用户现在按下B键,那么变量就是212*10+2=2122,变量的结尾就加上了“2”

block1.png

再简简单单做个电码判断和接收逻辑

加上亿点小动画,让整体体验更加自然流畅

铛铛!完工!!!(完整代码会附在文字结尾)

(目前只做了26个字母的判断)

PixPin_2024-04-20_12-20-06.png

效果演示:

(各位大佬可以提提有什么可以改进的,新手小白做的很粗糙,权当抛砖引玉QAQ)

评论

user-avatar
  • 正在写bug的小天

    正在写bug的小天2024.04.25

    各位大佬还有什么建议可以提一下,我继续改进🤗

    0
    • 花生编程

      花生编程2024.04.20

      不错!

      1
      • 正在写bug的小天

        正在写bug的小天2024.04.21

        感谢支持!🤗

    • 花生编程

      花生编程2024.04.20

      666

      0
      • 三春牛-创客

        三春牛-创客2024.04.20

        赞赞赞

        1
        • 正在写bug的小天

          正在写bug的小天2024.04.20

          感谢支持

      • 三春牛-创客

        三春牛-创客2024.04.20

        厉害厉害

        0