Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Передаваемое сообщение ABCDEFGHIJKLMNOPQRSTUVWX
- //const char* OUTmes="HI I'M FIRST";
- const char* INmes=""; //сюда складывается полученное сообщение
- const char* Text="";
- int Ddot = 200; //Задержки для разных символов
- int Dtire = 600;
- int Dchar = 1200;
- int Dend = 2500; //Конец задержек
- unsigned long Time=3000;
- void setup() {
- Serial.begin(9600);
- pinMode(6,INPUT);
- }
- void loop() {
- if (millis() < Time)
- Read(); //считываем текст и декодируем
- else
- Transfer("text"); //Вместо текст передается сообщение
- }
- void dot() { //точка
- digitalWrite(6, HIGH);
- delay (Ddot);
- digitalWrite(6, LOW);
- delay (Ddot);
- }
- void tire() { //тире
- digitalWrite(6, HIGH);
- delay (Dtire);
- digitalWrite(6, LOW);
- delay (Ddot);
- }
- void Read() { //считывание
- digitalWrite(6, LOW);
- pinMode(6,INPUT);
- unsigned long int oldmil;
- if ((digitalRead(6) != 0) and (oldmil == 0)){
- oldmil = millis();
- Time=+millis();}
- if (((millis() - oldmil)>150) and ((millis() - oldmil)<300) and (digitalRead(6) == 0)){
- INmes=+".";
- oldmil=0;
- Time=+millis();
- }
- if (((millis() - oldmil)>550) and ((millis() - oldmil)<700) and (digitalRead(6) == 0)){
- INmes=+"-";
- oldmil=0;
- Time=+millis();
- }
- if (((millis() - oldmil)>1100) and ((millis() - oldmil)<1300) and (digitalRead(6) == 0)){
- INmes=+" ";
- oldmil=0;
- Time=+millis();
- }
- if (((millis() - oldmil)>2400) and (digitalRead(6) == 0)){
- Decode(INmes);
- oldmil=0;
- Time=3000;
- Serial.println(Text);
- }
- }
- void Transfer(const char* mes){// кодировка и передача информации
- for (int i=0; i<strlen(mes);i++){
- switch (mes[i]){
- case 'A':
- dot();tire();
- break;
- case 'B':
- tire();dot();dot();dot();
- break;
- case 'C':
- tire();dot();tire();dot();
- break;
- case 'D':
- tire();dot();dot();
- break;
- case 'E':
- dot();
- break;
- case 'F':
- dot();dot();tire();dot();
- break;
- case 'G':
- tire();tire();dot();
- break;
- case 'H':
- dot();dot();dot();dot();dot();
- break;
- case 'I':
- dot();dot();
- break;
- case 'J':
- dot();tire();tire();tire();
- break;
- case 'K':
- tire();dot();tire();
- break;
- case 'L':
- dot();tire();dot();dot();
- break;
- case 'M':
- tire();tire();
- break;
- case 'N':
- tire();dot();
- break;
- case 'O':
- tire();tire();tire();
- break;
- case 'P':
- dot();tire();tire();dot();
- break;
- case 'Q':
- tire();tire();dot();tire();
- break;
- case 'R':
- dot();tire();dot();
- break;
- case 'S':
- dot();dot();dot();
- break;
- case 'T':
- tire();
- break;
- case 'U':
- dot();dot();tire();
- break;
- case 'V':
- dot();dot();dot();tire();
- break;
- case 'W':
- dot();tire();tire();
- break;
- case 'X':
- tire();dot();dot();tire();
- break;
- case 'Y':
- tire();dot();tire();tire();
- break;
- case 'Z':
- tire();tire();dot();dot();
- break;
- case '1':
- dot();tire();tire();tire();tire();
- break;
- case '2':
- dot();dot();tire();tire();tire();
- break;
- case '3':
- dot();dot();dot();tire();tire();
- break;
- case '4':
- dot();dot();dot();dot();tire();
- break;
- case '5':
- dot();dot();dot();dot();dot();
- break;
- case '6':
- tire();dot();dot();dot();dot();
- break;
- case '7':
- tire();tire();dot();dot();dot();
- break;
- case '8':
- tire();tire();tire();dot();dot();
- break;
- case '9':
- tire();tire();tire();tire();dot();
- break;
- case '0':
- tire();tire();tire();tire();tire();
- break;
- case '.':
- dot();tire();dot();tire();dot();tire();
- break;
- case ',':
- tire();tire();dot();dot();tire();tire();
- break;
- case '?':
- dot();dot();tire();tire();dot();dot();
- break;
- case '!':
- dot();dot();tire();tire();dot();
- break;
- case ':':
- tire();tire();tire();dot();dot();dot();
- break;
- case '~':
- dot();tire();dot();dot();tire();dot();
- break;
- case '`':
- dot();tire();tire();tire();tire();dot();
- break;
- case '=':
- tire();dot();dot();dot();tire();
- break;
- case ' ':
- delay (Dchar);
- break;
- }
- }
- }
- void Decode(const char * mes){ // разбитие сообщения на слова
- const char* bukva="";
- for (int i=0; i<strlen(mes);i++){
- switch (mes[i]){
- case ' ':
- morze(bukva);
- Text=+" ";
- bukva="";
- break;
- case '.':
- bukva=".";
- break;
- case '-':
- bukva="-";
- break;
- }
- }
- }
- void morze(const char * mes){ //дешифровка сообщения
- if (mes =".-")
- Text=+"A";
- if (mes ="-...")
- Text=+"B";
- if (mes ="-.-.")
- Text=+"C";
- if (mes ="-..")
- Text=+"D";
- if (mes =".")
- Text=+"E";
- if (mes ="..-.")
- Text=+"F";
- if (mes ="--.")
- Text=+"G";
- if (mes ="....")
- Text=+"H";
- if (mes ="..")
- Text=+"I";
- if (mes =".---")
- Text=+"J";
- if (mes ="-.-")
- Text=+"K";
- if (mes =".-..")
- Text=+"L";
- if (mes ="--")
- Text=+"M";
- if (mes ="-.")
- Text=+"N";
- if (mes ="---")
- Text=+"O";
- if (mes =".--.")
- Text=+"P";
- if (mes ="--.-")
- Text=+"Q";
- if (mes =".-.")
- Text=+"R";
- if (mes ="...")
- Text=+"S";
- if (mes ="-")
- Text=+"T";
- if (mes ="..-")
- Text=+"U";
- if (mes ="...-")
- Text=+"V";
- if (mes =".--")
- Text=+"W";
- if (mes ="-..-")
- Text=+"X";
- if (mes ="-.--")
- Text=+"Y";
- if (mes ="--..")
- Text=+"Z";
- if (mes =".----")
- Text=+"1";
- if (mes ="..---")
- Text=+"2";
- if (mes ="...--")
- Text=+"3";
- if (mes ="....-")
- Text=+"4";
- if (mes =".....")
- Text=+"5";
- if (mes ="-....")
- Text=+"6";
- if (mes ="--...")
- Text=+"7";
- if (mes ="---..")
- Text=+"8";
- if (mes ="----.")
- Text=+"9";
- if (mes ="-----")
- Text=+"0";
- if (mes =".-.-.-")
- Text=+".";
- if (mes ="--..--")
- Text=+",";
- if (mes ="..--..")
- Text=+"?";
- if (mes ="..--.")
- Text=+"!";
- if (mes ="---...")
- Text=+":";
- if (mes =".-..-.")
- Text=+"~";
- if (mes =".----.")
- Text=+"`";
- if (mes ="-...-")
- Text=+"=";
- }
Add Comment
Please, Sign In to add comment