From 5914b3361ff3bcab3d7969e5f828fe4465c52a96 Mon Sep 17 00:00:00 2001 From: "foley@ru.is" Date: Sun, 22 Sep 2013 17:10:31 +0000 Subject: [PATCH] branching instances of the synchronizer code on per-installation basis --- .../dawn_toshiba_sd590eke.pde | 126 ++++++++++++++++ .../thor_philips_dvp3142_12.pde | 135 ++++++++++++++++++ .../west_scott_dvx506hd.pde | 130 +++++++++++++++++ 3 files changed, 391 insertions(+) create mode 100644 synchronizer/installations/dawn_toshiba_sd590eke/dawn_toshiba_sd590eke.pde create mode 100644 synchronizer/installations/thor_philips_dvp3142_12/thor_philips_dvp3142_12.pde create mode 100644 synchronizer/installations/west_scott_dvx506hd/west_scott_dvx506hd.pde diff --git a/synchronizer/installations/dawn_toshiba_sd590eke/dawn_toshiba_sd590eke.pde b/synchronizer/installations/dawn_toshiba_sd590eke/dawn_toshiba_sd590eke.pde new file mode 100644 index 0000000..944348a --- /dev/null +++ b/synchronizer/installations/dawn_toshiba_sd590eke/dawn_toshiba_sd590eke.pde @@ -0,0 +1,126 @@ +/* DVD IR Synchronizer for Toshiba SD590EKE + * Developed for Art Installation "Dawn" by Sigrun Hardardottir + * Code written by Joe Foley + * on 2013-09-08 + * + * Requires libraries: + * Arduino-IRremote https://github.com/shirriff/Arduino-IRremote + * + * IR Remote codes from SE-R0313 + * http://lirc.sourceforge.net/remotes/toshiba/SE-R0313 + * + * The IRremote library uses Pin 3 for the Anode (longer pin) + * We have made a ground pin on Pin 4 for the Cathode (shorter pin) + */ + + +#include + +int pinGND=4; // Longer leg on the IR LED +int pinLED=13; // The heartbeat LED on the board + +int heartbeat=0; +int secs; +// Dawn 61:36 +int playtime= 61*60+35; // set here your DVD title playtime in sec leave a little extra + +IRsend irsend; + +void setup() { + pinMode(pinGND,OUTPUT); + pinMode(pinLED,OUTPUT); + Serial.begin(115200); + + Serial.println("Toshiba DVD SD590EKE Synchronizer $Rev$"); + Serial.println("For \"Dawn\" by Sigrun Hardar on 1986"); + Serial.println("Code by Joe Foley "); + Serial.println("$URL$"); + Serial.println("$Id$"); + Serial.print("Playtime: "); + secs=playtime; + Serial.print("sec:"); + Serial.print(secs); + Serial.print(" / mm:ss "); + Serial.print(secs/60); + Serial.print(":"); + Serial.print(secs % 60); + Serial.println(""); + + // The DVD player starts playing automatically, so maybe we should pause it + //send_pause(); + //waitsec(2); + secs=playtime; + +} + +/********************************************************************/ +void loop() { + Serial.println("Sync"); + send_pause(); + waitsec(2); + send_previous(); + //waitsec(2); + + //send_play(); // this should not be necessary, but just in case + for(int t = 0; t < playtime; t++) { + // This will not give us perfect 1 second timing + // but it is good enough for most video applications + // The most critical is having everything start at the + // same time. + Serial.print("sec:"); + Serial.print(playtime); + Serial.print(" / mm:ss "); + Serial.print(t/60); + Serial.print(":"); + Serial.print(t % 60); + Serial.println(""); + if (heartbeat == 1) { + digitalWrite(pinLED, HIGH); + heartbeat = 0; + } + else { + digitalWrite(pinLED, LOW); + heartbeat = 1; + } + delay(1000); + } + + +} + +/**************************************************************/ +void waitsec(int sec) { + Serial.print("Wait "); + Serial.print(sec); + Serial.println(" seconds"); + delay(sec*1000); +} + + +/********************************************************************/ +void send_stop() { + // First comes the pre-data bits, then the command code + Serial.println(" stop"); + irsend.sendNEC(0xA25D28D7,32); +} + +/********************************************************************/ +void send_play() { + // First comes the pre-data bits, then the command code + Serial.println(" play"); + irsend.sendNEC(0xA25DA857,32); +} + +/********************************************************************/ +void send_pause() { + // First comes the pre-data bits, then the command code + Serial.println(" pause"); + irsend.sendNEC(0xA25D00FF, 32); +} + +/********************************************************************/ +void send_previous() { + // First comes the pre-data bits, then the command code + Serial.println(" previous"); + irsend.sendNEC(0xA25DC43B, 32); +} diff --git a/synchronizer/installations/thor_philips_dvp3142_12/thor_philips_dvp3142_12.pde b/synchronizer/installations/thor_philips_dvp3142_12/thor_philips_dvp3142_12.pde new file mode 100644 index 0000000..0aa5ddb --- /dev/null +++ b/synchronizer/installations/thor_philips_dvp3142_12/thor_philips_dvp3142_12.pde @@ -0,0 +1,135 @@ +/* DVD IR Synchronizer for Philips DVP3142/12 + * Developed for Art Installation "Thor" + * Code written by Joe Foley + * on 2013-09-08 + * + * + * Requires libraries: + * Arduino-IRremote https://github.com/shirriff/Arduino-IRremote + * Instructions http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html + * + * IR Remote codes from IRrecvDemo + * + * + * Details on the Philips RC6 coding + * http://www.pcbheaven.com/userpages/The_Philips_RC6_Protocol/ + * + * The IRremote library uses Pin 3 for the Anode (longer pin) + * We have made a ground pin on Pin 4 for the Cathode (shorter pin) + */ + + +#include + +int pinGND=4; // Longer leg on the IR LED +int pinLED=13; // The heartbeat LED on the board + +int heartbeat=0; +int secs; +// Sarcity 20:58 +int playtime= 58*44+10; // Play time in seconds, you usually leave off a second or two + +//int playtime= 10; // testing + +IRsend irsend; + +void setup() { + pinMode(pinGND,OUTPUT); + pinMode(pinLED,OUTPUT); + Serial.begin(115200); + + Serial.println("Panasonic DVD DVP-3142/12 Synchronizer $Rev$"); + Serial.println("For \"Sarcity\" by Thor Elis (1981)"); + Serial.println("Code by Joe Foley "); + Serial.println("$URL$"); + Serial.println("$Id$"); + Serial.print("Playtime: "); + secs=playtime; + Serial.print("sec:"); + Serial.print(secs); + Serial.print(" / mm:ss "); + Serial.print(secs/60); + Serial.print(":"); + Serial.print(secs % 60); + Serial.println(""); + + secs=playtime; + send_play(); +} + +/********************************************************************/ +void loop() { + Serial.println("Sync"); + //send_pause(); + //waitsec(2); + + // The three players don't always see the "previous command" so we send it multiple times + send_previous(); + send_previous(); + send_previous(); + //waitsec(2); + // Don't send play because previous automatically starts it + // If we hit play it will merely pause it. + //send_play(); + + for(int t = 0; t < playtime; t++) { + // This will not give us perfect 1 second timing + // but it is good enough for most video applications + // The most critical is having everything start at the + // same time. + Serial.print("sec:"); + Serial.print(playtime); + Serial.print(" / mm:ss "); + Serial.print(t/60); + Serial.print(":"); + Serial.print(t % 60); + Serial.println(""); + if (heartbeat == 1) { + digitalWrite(pinLED, HIGH); + heartbeat = 0; + } + else { + digitalWrite(pinLED, LOW); + heartbeat = 1; + } + delay(1000); + } + +} + +/**************************************************************/ +void waitsec(int sec) { + Serial.print("Wait "); + Serial.print(sec); + Serial.println(" seconds"); + delay(sec*1000); +} + + +/********************************************************************/ +void send_stop() { + // First comes the pre-data bits, then the command code + Serial.println(" stop"); + irsend.sendRC6(0x10431,20); +} + +/********************************************************************/ +void send_play() { + // First comes the pre-data bits, then the command code + Serial.println(" play"); + irsend.sendRC6(0x1042C,20); +} + +/********************************************************************/ +void send_pause() { + // First comes the pre-data bits, then the command code + Serial.println(" pause"); + irsend.sendRC6(0x1042C,20); +} + +/********************************************************************/ +void send_previous() { + // First comes the pre-data bits, then the command code + Serial.println(" previous"); + irsend.sendRC6(0x10421, 20); +} diff --git a/synchronizer/installations/west_scott_dvx506hd/west_scott_dvx506hd.pde b/synchronizer/installations/west_scott_dvx506hd/west_scott_dvx506hd.pde new file mode 100644 index 0000000..f7ba332 --- /dev/null +++ b/synchronizer/installations/west_scott_dvx506hd/west_scott_dvx506hd.pde @@ -0,0 +1,130 @@ +/* DVD IR Synchronizer for Philips DVP3142/12 + * Developed for Art Installation "West" + * Code written by Joe Foley + * on 2013-09-08 + * + * + * Requires libraries: + * Arduino-IRremote https://github.com/shirriff/Arduino-IRremote + * Instructions http://www.righto.com/2009/08/multi-protocol-infrared-remote-library.html + * + * IR Remote codes from IRrecvDemo + * + * The IRremote library uses Pin 3 for the Anode (longer pin) + * We have made a ground pin on Pin 4 for the Cathode (shorter pin) + */ + + +#include + +int pinGND=4; // Longer leg on the IR LED +int pinLED=13; // The heartbeat LED on the board + +int heartbeat=0; +int secs; +// West 25:41 +int playtime= 25*60+40; // Play time in seconds, you usually leave off a second or two + +//int playtime= 10; // testing + +IRsend irsend; + +void setup() { + pinMode(pinGND,OUTPUT); + pinMode(pinLED,OUTPUT); + Serial.begin(115200); + + Serial.println("Scott DVX605 HD(Rev2) Synchronizer $Rev$"); + Serial.println("For \"West\" by Steina Vasulka (1983)"); + Serial.println("Code by Joe Foley "); + Serial.println("$URL$"); + Serial.println("$Id$"); + Serial.print("Playtime: "); + secs=playtime; + Serial.print("sec:"); + Serial.print(secs); + Serial.print(" / mm:ss "); + Serial.print(secs/60); + Serial.print(":"); + Serial.print(secs % 60); + Serial.println(""); + + secs=playtime; + +} + +/********************************************************************/ +void loop() { + Serial.println("Sync"); + //send_pause(); + //waitsec(2); + + send_previous(); + send_previous(); + send_previous(); + //waitsec(2); + // Don't send play because previous automatically starts it + // If we hit play it will merely pause it. + //send_play(); + + for(int t = 0; t < playtime; t++) { + // This will not give us perfect 1 second timing + // but it is good enough for most video applications + // The most critical is having everything start at the + // same time. + Serial.print("sec:"); + Serial.print(playtime); + Serial.print(" / mm:ss "); + Serial.print(t/60); + Serial.print(":"); + Serial.print(t % 60); + Serial.println(""); + if (heartbeat == 1) { + digitalWrite(pinLED, HIGH); + heartbeat = 0; + } + else { + digitalWrite(pinLED, LOW); + heartbeat = 1; + } + delay(1000); + } + +} + +/**************************************************************/ +void waitsec(int sec) { + Serial.print("Wait "); + Serial.print(sec); + Serial.println(" seconds"); + delay(sec*1000); +} + + +/********************************************************************/ +void send_stop() { + // First comes the pre-data bits, then the command code + Serial.println(" stop"); + irsend.sendNEC(0xFFC837,32); +} + +/********************************************************************/ +void send_play() { + // First comes the pre-data bits, then the command code + Serial.println(" play"); + irsend.sendNEC(0xFFF00F,32); +} + +/********************************************************************/ +void send_pause() { + // First comes the pre-data bits, then the command code + Serial.println(" pause"); + irsend.sendNEC(0xFFD02F,32); +} + +/********************************************************************/ +void send_previous() { + // First comes the pre-data bits, then the command code + Serial.println(" previous"); + irsend.sendNEC(0xFF50AF, 32); +}