实验现象
从串行监视器输入任何字符,并通过蜂鸣器将其转换为摩尔斯电码等效的蜂鸣声。
理论学习
摩尔斯电码是一种通信系统,用于在两个不同持续时间的信号中编码任何字符,称为点和虚线。

图1 从A到Z的字母表的摩尔斯电码
实验准备
arduino主板-1
面包板-1
数据线-1
无源蜂鸣器-1
跳线若干
连接电路

实验代码

char stringToMorseCode[] = "";int audio8 = 8;      // output audio on pin 8
int note = 1200;      // music note/pitchint dotLen = 100;     // length of the morse code 'dot'
int dashLen = dotLen * 3;    // length of the morse code 'dash'void setup() {  Serial.begin(9600);
}void loop()
{ char inChar = 0;          char inData[100] = "";        // data length of 6 charactersString variable = "";String variable1 = "";int index1 = 0;if ( Serial.available() > 0 ) {                      // Read from Rx from atmega16while (Serial.available() > 0 && index1 < 100)     // read till 6th character{delay(100);inChar = Serial.read();      // start reading serilly and save to variableinData[index1] = inChar;index1++;inData[index1] = '\0';         // Add a null at the end}variable.toUpperCase();       // convert to uppercasefor (byte  i = 0 ; i < 100 ; i++) {variable.concat(String(inData[i]));    // concat strings}delay(20);}String  stringToMorseCode = String(variable);                          for (int i = 0; i < sizeof(stringToMorseCode) - 1; i++){char tmpChar = stringToMorseCode[i];tmpChar = toLowerCase(tmpChar);GetChar(tmpChar);}
}void MorseDot()
{tone(audio8, note, dotLen); // start playing a tonedelay(dotLen);              // hold in this position
}void MorseDash()
{tone(audio8, note, dashLen);  // start playing a tonedelay(dashLen);               // hold in this position
}void GetChar(char tmpChar)
{switch (tmpChar) {case 'a': MorseDot();delay(100);MorseDash();delay(100);break;case 'b':MorseDash();delay(100);MorseDot();delay(100);MorseDot();delay(100);MorseDot();delay(100);break;case 'c':MorseDash();delay(100);MorseDot();delay(100);MorseDash();delay(100);MorseDot();delay(100);break;case 'd':MorseDash();delay(100);MorseDot();delay(100);MorseDot();delay(100); break;case 'e':MorseDot();delay(100);break;case 'f':MorseDot();delay(100);MorseDot();delay(100);MorseDash();delay(100);MorseDot();delay(100);break;case 'g':MorseDash();delay(100);MorseDash();delay(100);MorseDot();delay(100);break;case 'h':MorseDot();delay(100);MorseDot();delay(100);MorseDot();delay(100);MorseDot();delay(100);break;case 'i':MorseDot();delay(100);MorseDot();delay(100);break;case 'j':MorseDot();delay(100);MorseDash();delay(100);MorseDash();delay(100);MorseDash();delay(100);break;case 'k':MorseDash();delay(100);MorseDot();delay(100);MorseDash();delay(100);break;case 'l':MorseDot();delay(100);MorseDash();delay(100);MorseDot();delay(100);MorseDot();delay(100);break;case 'm':MorseDash();delay(100);MorseDash();delay(100);break;case 'n':MorseDash();delay(100);MorseDot();delay(100);break;case 'o':MorseDash();delay(100);MorseDash();delay(100);MorseDash();delay(100);break;case 'p':MorseDot();delay(100);MorseDash();delay(100);MorseDash();delay(100);MorseDot();delay(100);break;case 'q':MorseDash();delay(100);MorseDash();delay(100);MorseDot();delay(100);MorseDash();delay(100);break;case 'r':MorseDot();delay(100);MorseDash();delay(100);MorseDot();delay(100);break;case 's':MorseDot();delay(100);MorseDot();delay(100);MorseDot();delay(100);break;case 't':MorseDash();delay(100);break;case 'u':MorseDot();delay(100);MorseDot();delay(100);MorseDash();delay(100);break;case 'v':MorseDot();delay(100);MorseDot();delay(100);MorseDot();delay(100);MorseDash();delay(100);break;case 'w':MorseDot();delay(100);MorseDash();delay(100);MorseDash();delay(100);break;case 'x':MorseDash();delay(100);MorseDot();delay(100);MorseDot();delay(100);MorseDash();delay(100);break;case 'y':MorseDash();delay(100);MorseDot();delay(100);MorseDash();delay(100);MorseDash();delay(100);break;case 'z':MorseDash();delay(100);MorseDash();delay(100);   MorseDot();delay(100);MorseDot();delay(100);break;default:break;}
}

可以安装morse解码的软件:morse code reader,自己生成码,然后自己解码。
实现效果

相关文章
【Arduino创意】制作摩尔斯电码解码器

【Arduino创意】基于蜂鸣器制作摩尔斯电码生成器相关推荐

  1. arduino串口监视器显示nan_使用Arduino开发板制作摩尔斯电码生成器

    摩尔斯电码是一种通信系统,用于在两个不同持续时间的信号中编码任何字符,称为点和虚线.摩尔斯电码由Samuel F.B开发.并进一步用于电报传输秘密信息.它在第二次世界大战时最常用.摩尔斯电码可以通过点 ...

  2. 树莓派上控制蜂鸣器模拟摩尔斯电码(电报效果)

    摩尔斯电码是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母.数字和标点符号.抗战片上听到的发报声即是这类电码信号.以下程序中通过树莓派控制蜂鸣器的发声与停止来模拟这种信号音. 首先要在 ...

  3. 基于MATLAB的摩尔斯电码系统设计

    下面是MATLAB代码开头部分 function MorseCode %% Set start up values IsFile = 0; % This is set to 1 when a file ...

  4. 摩斯电码php源码,PHP实现基于文本的摩斯电码生成器

    最近遇到一个基于输入文本生成摩斯代码音频文件的需求.几番搜索无果之后,我决定自己编写一个生成器. 因为我希望通过web的方式访问我的摩斯代码音频文件,所以我决定采用PHP作为我主要的编程语言.上面的截 ...

  5. arduino nano 蓝牙_基于Arduino的摩尔斯电码练习及无线收发报训练器

    摘要:本文介绍一款基于Arduino NANO开发的,带2.4G无线收发报功能的摩尔斯电码训练器的系统设计思路.发射端通过NANO板的外部中断引脚采集电键输入的脉冲PPM序列同时驱动喇叭播放电键音,然 ...

  6. 如何使用Arduino制作摩尔斯电报翻译器

    以编码的方式进行通信,除了迷人之外,在各个领域中具有许多应用.最常见的编码通信方法之一是摩尔斯电码.在本篇文章中,您将学习如何使用Arduino开发板制作一台翻译器来发送和接收摩尔斯电码. 什么是摩尔 ...

  7. Escape/Unescape,HTML实体编码,敲击码(Tap code),摩尔斯电码(Morse Code)

    1.Escape/Unescape 加密解码/编码解码,又叫%u编码,采用UTF-16BE模式, Escape编码/加密,就是字符对应UTF-16 16进制表示方式前面加%u.Unescape解码/解 ...

  8. 摩尔斯电码和栅栏密码 ——合天网安实验室学习笔记

    实验链接 通过学习本实验理解摩尔斯电码和栅栏密码的编码解码过程:掌握编写摩尔斯电码的编码解码程序和编写多功能栅栏密码的编码解码程序. 链接:http://www.hetianlab.com/expc. ...

  9. Mixly06:国际摩尔斯电码救难信号SOS

    S.O.S是国际摩尔斯电码救难信号. 船舶在浩瀚的大洋中航行,由于浓雾.风暴.冰山.暗礁.机器失灵.与其它船只相撞等等,往往会发生意外的事故.当死神向人们逼近时,"SOS"的遇难信 ...

  10. python 转成摩尔斯电码_一篇文章教会你摩尔斯码

    正规的摩尔斯码 对照表是这样: 其实记住主要的26个字母就够日常用了,而记26个字母有一张更简单的图: 把点和横线以字母的形态呈示出来,基本上看一遍就能记住大半了.不过要注意每个字母下方的一行小字,那 ...

最新文章

  1. c语言arr什么意思6,初识C语言(六)
  2. AI 初学者必须要了解的术语盘点
  3. 如果编程语言是飞机 | 每日趣闻
  4. 肿瘤动物模型中需要注意的伦理问题
  5. 学会这21条,你离 Vim 大神就不远了!
  6. javascript--弹出对话框 四种对话框 获得用户输入值 .
  7. 笨办法学 Python · 续 练习 17:字典
  8. 使用Jupyter Notebook+bokeh绘图入门完整步骤
  9. CentOS7网络配置ping通外网
  10. C# string 特殊的引用类型
  11. 学校题库管理系统需求分析
  12. centos7 vi保存退出_怎么保存退出vi编辑 vi常用命令大全
  13. 滴滴竟然已经投资了这么多公司?
  14. UML用例图之关联关系、包含关系、扩展关系、泛化关系详解
  15. GFS —— 分布式文件系统
  16. 跨境电商最新资讯——扬帆际海
  17. 今日来介绍关于淘宝相似商品搜索的API接口
  18. shell向文件末尾添加内容
  19. 破解版的cornerstore(mac版)
  20. 大厂地震,疯狂裁员大换血,面试冲击大厂Android移动开发工程师就在此时

热门文章

  1. 反恐精英代码_CS:GO源代码泄露;腾讯6月举办游戏发布会;侍魂:晓同名主题曲公布...
  2. CMMB手机电视自毁长城?
  3. tar:time stamp in the future
  4. centos查询 硬盘序列号查询_linux centos7非常有用的硬件信息查询命令
  5. 语法分析——自下而上
  6. RabbitMQ消息发布确认
  7. 揭秘淘宝286亿海量图片存储与处理架构(转)
  8. 记录遇到的web前端开发面试题(八股文)
  9. 【单片机】数码管显示器仿真
  10. C/C++二维数组指针(指向二维数组的指针)详解