// Author Erik Linder // Released 2011 under GNU GPLv3 // // Usage: morse( <pin number>, <speed WPM>, <1=beep, 0=PTT> ) // sendmsg( "<text-to-send>" ) // #include <Morse.h> // Use pin 13 (built-in LED of Arduino 2009) Morse morse(13, 24, 1); void setup() { } void loop() { morse.sendmsg("HELLO WORLD!"); delay (2000); }
int LDR_Pin = A0; //analog pin 0 int led = 13; // 10k between GND and A0 // LDR between 5V and A0 #define MORSE_EMPTY 0 // . #define MORSE_DOT '*' #define MORSE_DOT2 '+' #define MORSE_TIRE '-' // ( ) #define MAX_MORSE_SYMBOL_LENGTH 8 char* morseSymbol[MAX_MORSE_SYMBOL_LENGTH]; unsigned int morseSymbolLen; char* newMorseSignal; // - . // . N- n- . char* code[] = { "*-","-***","*--","--*","-**","*","***-","--**","**","*---", "-*-","*-**","--","-*","---","*--*","*-*","***","-","**-", "**-*","****","-*-*","---*","----","--*-","-*--","-**-","**-**","**--", "*-*-", "*----","**---","***--","****-","*****","-****","--***","---**","----*","-----", "......","*-*-*-","---***","-*-*-","-*--*-","*----*","*-**-*","-****-","-**-*","**--**","--**--", "-***-","********","*--*-*","**-*-", "" }; // . char* layoutCyrillic[] = { "","","","","","","","","","", "","","","","","","","","","", "","","","","","","","","","", "", "1","2","3","4","5","6","7","8","9","0", ".",",",":",";","(","\'","\"","-","/","?","!", " *DELIMITER* "," *ERR* ","@"," *END* ", "" }; // . char* layoutLatin[] = { "a","b","w","g","d","e","v","z","i","j", "k","l","m","n","o","p","r","s","t","u", "f","h","c","ö","ch","q","y","x","é","ü", "ä", "1","2","3","4","5","6","7","8","9","0", ".",",",":",";","(","\'","\"","-","/","?","!", " *DELIMITER* "," *ERR* ","@"," *END* ", "" }; char** currentLayout; char** newLayout; void setup(){ Serial.begin(9600); pinMode(led, OUTPUT); morseSymbolLen = 0; newMorseSignal = MORSE_EMPTY; } int counter_high = 0; int counter_low = 0; int i; void loop(){ int LDRReading = analogRead(LDR_Pin); if (LDRReading >= 800){ counter_high++ ; if ( counter_low > 0 ){ // Serial.print("Low\t"); // Serial.print(counter_low); // Serial.print("\n"); } if ( counter_low > 1200) { // for (i = 0; i< morseSymbolLen; i++) { // Serial.print( currentLayout[i]); // } sendMorseSymbol(); morseSymbolLen=0; Serial.println(); //currentLayout[0]=" "; //currentLayout[1]=" "; //currentLayout[2]=" "; //currentLayout[3]=" "; //currentLayout[4]=" "; //currentLayout[5]=" "; //currentLayout[6]=" "; //currentLayout[7]=" "; //currentLayout[8]=" "; //morseSymbolLen=0; } counter_low=0; digitalWrite(led, HIGH); } else { // Serial.print("."); counter_low++; if ( counter_high > 0 ){ // Serial.print("High\t"); // Serial.print(counter_high); } if ( (counter_high < 1200 ) &&( counter_high >350)){ // Serial.print(counter_high); Serial.print("."); newMorseSignal="*"; morseSymbol[morseSymbolLen++] = newMorseSignal; // currentLayout[morseSymbolLen]="."; // morseSymbolLen=morseSymbolLen+1; } if ( counter_high > 1200 ){ // Serial.print(counter_high); Serial.print("-"); newMorseSignal="-"; morseSymbol[morseSymbolLen++] = newMorseSignal; // currentLayout[morseSymbolLen]="-"; // morseSymbolLen=morseSymbolLen+1; } counter_high=0; digitalWrite(led, LOW); } } void sendMorseSymbol() { boolean est; int i, j; est=-1; if (morseSymbolLen < 1) { return; } Serial.print(morseSymbolLen); // . // . String str1; String strm; str1=""; for (i=0;i<morseSymbolLen;i++){ str1=str1+morseSymbol[i]; } // Serial.print(code[6]); for (i=0;i<56;i++){ String str2(code[i]); if (str1.compareTo(str2)==0){ //Serial.print(str1); // Serial.print("est"); Serial.print(str2); est=true; break; } } if (est!=-1){ Serial.print(layoutLatin[i]); } morseSymbolLen = 0; return; }
#include <LCD.h> #include <LiquidCrystal_I2C.h> #include <Wire.h> // Define I2C Address where the PCF8574* is #define I2C_ADDR 0x27 // Define LCD Pins #define BACKLIGHT_PIN 3 #define En_pin 2 #define Rw_pin 1 #define Rs_pin 0 #define D4_pin 4 #define D5_pin 5 #define D6_pin 6 #define D7_pin 7 // Initialize LiquadCrystal with pin setup LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin); int pos_lcd,pos_lcd2; int LDR_Pin = A0; //analog pin 0 int led = 13; // 10k between GND and A0 // LDR between 5V and A0 // #define LEVEL_LDR 800 #define MORSE_EMPTY 0 // . #define MORSE_DOT '*' #define MORSE_DASH '-' // 24 (wpm) = 150 700 , // 12 wpm = 700 1200 #define MORSE_TIME_DOT 150 #define MORSE_TIME_DASH 700 // ( ) #define MAX_MORSE_SYMBOL_LENGTH 8 char* morseSymbol[MAX_MORSE_SYMBOL_LENGTH]; unsigned int morseSymbolLen; char* newMorseSignal; // - . // . N- n- . char* code[] = { "*-","-***","*--","--*","-**","*","***-","--**","**","*---", "-*-","*-**","--","-*","---","*--*","*-*","***","-","**-", "**-*","****","-*-*","---*","----","--*-","-*--","-**-","**-**","**--", "*-*-", "*----","**---","***--","****-","*****","-****","--***","---**","----*","-----", "......","*-*-*-","---***","-*-*-","-*--*-","*----*","*-**-*","-****-","-**-*","**--**","--**--", "-***-","********","*--*-*","**-*-", "" }; // . char* layoutCyrillic[] = { "","","","","","","","","","", "","","","","","","","","","", "","","","","","","","","","", "", "1","2","3","4","5","6","7","8","9","0", ".",",",":",";","(","\'","\"","-","/","?","!", " *DELIMITER* "," *ERR* ","@"," *END* ", "" }; // . char* layoutLatin[] = { "a","b","w","g","d","e","v","z","i","j", "k","l","m","n","o","p","r","s","t","u", "f","h","c","ö","ch","q","y","x","é","ü", "ä", "1","2","3","4","5","6","7","8","9","0", ".",",",":",";","(","\'","\"","-","/","?","!", " *DELIMITER* "," *ERR* ","@"," *END* ", "" }; void setup(){ Serial.begin(9600); pos_lcd=0; lcd.begin (16,2); // Switch on the backlight lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE); lcd.setBacklight(HIGH); // Reset cursor to home lcd.home (); // Print Hello World // lcd.print("GOTOV priem"); pinMode(led, OUTPUT); morseSymbolLen = 0; newMorseSignal = MORSE_EMPTY; } int counter_high = 0; int counter_low = 0; int i; void loop(){ int LDRReading = analogRead(LDR_Pin); if (LDRReading >= LEVEL_LDR){ counter_high++ ; if ( counter_low > MORSE_TIME_DASH) { sendMorseSymbol(); morseSymbolLen=0; } counter_low=0; digitalWrite(led, HIGH); } else { counter_low++; if ( (counter_high < MORSE_TIME_DASH ) &&( counter_high >MORSE_TIME_DOT)){ Serial.print("."); newMorseSignal="*"; morseSymbol[morseSymbolLen++] = newMorseSignal; } if ( counter_high > MORSE_TIME_DASH ){ Serial.print("-"); newMorseSignal="-"; morseSymbol[morseSymbolLen++] = newMorseSignal; } counter_high=0; digitalWrite(led, LOW); } } void sendMorseSymbol() { boolean est; int i, j; est=-1; if (morseSymbolLen < 1) { return; } // . // . String str1; str1=""; for (i=0;i<morseSymbolLen;i++) { str1=str1+morseSymbol[i]; } for (i=0;i<56;i++) { String str2(code[i]); if (str1.compareTo(str2)==0) { Serial.print(str2); est=true; break; } } if (est!=-1) { Serial.print(layoutLatin[i]); // LCD if (pos_lcd>16 ) { Serial.print("vtorayStroka"); pos_lcd2=pos_lcd-17; Serial.print(pos_lcd); lcd.setCursor(pos_lcd2,1 ); // LCD 2 } pos_lcd=pos_lcd+1; if (pos_lcd>32) { lcd.clear(); pos_lcd=0; } lcd.print(layoutLatin[i]); lcd.setBacklight(HIGH); // Backlight on } morseSymbolLen = 0; return; }
Source: https://habr.com/ru/post/357882/
All Articles