KRITSADA

Use Event in microbit

Mar 5th, 2020
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. let message = "testing";
  2. let charList = "abcdefghijklmnopqrstuvwxyz";
  3. const morseMap: { [name: string]: string } = {
  4.     a: "._",
  5.     b: "_...",
  6.     c: "_._.",
  7.     d: "_..",
  8.     e: ".",
  9.     f: ".._.",
  10.     g: "__.",
  11.     h: "....",
  12.     i: "..",
  13.     j: ".___",
  14.     k: "_._",
  15.     l: "._..",
  16.     m: "__",
  17.     n: "_.",
  18.     o: "___",
  19.     p: ".__.",
  20.     q: "__._",
  21.     r: "._.",
  22.     s: "...",
  23.     t: "_",
  24.     u: ".._",
  25.     v: "..._",
  26.     w: ".__",
  27.     x: "_.._",
  28.     y: "_.__",
  29.     z: "__.."
  30. }
  31. let morseMapInverse: { [name: string]: string } = {};
  32.  
  33. charList.split("").forEach(function (c, i) {
  34.     morseMapInverse[morseMap[c]] = c;
  35. });
  36.  
  37. morseMapInverse["-"] = " ";
  38.  
  39. let dot = images.createImage(`
  40.     . . . . .
  41.     . . # . .
  42.     . # # # .
  43.     . . # . .
  44.     . . . . .
  45.     `);
  46.  
  47. let dash = images.createImage(`
  48.     . . . . .
  49.     . . . . .
  50.     # # # # #
  51.     . . . . .
  52.     . . . . .
  53.     `);
  54.  
  55. let clear = images.createImage(`
  56.     . . . . .
  57.     . . . . .
  58.     . . . . .
  59.     . . . . .
  60.     . . . . .
  61.     `);
  62.  
  63. let timings: number[] = [];
  64.  
  65.  
  66. control.onEvent(1, 1, function () {
  67.     timings.push(input.runningTime());
  68.     led.toggle(0, 0);
  69. });
  70. control.onEvent(1, 2, function () {
  71.     timings.push(input.runningTime());
  72.     led.toggle(0, 0);
  73. });
  74.  
  75. function decode(): string {
  76.     let morse = "";
  77.     let t = 0;
  78.     let on = false;
  79.     timings.forEach(function (value: number, index: number) {
  80.         if (t == 0) {
  81.             t = value;
  82.         } else {
  83.             let deltaT = value - t;
  84.             t = value;
  85.             if (deltaT < 0) {
  86.                 led.toggleAll();
  87.             }
  88.             if (index % 2 == 1) {
  89.                 if (deltaT < 250) {
  90.                     morse = morse + ".";
  91.                 } else {
  92.                     morse = morse + "_";
  93.                 }
  94.             } else {
  95.                 if (deltaT > 500) {
  96.                     morse = morse + "-";
  97.                 }
  98.             }
  99.         }
  100.         on = !on;
  101.     });
  102.     let result = "";
  103.     morse.split("-").forEach(function (value: string, index: number) {
  104.         if (morseMapInverse[value] != undefined) {
  105.             result = result + morseMapInverse[value];
  106.         } else {
  107.             result = result + "#";
  108.         }
  109.     })
  110.     return result;
  111. }
  112.  
  113. input.onButtonPressed(Button.B, function () {
  114.     basic.showString(decode());
  115.     timings = [];
  116. })
  117. basic.forever(function () {
  118.  
  119.     /*message.split("").forEach(function (char, index) {
  120.         basic.showString(char);
  121.         if (char == " ") {
  122.             basic.pause(3000);
  123.         } else {
  124.             morseMap[char].split("").forEach(function (s, i) {
  125.                 if (s == ".") {
  126.                     dot.showImage(0);
  127.                     basic.pause(1000);
  128.                     clear.showImage(0);
  129.                 } else {
  130.                     dash.showImage(0);
  131.                     basic.pause(1000);
  132.                     clear.showImage(0);
  133.                 }
  134.             });
  135.         }
  136.     });
  137.     basic.pause(5000);
  138.     */
  139. })
Add Comment
Please, Sign In to add comment