From 8397c02cc7d919cf9df15e9ad1552d1c267b5ca4 Mon Sep 17 00:00:00 2001 From: "foley@ru.is" Date: Tue, 10 Sep 2013 21:26:46 +0000 Subject: [PATCH] branching off the Synchronizer for the Philips DVP3142/12 --- .../Synchronizer_Toshiba_SD590EKE.pde | 126 ++++++++++++++++++ .../data/JVCPanasonicSendDemo.ino | 29 ++++ 2 files changed, 155 insertions(+) create mode 100644 dawn/Synchronizer_Philips_DVP3142_12/Synchronizer_Toshiba_SD590EKE.pde create mode 100644 dawn/Synchronizer_Philips_DVP3142_12/data/JVCPanasonicSendDemo.ino diff --git a/dawn/Synchronizer_Philips_DVP3142_12/Synchronizer_Toshiba_SD590EKE.pde b/dawn/Synchronizer_Philips_DVP3142_12/Synchronizer_Toshiba_SD590EKE.pde new file mode 100644 index 0000000..bea2fb4 --- /dev/null +++ b/dawn/Synchronizer_Philips_DVP3142_12/Synchronizer_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; +int playtime= 6*60+9; // set here ypur DVD title playtime in sec leave a little extra +//int playtime= 10; // testing + +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 Hardardottir"); + 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 we should pause it + send_pause(); + waitsec(2); + secs=playtime; + +} + +/********************************************************************/ +void loop() { + Serial.println("Sync"); + send_previous(); + waitsec(2); + + 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); + } + + send_pause(); + waitsec(1); + +} + +/**************************************************************/ +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/dawn/Synchronizer_Philips_DVP3142_12/data/JVCPanasonicSendDemo.ino b/dawn/Synchronizer_Philips_DVP3142_12/data/JVCPanasonicSendDemo.ino new file mode 100644 index 0000000..33c167c --- /dev/null +++ b/dawn/Synchronizer_Philips_DVP3142_12/data/JVCPanasonicSendDemo.ino @@ -0,0 +1,29 @@ +/* + * IRremote: IRsendDemo - demonstrates sending IR codes with IRsend + * An IR LED must be connected to Arduino PWM pin 3. + * Version 0.1 July, 2009 + * Copyright 2009 Ken Shirriff + * http://arcfn.com + * JVC and Panasonic protocol added by Kristian Lauszus (Thanks to zenwheel and other people at the original blog post) + */ +#include + +#define PanasonicAddress 0x4004 // Panasonic address (Pre data) +#define PanasonicPower 0x100BCBD // Panasonic Power button + +#define JVCPower 0xC5E8 + +IRsend irsend; + +void setup() +{ +} + +void loop() { + irsend.sendPanasonic(PanasonicAddress,PanasonicPower); // This should turn your TV on and off + + irsend.sendJVC(JVCPower, 16,0); // hex value, 16 bits, no repeat + delayMicroseconds(50); // see http://www.sbprojects.com/knowledge/ir/jvc.php for information + irsend.sendJVC(JVCPower, 16,1); // hex value, 16 bits, repeat + delayMicroseconds(50); +}