From f12bf5134008987f96565bd280242fa22ca9567c Mon Sep 17 00:00:00 2001 From: "foley@ru.is" Date: Fri, 13 Sep 2013 16:30:30 +0000 Subject: [PATCH] branching the Philips code into a Scott DVX605HD --- .../Synchronizer_Philips_DVP3142_12.pde | 133 ++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 dawn/Synchronizer_Scott_DVX605HD/Synchronizer_Philips_DVP3142_12.pde diff --git a/dawn/Synchronizer_Scott_DVX605HD/Synchronizer_Philips_DVP3142_12.pde b/dawn/Synchronizer_Scott_DVX605HD/Synchronizer_Philips_DVP3142_12.pde new file mode 100644 index 0000000..596d87e --- /dev/null +++ b/dawn/Synchronizer_Scott_DVX605HD/Synchronizer_Philips_DVP3142_12.pde @@ -0,0 +1,133 @@ +/* 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= 20*60+57; // 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; + +} + +/********************************************************************/ +void loop() { + Serial.println("Sync"); + send_pause(); + waitsec(2); + + 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(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); +}