User Tools

Site Tools


morse_code_code

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
morse_code_code [2018/08/11 00:12] frchrismorse_code_code [2018/08/11 02:14] – [LED class] frchris
Line 1: Line 1:
 The [[https://www.bluej.org/raspberrypi/led.html|LED Tutorial]] is where I started, and I had to tweak the code so that I didn't get a **GpioPinExistsException.**  I added a ''finalize()'' method  The [[https://www.bluej.org/raspberrypi/led.html|LED Tutorial]] is where I started, and I had to tweak the code so that I didn't get a **GpioPinExistsException.**  I added a ''finalize()'' method 
- + 
 + 
 +=====LED class=====  
 +I am using ''RaspiPin.GPIO_25'' since chose to wire my LED to phyical pin 37, aka  ''BC 26''\\ 
 <file java LED.java> <file java LED.java>
 import com.pi4j.io.gpio.*; import com.pi4j.io.gpio.*;
Line 73: Line 77:
 </file> </file>
  
 +=====LEDTester Class=====
 +<file java LEDTester.java>
 +/**
 + * This class tests LED by flashing some morse code. 2014 verion by 
 + * @author Ian Utting
 + * @author Fabio Heday
 + 
 + * Chris Thiel added the finalize() method to aviod GpioPinExistsException
 + * @version 10 Aug 18
 + */
 +public class LEDTester
 +{
 +    public LED pin1;
 +    
 +    //unit of time, in milliseconds
 +    private final static int UNIT = 200;
 +    
 +    public static void main(String [] args) {
 +        LEDTester lt = new LEDTester();
 +        
 +        String s = "SOS SOS SOS";
 +//         
 +          if ( args.length > 0 && args[0] != null && !args[0].equals ("") )
 +            s = args[0];
 +        
 +        lt.flashMorse(s);
 +        lt.finalize();
 +    }
 +    
 +    /*
 +     * create a new LED instance
 +     */
 +    public LEDTester() {
 +        this(new LED());
 +    }
 +    
 +    /*
 +     * Creates a LED instance based on a LED object
 +     */
 +    public LEDTester(LED p) {
 +        pin1 = p;
 +    }
 +    
 +    /*
 +     * Flashes the LED 10 times
 +     */
 +    public void flash10Times() {
 +        
 +        for(int i = 0; i < 10; i++) {
 +            pin1.flash(200);
 +            try { Thread.sleep (200); } catch (InterruptedException e) {}
 +        }
 +    }
 +    
 +    
 +    /*
 +     * Sends the morse code using the LED.
 +     */
 +    public void flashMorse(String msg) {
 +               
 +        char [] morse = StringToMorse.translate(msg).toCharArray();
 +        
 +        // . = 1, - = 3, intra-char = 1, inter-char = 3, space = 7.",
 +        
 +        for (char atom : morse) {
 +                if (atom == '.') {
 +                    pin1.flash(UNIT);
 +                } else if (atom == '-') {
 +                    pin1.flash(3*UNIT);
 +                } else if (atom == '/') {   // inter-symbol gap
 +                    sleep (1);   // plus one leading and one trailing == 3
 +                } else {
 +                    // must be a space
 +                    sleep (5);   // plus one leading and one trailing == 7
 +                }
 +                sleep (1);   // common gap
 +        }
 +    }
 +    /*
 +     * Wait units times the defined unit of time
 +     */
 +    private void sleep(int units) {
 +        try { 
 +            Thread.sleep(units*UNIT); 
 +        } catch (InterruptedException e) 
 +        {
 +        }
 +    }
 +    protected void finalize(){
 +        pin1.finalize();
 +    }        
 +}
 +</file>
 +
 +=====String to Morse class=====
 +This is unchanged from the original
 +<file java StringToMorse.java>
 +import java.util.*;
 +
 +import static java.lang.Character.*;
 +
 +/**
 + * Translate a String into Morse code.
 + 
 + * Maps lower case letters to upper case.
 + * Returned string contains the Morse equivalent of the parameter, 
 + * with codons sperated by slashes, and spaces represented by spaces..
 + 
 + * @author Ian Utting
 + * @version 1.0
 + */
 +
 +public class StringToMorse
 +{
 +    private static final Map<Character, String> code = new HashMap<>();
 +        static {
 +            // Upper case letters
 +            /* A */ code.put('A', ".-");
 +            /* B */ code.put('B', "-...");
 +            /* C */ code.put('C', "-.-.");
 +            /* D */ code.put('D', "-..");
 +            /* E */ code.put('E', ".");
 +            /* F */ code.put('F', "..-.");
 +            /* G */ code.put('G', "--.");
 +            /* H */ code.put('H', "....");
 +            /* I */ code.put('I', "..");
 +            /* J */ code.put('J', ".---");
 +            /* K */ code.put('K', "-.-");
 +            /* L */ code.put('L', ".-..");
 +            /* M */ code.put('M', "--");
 +            /* N */ code.put('N', "-.");
 +            /* O */ code.put('O', "---");
 +            /* P */ code.put('P', ".--.");
 +            /* Q */ code.put('Q', "--.-");
 +            /* R */ code.put('R', ".-.");
 +            /* S */ code.put('S', "...");
 +            /* T */ code.put('T', "-");
 +            /* U */ code.put('U', "..-");
 +            /* V */ code.put('V', "...-");
 +            /* W */ code.put('W', ".--");
 +            /* X */ code.put('X', "-..-");
 +            /* Y */ code.put('Y', "-.--");
 +            /* Z */ code.put('Z', "--..");
 +
 +            // Lower case letters map to the same values as upper case
 +            /* A */ code.put('a', ".-");
 +            /* B */ code.put('b', "-...");
 +            /* C */ code.put('c', "-.-.");
 +            /* D */ code.put('d', "-..");
 +            /* E */ code.put('e', ".");
 +            /* F */ code.put('f', "..-.");
 +            /* G */ code.put('g', "--.");
 +            /* H */ code.put('h', "....");
 +            /* I */ code.put('i', "..");
 +            /* J */ code.put('j', ".---");
 +            /* K */ code.put('k', "-.-");
 +            /* L */ code.put('l', ".-..");
 +            /* M */ code.put('m', "--");
 +            /* N */ code.put('n', "-.");
 +            /* O */ code.put('o', "---");
 +            /* P */ code.put('p', ".--.");
 +            /* Q */ code.put('q', "--.-");
 +            /* R */ code.put('r', ".-.");
 +            /* S */ code.put('s', "...");
 +            /* T */ code.put('t', "-");
 +            /* U */ code.put('u', "..-");
 +            /* V */ code.put('v', "...-");
 +            /* W */ code.put('w', ".--");
 +            /* X */ code.put('x', "-..-");
 +            /* Y */ code.put('y', "-.--");
 +            /* Z */ code.put('z', "--..");
 +
 +            // Digits
 +            /* 0 */ code.put('0', "-----");
 +            /* 1 */ code.put('1', ".----");
 +            /* 2 */ code.put('2', "..---");
 +            /* 3 */ code.put('3', "...--");
 +            /* 4 */ code.put('4', "....-");
 +            /* 5 */ code.put('5', ".....");
 +            /* 6 */ code.put('6', "-....");
 +            /* 7 */ code.put('7', "--...");
 +            /* 8 */ code.put('8', "---..");
 +            /* 9 */ code.put('9', "----.");            
 +
 +            // punctuation
 +            /* . */ code.put('.', ".-.-.-");
 +            /* , */ code.put(',', "--..--");
 +            /* : */ code.put(':', "---...");
 +            /* ? */ code.put('?', "..--..");
 +            /* ' */ code.put('\'', ".----.");
 +            /* - */ code.put('-', "-....-");
 +            /* / */ code.put('/', "-..-.");
 +            /* ( */ code.put('(', "-.--.-");
 +            /* ) */ code.put(')', "-.--.-");
 +            /* " */ code.put('"', ".-..-.");
 +            /* @ */ code.put('@', ".--.-.");
 +            /* = */ code.put('=', "-...-");
 +
 +            // Special code for a space character.
 +                    code.put(' ', " ");
 +        }
 +
 +    /**
 +     * Translate a string into its Morse code equivalent
 +     
 +     * Spaces in message are encoded as spaces in the returned string. Codons are separated by slashes
 +     
 +     * @param message   The string to be translated
 +     * @return The encoded string.
 +     * @throws IllegalArgumentException  if there is a character in message which is not codeable in Morse
 +     */    
 +    public static String translate(String message) {
 +        String result = new String();
 +
 +        for(char c : message.toCharArray()) {
 +            if (code.containsKey(c)) result = result + code.get(c) + "/";
 +            else throw new IllegalArgumentException("Character " + c + "is not in Morse's code");
 +        }
 +        // trim the trailing slash
 +        result = result.substring(0, result.length() - 1);
 +        return result;
 +    }
 +}
 +</file>
  
morse_code_code.txt · Last modified: 2018/08/11 02:16 by frchris

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki