summaryrefslogtreecommitdiff
path: root/roombacomm-client/src/processing-examples/roombatune
diff options
context:
space:
mode:
authorIdo Hadanny <ido.hadanny@gmail.com>2011-09-22 21:30:13 +0300
committerIdo Hadanny <ido.hadanny@gmail.com>2011-09-22 21:30:13 +0300
commit53b947df484159f5934898ba6c0aa69a9c869007 (patch)
tree189d5903a67765c390de8f1e3423e6b80cde57d1 /roombacomm-client/src/processing-examples/roombatune
parent654ca6d59e99b5e72b05dfb917bc5888c4ba6b1b (diff)
added stuff
Diffstat (limited to 'roombacomm-client/src/processing-examples/roombatune')
-rw-r--r--roombacomm-client/src/processing-examples/roombatune/roombatune.pde111
1 files changed, 111 insertions, 0 deletions
diff --git a/roombacomm-client/src/processing-examples/roombatune/roombatune.pde b/roombacomm-client/src/processing-examples/roombatune/roombatune.pde
new file mode 100644
index 0000000..56fa470
--- /dev/null
+++ b/roombacomm-client/src/processing-examples/roombatune/roombatune.pde
@@ -0,0 +1,111 @@
+//
+// roombatune --
+//
+// 2006, Tod E. Kurt, tod@todbot.com, http://roombahacking.com/
+//
+
+import mkv.MyGUI.*;
+import roombacomm.*;
+
+// if you set roombaCommPort to null, it will bring up the port picker dialog
+// if you set it to "testdummy", it will be a bring up a non-functioning test of the GUI
+//String roombacommPort = "testdummy";
+String roombacommPort = "/dev/cu.KeySerial1";
+//String roombacommPort = "/dev/cu.BlueRadios-COM0-1";
+//String roombacommPort = null;
+
+RoombaCommSerial roombacomm;
+int octave = 6; // which octave we're on when playing notes
+
+void setup() {
+ roombacommSetup();
+}
+
+void draw() {
+ if( roombacomm == null ) return;
+}
+
+void keyPressed() {
+
+ int note=-1; // -1 means no note yet
+ switch( key ) {
+ // pseudo-keyboard to play notes on
+ case 'a': note = 0; break;
+ case 'w': note = 1; break;
+ case 's': note = 2; break;
+ case 'e': note = 3; break;
+ case 'd': note = 4; break;
+ case 'f': note = 5; break;
+ case 't': note = 6; break;
+ case 'g': note = 7; break;
+ case 'y': note = 8; break;
+ case 'h': note = 9; break;
+ case 'u': note =10; break;
+ case 'j': note =11; break;
+ case 'k': note =12; break;
+ case 'o': note =13; break;
+ case 'l': note =14; break;
+ case 'z': octave--; break; // change octaves
+ case 'x': octave++; break; // change octaves
+ }
+ // we actually hit a note key
+ if( note >= 0 ) {
+ octave = (octave < 2) ? 2 : (octave > 9) ? 9 : octave;
+ note = note + ((octave+1)*12);
+ if( roombacomm != null )
+ roombacomm.playNote( note, 10);
+ println("playing note: "+note+" (octave:"+octave+")");
+ }
+
+}
+
+//
+void roombacommPortSelected()
+{
+ roombacomm = new RoombaCommSerial();
+ if( roombacommPort.equals("testdummy") ) return; // so we can test UI w/o Roomba
+ println("opening roomba serial port '" +roombacommPort+"'");
+ if( ! roombacomm.connect( roombacommPort ) ) {
+ println("oh noes");
+ }
+ println("Roomba startup");
+ roombacomm.startup();
+ roombacomm.control();
+ roombacomm.pause(50);
+ println("Playing some notes");
+ roombacomm.playNote( 72, 8 );
+ roombacomm.pause( 200 );
+ roombacomm.playNote( 72, 10 );
+ roombacomm.pause( 200 );
+}
+
+void roombacommSetup()
+{
+ if( roombacommPort != null ) {
+ roombacommPortSelected();
+ return;
+ }
+
+ RoombaComm rc = new RoombaCommSerial(); // throwaway just to find ports
+ final String portlist[] = rc.listPorts(); // FIXME: should be made static
+ javax.swing.SwingUtilities.invokeLater(new Runnable() {
+ public void run() {
+ try {
+ String port = (String) javax.swing.JOptionPane.showInputDialog( null,
+ "Select Roomba Port",
+ "RoombaTune",
+ javax.swing.JOptionPane.QUESTION_MESSAGE,
+ null, portlist, null);
+ if( port == null ) {
+ javax.swing.JOptionPane.showMessageDialog(null, "No port chosen, goodbye");
+ System.exit(1);
+ }
+ roombacommPort = port;
+ roombacommPortSelected();
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ });
+}