/** * 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(); } }