Guest User

Untitled

a guest
Dec 17th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.54 KB | None | 0 0
  1. //Передаваемое сообщение ABCDEFGHIJKLMNOPQRSTUVWX
  2. //const char* OUTmes="HI I'M FIRST";
  3. const char* INmes=""; //сюда складывается полученное сообщение
  4. const char* Text="";
  5. int Ddot = 200; //Задержки для разных символов
  6. int Dtire = 600;
  7. int Dchar = 1200;
  8. int Dend = 2500; //Конец задержек
  9. unsigned long Time=3000;
  10. void setup() {
  11.  
  12. Serial.begin(9600);
  13. pinMode(6,INPUT);
  14.  
  15.  
  16. }
  17.  
  18. void loop() {
  19. if (millis() < Time)
  20. Read(); //считываем текст и декодируем
  21. else
  22. Transfer("text"); //Вместо текст передается сообщение
  23.  
  24. }
  25.  
  26. void dot() { //точка
  27. digitalWrite(6, HIGH);
  28. delay (Ddot);
  29. digitalWrite(6, LOW);
  30. delay (Ddot);
  31. }
  32.  
  33.  
  34. void tire() { //тире
  35. digitalWrite(6, HIGH);
  36. delay (Dtire);
  37. digitalWrite(6, LOW);
  38. delay (Ddot);
  39. }
  40. void Read() { //считывание
  41. digitalWrite(6, LOW);
  42. pinMode(6,INPUT);
  43. unsigned long int oldmil;
  44. if ((digitalRead(6) != 0) and (oldmil == 0)){
  45. oldmil = millis();
  46. Time=+millis();}
  47. if (((millis() - oldmil)>150) and ((millis() - oldmil)<300) and (digitalRead(6) == 0)){
  48. INmes=+".";
  49. oldmil=0;
  50. Time=+millis();
  51. }
  52. if (((millis() - oldmil)>550) and ((millis() - oldmil)<700) and (digitalRead(6) == 0)){
  53. INmes=+"-";
  54. oldmil=0;
  55. Time=+millis();
  56. }
  57. if (((millis() - oldmil)>1100) and ((millis() - oldmil)<1300) and (digitalRead(6) == 0)){
  58. INmes=+" ";
  59. oldmil=0;
  60. Time=+millis();
  61. }
  62. if (((millis() - oldmil)>2400) and (digitalRead(6) == 0)){
  63. Decode(INmes);
  64. oldmil=0;
  65. Time=3000;
  66. Serial.println(Text);
  67. }
  68. }
  69.  
  70.  
  71. void Transfer(const char* mes){// кодировка и передача информации
  72. for (int i=0; i<strlen(mes);i++){
  73. switch (mes[i]){
  74. case 'A':
  75. dot();tire();
  76. break;
  77. case 'B':
  78. tire();dot();dot();dot();
  79. break;
  80. case 'C':
  81. tire();dot();tire();dot();
  82. break;
  83. case 'D':
  84. tire();dot();dot();
  85. break;
  86. case 'E':
  87. dot();
  88. break;
  89. case 'F':
  90. dot();dot();tire();dot();
  91. break;
  92. case 'G':
  93. tire();tire();dot();
  94. break;
  95. case 'H':
  96. dot();dot();dot();dot();dot();
  97. break;
  98. case 'I':
  99. dot();dot();
  100. break;
  101. case 'J':
  102. dot();tire();tire();tire();
  103. break;
  104. case 'K':
  105. tire();dot();tire();
  106. break;
  107. case 'L':
  108. dot();tire();dot();dot();
  109. break;
  110. case 'M':
  111. tire();tire();
  112. break;
  113. case 'N':
  114. tire();dot();
  115. break;
  116. case 'O':
  117. tire();tire();tire();
  118. break;
  119. case 'P':
  120. dot();tire();tire();dot();
  121. break;
  122. case 'Q':
  123. tire();tire();dot();tire();
  124. break;
  125. case 'R':
  126. dot();tire();dot();
  127. break;
  128. case 'S':
  129. dot();dot();dot();
  130. break;
  131. case 'T':
  132. tire();
  133. break;
  134. case 'U':
  135. dot();dot();tire();
  136. break;
  137. case 'V':
  138. dot();dot();dot();tire();
  139. break;
  140. case 'W':
  141. dot();tire();tire();
  142. break;
  143. case 'X':
  144. tire();dot();dot();tire();
  145. break;
  146. case 'Y':
  147. tire();dot();tire();tire();
  148. break;
  149. case 'Z':
  150. tire();tire();dot();dot();
  151. break;
  152. case '1':
  153. dot();tire();tire();tire();tire();
  154. break;
  155. case '2':
  156. dot();dot();tire();tire();tire();
  157. break;
  158. case '3':
  159. dot();dot();dot();tire();tire();
  160. break;
  161. case '4':
  162. dot();dot();dot();dot();tire();
  163. break;
  164. case '5':
  165. dot();dot();dot();dot();dot();
  166. break;
  167. case '6':
  168. tire();dot();dot();dot();dot();
  169. break;
  170. case '7':
  171. tire();tire();dot();dot();dot();
  172. break;
  173. case '8':
  174. tire();tire();tire();dot();dot();
  175. break;
  176. case '9':
  177. tire();tire();tire();tire();dot();
  178. break;
  179. case '0':
  180. tire();tire();tire();tire();tire();
  181. break;
  182. case '.':
  183. dot();tire();dot();tire();dot();tire();
  184. break;
  185. case ',':
  186. tire();tire();dot();dot();tire();tire();
  187. break;
  188. case '?':
  189. dot();dot();tire();tire();dot();dot();
  190. break;
  191. case '!':
  192. dot();dot();tire();tire();dot();
  193. break;
  194. case ':':
  195. tire();tire();tire();dot();dot();dot();
  196. break;
  197. case '~':
  198. dot();tire();dot();dot();tire();dot();
  199. break;
  200. case '`':
  201. dot();tire();tire();tire();tire();dot();
  202. break;
  203. case '=':
  204. tire();dot();dot();dot();tire();
  205. break;
  206. case ' ':
  207. delay (Dchar);
  208. break;
  209. }
  210. }
  211. }
  212.  
  213. void Decode(const char * mes){ // разбитие сообщения на слова
  214. const char* bukva="";
  215. for (int i=0; i<strlen(mes);i++){
  216. switch (mes[i]){
  217. case ' ':
  218. morze(bukva);
  219. Text=+" ";
  220. bukva="";
  221. break;
  222. case '.':
  223. bukva=".";
  224. break;
  225. case '-':
  226. bukva="-";
  227. break;
  228. }
  229. }
  230. }
  231. void morze(const char * mes){ //дешифровка сообщения
  232. if (mes =".-")
  233. Text=+"A";
  234. if (mes ="-...")
  235. Text=+"B";
  236. if (mes ="-.-.")
  237. Text=+"C";
  238. if (mes ="-..")
  239. Text=+"D";
  240. if (mes =".")
  241. Text=+"E";
  242. if (mes ="..-.")
  243. Text=+"F";
  244. if (mes ="--.")
  245. Text=+"G";
  246. if (mes ="....")
  247. Text=+"H";
  248. if (mes ="..")
  249. Text=+"I";
  250. if (mes =".---")
  251. Text=+"J";
  252. if (mes ="-.-")
  253. Text=+"K";
  254. if (mes =".-..")
  255. Text=+"L";
  256. if (mes ="--")
  257. Text=+"M";
  258. if (mes ="-.")
  259. Text=+"N";
  260. if (mes ="---")
  261. Text=+"O";
  262. if (mes =".--.")
  263. Text=+"P";
  264. if (mes ="--.-")
  265. Text=+"Q";
  266. if (mes =".-.")
  267. Text=+"R";
  268. if (mes ="...")
  269. Text=+"S";
  270. if (mes ="-")
  271. Text=+"T";
  272. if (mes ="..-")
  273. Text=+"U";
  274. if (mes ="...-")
  275. Text=+"V";
  276. if (mes =".--")
  277. Text=+"W";
  278. if (mes ="-..-")
  279. Text=+"X";
  280. if (mes ="-.--")
  281. Text=+"Y";
  282. if (mes ="--..")
  283. Text=+"Z";
  284. if (mes =".----")
  285. Text=+"1";
  286. if (mes ="..---")
  287. Text=+"2";
  288. if (mes ="...--")
  289. Text=+"3";
  290. if (mes ="....-")
  291. Text=+"4";
  292. if (mes =".....")
  293. Text=+"5";
  294. if (mes ="-....")
  295. Text=+"6";
  296. if (mes ="--...")
  297. Text=+"7";
  298. if (mes ="---..")
  299. Text=+"8";
  300. if (mes ="----.")
  301. Text=+"9";
  302. if (mes ="-----")
  303. Text=+"0";
  304. if (mes =".-.-.-")
  305. Text=+".";
  306. if (mes ="--..--")
  307. Text=+",";
  308. if (mes ="..--..")
  309. Text=+"?";
  310. if (mes ="..--.")
  311. Text=+"!";
  312. if (mes ="---...")
  313. Text=+":";
  314. if (mes =".-..-.")
  315. Text=+"~";
  316. if (mes =".----.")
  317. Text=+"`";
  318. if (mes ="-...-")
  319. Text=+"=";
  320. }
Add Comment
Please, Sign In to add comment