Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
MorseCode.cpp@0:303fe443c3d4, 2015-10-21 (annotated)
- Committer:
- ibose3
- Date:
- Wed Oct 21 18:06:05 2015 +0000
- Revision:
- 0:303fe443c3d4
Takes in light from a photocell and translates it to English characters on an LCD Screen
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| ibose3 | 0:303fe443c3d4 | 1 | #include "mbed.h" |
| ibose3 | 0:303fe443c3d4 | 2 | #include "TextLCD.h" |
| ibose3 | 0:303fe443c3d4 | 3 | |
| ibose3 | 0:303fe443c3d4 | 4 | TextLCD lcd(p14, p16, p17, p18, p19, p20); |
| ibose3 | 0:303fe443c3d4 | 5 | |
| ibose3 | 0:303fe443c3d4 | 6 | int Value = 0; |
| ibose3 | 0:303fe443c3d4 | 7 | int First = 1; |
| ibose3 | 0:303fe443c3d4 | 8 | int printSignal = 0; |
| ibose3 | 0:303fe443c3d4 | 9 | int clearSignal = 0; |
| ibose3 | 0:303fe443c3d4 | 10 | |
| ibose3 | 0:303fe443c3d4 | 11 | void printChar(int val) { |
| ibose3 | 0:303fe443c3d4 | 12 | switch(val) { |
| ibose3 | 0:303fe443c3d4 | 13 | case 0: |
| ibose3 | 0:303fe443c3d4 | 14 | break; |
| ibose3 | 0:303fe443c3d4 | 15 | case 184: |
| ibose3 | 0:303fe443c3d4 | 16 | lcd.putc('a'); |
| ibose3 | 0:303fe443c3d4 | 17 | break; |
| ibose3 | 0:303fe443c3d4 | 18 | case 3752: |
| ibose3 | 0:303fe443c3d4 | 19 | lcd.putc('b'); |
| ibose3 | 0:303fe443c3d4 | 20 | break; |
| ibose3 | 0:303fe443c3d4 | 21 | case 15080: |
| ibose3 | 0:303fe443c3d4 | 22 | lcd.putc('c'); |
| ibose3 | 0:303fe443c3d4 | 23 | break; |
| ibose3 | 0:303fe443c3d4 | 24 | case 936: |
| ibose3 | 0:303fe443c3d4 | 25 | lcd.putc('d'); |
| ibose3 | 0:303fe443c3d4 | 26 | break; |
| ibose3 | 0:303fe443c3d4 | 27 | case 8: |
| ibose3 | 0:303fe443c3d4 | 28 | lcd.putc('e'); |
| ibose3 | 0:303fe443c3d4 | 29 | break; |
| ibose3 | 0:303fe443c3d4 | 30 | case 2792: |
| ibose3 | 0:303fe443c3d4 | 31 | lcd.putc('f'); |
| ibose3 | 0:303fe443c3d4 | 32 | break; |
| ibose3 | 0:303fe443c3d4 | 33 | case 3816: |
| ibose3 | 0:303fe443c3d4 | 34 | lcd.putc('g'); |
| ibose3 | 0:303fe443c3d4 | 35 | break; |
| ibose3 | 0:303fe443c3d4 | 36 | case 680: |
| ibose3 | 0:303fe443c3d4 | 37 | lcd.putc('h'); |
| ibose3 | 0:303fe443c3d4 | 38 | break; |
| ibose3 | 0:303fe443c3d4 | 39 | case 40: |
| ibose3 | 0:303fe443c3d4 | 40 | lcd.putc('i'); |
| ibose3 | 0:303fe443c3d4 | 41 | break; |
| ibose3 | 0:303fe443c3d4 | 42 | case 48056: |
| ibose3 | 0:303fe443c3d4 | 43 | lcd.putc('j'); |
| ibose3 | 0:303fe443c3d4 | 44 | break; |
| ibose3 | 0:303fe443c3d4 | 45 | case 3768: |
| ibose3 | 0:303fe443c3d4 | 46 | lcd.putc('k'); |
| ibose3 | 0:303fe443c3d4 | 47 | break; |
| ibose3 | 0:303fe443c3d4 | 48 | case 2984: |
| ibose3 | 0:303fe443c3d4 | 49 | lcd.putc('l'); |
| ibose3 | 0:303fe443c3d4 | 50 | break; |
| ibose3 | 0:303fe443c3d4 | 51 | case 952: |
| ibose3 | 0:303fe443c3d4 | 52 | lcd.putc('m'); |
| ibose3 | 0:303fe443c3d4 | 53 | break; |
| ibose3 | 0:303fe443c3d4 | 54 | case 232: |
| ibose3 | 0:303fe443c3d4 | 55 | lcd.putc('n'); |
| ibose3 | 0:303fe443c3d4 | 56 | break; |
| ibose3 | 0:303fe443c3d4 | 57 | case 15288: |
| ibose3 | 0:303fe443c3d4 | 58 | lcd.putc('o'); |
| ibose3 | 0:303fe443c3d4 | 59 | break; |
| ibose3 | 0:303fe443c3d4 | 60 | case 12008: |
| ibose3 | 0:303fe443c3d4 | 61 | lcd.putc('p'); |
| ibose3 | 0:303fe443c3d4 | 62 | break; |
| ibose3 | 0:303fe443c3d4 | 63 | case 61112: |
| ibose3 | 0:303fe443c3d4 | 64 | lcd.putc('q'); |
| ibose3 | 0:303fe443c3d4 | 65 | break; |
| ibose3 | 0:303fe443c3d4 | 66 | case 744: |
| ibose3 | 0:303fe443c3d4 | 67 | lcd.putc('r'); |
| ibose3 | 0:303fe443c3d4 | 68 | break; |
| ibose3 | 0:303fe443c3d4 | 69 | case 168: |
| ibose3 | 0:303fe443c3d4 | 70 | lcd.putc('s'); |
| ibose3 | 0:303fe443c3d4 | 71 | break; |
| ibose3 | 0:303fe443c3d4 | 72 | case 56: |
| ibose3 | 0:303fe443c3d4 | 73 | lcd.putc('t'); |
| ibose3 | 0:303fe443c3d4 | 74 | break; |
| ibose3 | 0:303fe443c3d4 | 75 | case 696: |
| ibose3 | 0:303fe443c3d4 | 76 | lcd.putc('u'); |
| ibose3 | 0:303fe443c3d4 | 77 | break; |
| ibose3 | 0:303fe443c3d4 | 78 | case 2744: |
| ibose3 | 0:303fe443c3d4 | 79 | lcd.putc('v'); |
| ibose3 | 0:303fe443c3d4 | 80 | break; |
| ibose3 | 0:303fe443c3d4 | 81 | case 3000: |
| ibose3 | 0:303fe443c3d4 | 82 | lcd.putc('w'); |
| ibose3 | 0:303fe443c3d4 | 83 | break; |
| ibose3 | 0:303fe443c3d4 | 84 | case 15032: |
| ibose3 | 0:303fe443c3d4 | 85 | lcd.putc('x'); |
| ibose3 | 0:303fe443c3d4 | 86 | break; |
| ibose3 | 0:303fe443c3d4 | 87 | case 60344: |
| ibose3 | 0:303fe443c3d4 | 88 | lcd.putc('y'); |
| ibose3 | 0:303fe443c3d4 | 89 | break; |
| ibose3 | 0:303fe443c3d4 | 90 | case 15272: |
| ibose3 | 0:303fe443c3d4 | 91 | lcd.putc('z'); |
| ibose3 | 0:303fe443c3d4 | 92 | break; |
| ibose3 | 0:303fe443c3d4 | 93 | } |
| ibose3 | 0:303fe443c3d4 | 94 | } |
| ibose3 | 0:303fe443c3d4 | 95 | |
| ibose3 | 0:303fe443c3d4 | 96 | void MorseCode(int tick) { |
| ibose3 | 0:303fe443c3d4 | 97 | if(tick) { |
| ibose3 | 0:303fe443c3d4 | 98 | printSignal = 0; |
| ibose3 | 0:303fe443c3d4 | 99 | clearSignal = 0; |
| ibose3 | 0:303fe443c3d4 | 100 | |
| ibose3 | 0:303fe443c3d4 | 101 | Value = Value << 1; |
| ibose3 | 0:303fe443c3d4 | 102 | Value += 1; |
| ibose3 | 0:303fe443c3d4 | 103 | } |
| ibose3 | 0:303fe443c3d4 | 104 | else { |
| ibose3 | 0:303fe443c3d4 | 105 | printSignal += 1; |
| ibose3 | 0:303fe443c3d4 | 106 | clearSignal += 1; |
| ibose3 | 0:303fe443c3d4 | 107 | |
| ibose3 | 0:303fe443c3d4 | 108 | Value = Value << 1; |
| ibose3 | 0:303fe443c3d4 | 109 | } |
| ibose3 | 0:303fe443c3d4 | 110 | |
| ibose3 | 0:303fe443c3d4 | 111 | if(First) { |
| ibose3 | 0:303fe443c3d4 | 112 | lcd.cls(); |
| ibose3 | 0:303fe443c3d4 | 113 | First = 0; |
| ibose3 | 0:303fe443c3d4 | 114 | } |
| ibose3 | 0:303fe443c3d4 | 115 | |
| ibose3 | 0:303fe443c3d4 | 116 | //Prints character after 3 ticks |
| ibose3 | 0:303fe443c3d4 | 117 | if(printSignal == 3) { |
| ibose3 | 0:303fe443c3d4 | 118 | printChar(Value); |
| ibose3 | 0:303fe443c3d4 | 119 | printSignal = 0; |
| ibose3 | 0:303fe443c3d4 | 120 | Value = 0; |
| ibose3 | 0:303fe443c3d4 | 121 | } |
| ibose3 | 0:303fe443c3d4 | 122 | |
| ibose3 | 0:303fe443c3d4 | 123 | //Clears screen after 20 ticks |
| ibose3 | 0:303fe443c3d4 | 124 | if(clearSignal == 20) { |
| ibose3 | 0:303fe443c3d4 | 125 | lcd.cls(); |
| ibose3 | 0:303fe443c3d4 | 126 | clearSignal = 0; |
| ibose3 | 0:303fe443c3d4 | 127 | } |
| ibose3 | 0:303fe443c3d4 | 128 | } |