Arduino - 利用tone發出音頻的摩斯密碼(Morse code)


目的


透過Serial視窗輸入要傳送的文字,喇叭會發出該文字對應的音頻的Morse code

成果:


Arduino Code:
  1. #define Do 440
  2. const byte audio11 = 11;
  3. int dotLen = 150;
  4. int dashLen = 700;
  5. int incomingByte = 0; // 用來儲存收進來的 data byte
  6.  
  7. void setup() {
  8. Serial.begin(9600);
  9. }
  10.  
  11. void loop() {
  12. // 檢查是否有資料可供讀取
  13. if (Serial.available() > 0) {
  14. // 讀取進來的 byte
  15. incomingByte = Serial.read();
  16.  
  17. // 印出收到的資料
  18. Serial.println(incomingByte, DEC);
  19. GetChar(incomingByte);
  20. delay(800);
  21. }
  22. }
  23.  
  24. void MorseDot() {
  25. tone(audio11, Do, dotLen); // start playing a tone
  26. delay(500); // hold in this position
  27. }
  28.  
  29. // DASH
  30. void MorseDash() {
  31. tone(audio11, Do, dashLen); // start playing a tone
  32. delay(800); // hold in this position
  33. }
  34.  
  35. void GetChar(char tmpChar) {
  36. switch (tmpChar) {
  37. case 'a':
  38. MorseDot();
  39. MorseDash();
  40. break;
  41. case 'b':
  42. MorseDash();
  43. MorseDot();
  44. MorseDot();
  45. MorseDot();
  46. break;
  47. case 'c':
  48. MorseDash();
  49. MorseDot();
  50. MorseDash();
  51. MorseDot();
  52. break;
  53. case 'd':
  54. MorseDash();
  55. MorseDash();
  56. MorseDot();
  57. break;
  58. case 'e':
  59. MorseDot();
  60.  
  61. break;
  62. case 'f':
  63. MorseDot();
  64.  
  65. MorseDot();
  66.  
  67. MorseDash();
  68.  
  69. MorseDot();
  70.  
  71. break;
  72. case 'g':
  73. MorseDash();
  74.  
  75. MorseDash();
  76.  
  77. MorseDot();
  78.  
  79. break;
  80. case 'h':
  81. MorseDot();
  82.  
  83. MorseDot();
  84.  
  85. MorseDot();
  86.  
  87. MorseDot();
  88.  
  89. break;
  90. case 'i':
  91. MorseDot();
  92.  
  93. MorseDot();
  94.  
  95. break;
  96. case 'j':
  97. MorseDot();
  98.  
  99. MorseDash();
  100.  
  101. MorseDash();
  102.  
  103. MorseDash();
  104.  
  105. break;
  106. case 'k':
  107. MorseDash();
  108.  
  109. MorseDot();
  110.  
  111. MorseDash();
  112.  
  113. break;
  114. case 'l':
  115. MorseDot();
  116.  
  117. MorseDash();
  118.  
  119. MorseDot();
  120.  
  121. MorseDot();
  122.  
  123. break;
  124. case 'm':
  125. MorseDash();
  126. MorseDash();
  127.  
  128. break;
  129. case 'n':
  130. MorseDash();
  131.  
  132. MorseDot();
  133.  
  134. break;
  135. case 'o':
  136. MorseDash();
  137.  
  138. MorseDash();
  139.  
  140. MorseDash();
  141.  
  142. break;
  143. case 'p':
  144. MorseDot();
  145.  
  146. MorseDash();
  147.  
  148. MorseDash();
  149.  
  150. MorseDot();
  151.  
  152. break;
  153. case 'q':
  154. MorseDash();
  155.  
  156. MorseDash();
  157.  
  158. MorseDot();
  159.  
  160. MorseDash();
  161.  
  162. break;
  163. case 'r':
  164. MorseDot();
  165.  
  166. MorseDash();
  167.  
  168. MorseDot();
  169.  
  170. break;
  171. case 's':
  172. MorseDot();
  173.  
  174. MorseDot();
  175.  
  176. MorseDot();
  177.  
  178. break;
  179. case 't':
  180. MorseDash();
  181.  
  182. break;
  183. case 'u':
  184. MorseDot();
  185.  
  186. MorseDot();
  187.  
  188. MorseDash();
  189.  
  190. break;
  191. case 'v':
  192. MorseDot();
  193.  
  194. MorseDot();
  195.  
  196. MorseDot();
  197.  
  198. MorseDash();
  199.  
  200. break;
  201. case 'w':
  202. MorseDot();
  203.  
  204. MorseDash();
  205.  
  206. MorseDash();
  207.  
  208. break;
  209. case 'x':
  210. MorseDash();
  211.  
  212. MorseDot();
  213.  
  214. MorseDot();
  215.  
  216. MorseDash();
  217.  
  218. break;
  219. case 'y':
  220. MorseDash();
  221. MorseDot();
  222. MorseDash();
  223. MorseDash();
  224. break;
  225. case 'z':
  226. MorseDash();
  227. MorseDash();
  228. MorseDot();
  229. MorseDot();
  230. break;
  231. case '0':
  232. MorseDash();
  233. MorseDash();
  234. MorseDash();
  235. MorseDash();
  236. MorseDash();
  237. break;
  238. case '1':
  239. MorseDot();
  240. MorseDash();
  241. MorseDash();
  242. MorseDash();
  243. MorseDash();
  244. break;
  245. case '2':
  246. MorseDot();
  247. MorseDot();
  248. MorseDash();
  249. MorseDash();
  250. MorseDash();
  251. break;
  252. case '3':
  253. MorseDot();
  254. MorseDot();
  255. MorseDot();
  256. MorseDash();
  257. MorseDash();
  258. break;
  259. case '4':
  260. MorseDot();
  261. MorseDot();
  262. MorseDot();
  263. MorseDot();
  264. MorseDash();
  265. break;
  266. case '5':
  267. MorseDot();
  268. MorseDot();
  269. MorseDot();
  270. MorseDot();
  271. MorseDot();
  272. break;
  273. case '6':
  274. MorseDash();
  275. MorseDot();
  276. MorseDot();
  277. MorseDot();
  278. MorseDot();
  279. break;
  280. case '7':
  281. MorseDash();
  282. MorseDash();
  283. MorseDot();
  284. MorseDot();
  285. MorseDot();
  286. break;
  287. case '8':
  288. MorseDash();
  289. MorseDash();
  290. MorseDash();
  291. MorseDot();
  292. MorseDot();
  293. break;
  294. case '9':
  295. MorseDash();
  296. MorseDash();
  297. MorseDash();
  298. MorseDash();
  299. MorseDot();
  300. break;
  301.  
  302. default:
  303. break;
  304. }
  305. }

留言