LET OP; Sinds het maken van dit die ik gemerkt heb dat het betrouwbaar tijde onder 30 sec werkt, maar wanneer uitgebreid tot minuten het mislukken kan om te herstellen van audio, ben ik op zoek naar een betere manier van tellen van de 3 minuten vertraging.
Maar voor nu is het u dat een reeks vertragingen elk van 30 seconden te halen naar de totale tijd die u wilt instellen tussen demper en herstellen.
Arduino lijkt te hebben een probleem met behulp van de opdracht van de vertraging indien de vertraging meer dan 35 seconden.
Met behulp van de Arduino uno kunt u bouwen een mute timer die de audio na een ingestelde tijd herstelt.
Een toekomstige ontwikkeling kon worden om er de code van elke TV afstandsbediening opslaan door het toevoegen van een record functie, op dit moment dat de
buiten mijn vaardigheidsniveau, dus als iemand wil toevoegen aan dit ik zou heel blij.
Het enige wat ik kan beweren als de mijne is het idee, de code is gekopieerd en gehackt van verschillende websites en projecten.
U wenst een Arduino
een IR-zender
een IR-ontvanger
een push-schakelaar, om te beginnen met de code, zijn niet slechts een enkele druk en release een vergrendeling schakelen
een breadboard te houden van uw componenten terwijl u experimenteren,
Ze kosten alleen een paar pond, dus het is een zeer goedkope project. Ik zal het toevoegen van afbeeldingen voor de definitieve eenheid zodra ik het bouwen in een doos, maar voor nu hier is de code en koppelingen naar bronnen die ik heb gebruikt.
Zodra u laden de onderdelen eerst de IR lezer software te vangen het dempen signaal van uw afstandsbediening.
Dan laden de schets TV Mute en verander de mute waarden die uw TV vereist.
Ik gebruikte de informatie en de kabeljauw van deze sites te ontwerpen van mijn project.
http://www.Learn.adafruit.com/IR-sensor/making-an-Intervalometer/
http://www.righto.com/2009/08/multi-protocol-Infrared-Remote-Library.html
Hier is een tip, als u wilt zien van een IR-LED uitstoten zijn signaal kijken de LED met behulp van het scherm van uw digitale camera tegelijk op de knop, de meeste camera's IR kunnen zien, maar geen gebruik maken van een Iphone, ze hebben een IR-filter die IR blokkeert, zodat het niet het signaal zien zal
IR ontvanger verbinden met pinnen 11, Gnd en 5v,
U zult merken dat de sensoren zijn aangesloten op verschillende pinnen in sommige beelden, de verbindingen zijn afhankelijk van de schets van de software die u hebt geladen zo kennis te nemen telkens wanneer die u opwaarts een schets vracht, in de code zal er opmerkingen die staat waar de sensoren worden aangesloten.
De IR-zender verbinden met Pins 12 en Gnd.
De start schakelaar verbinden met pin 3 en Gnd.
Mijn pogingen om het koppelen van de Arduino schets hier mislukt, dus hier de code voor de Mute schets is, kopieer en plak deze in het venster van de Arduino.
De timing functie werd verfijnd, raadpleegt u de nieuwere versie van de onderstaande code.
De nieuwe regels zijn
niet-ondertekende long timespan = 180000;
vertraging (timespan); wacht 3 minuten
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Deze sketch zal een Sony Mute signaal afgeven
Informatie en oorspronkelijke code uit http://learn.adafruit.com/ir-sensor en
Informatie en originele code van http://learn.adafruit.com/ir-sensor/making-an-intervalometer
Krediet aan Ian Lang die me geholpen mijn timingprobleem op te lossen.
Deze code is publiek domein, veel plezier!
int IRledPin = 12; Aangesloten op digital pin 12 LED
int buttonPin = 3; Voetschakelaar verbonden met digitale #3 grond de pin te leiden
De Setup-methode wordt uitgevoerd zodra, wanneer de schets begint
niet-ondertekende long timespan = 180000;
VOID Setup {}
Initialiseer de IR digitale pin als uitgang:
pinMode (IRledPin, uitvoer);
pinMode (buttonPin, INPUT);
digitalWrite (buttonPin, hoge); pullup op
Serial.begin(9600);
}
in eerste instantie uw vertraging ingesteld op 10 seconden voor het testen van de werking en het omzetten van 1800 voor een volledige 3 minuten dempen, of een beetje korter
dat de tijd die het neemt u initiëren de demper en vangen het einde uit de commercials.
void loop
{
Als (! digitalRead(buttonPin))
{
Serial.println ("verzenden IR signaal"); muteswitch ingedrukt
SendCMuteCode();
vertraging (timespan); wacht 3 minuten
Serial.println ("verzenden IR signal2");
SendCMuteCode();
}
}
Deze procedure stuurt een 38KHz puls naar de IRledPin
voor een bepaalde aantal microseconden. We zullen dit gebruiken wanneer we nodig voor het verzenden van codes
VOID pulseIR(long microsecs) {}
We zullen af te tellen van het aantal microseconden die wij worden verteld om te wachten
cli(); Dit schakelt een achtergrond interrupts
terwijl (microsecs > 0) {}
38 kHz is ongeveer 13 microseconden hoge en lage 13 microseconden
digitalWrite (IRledPin, hoge); Dit duurt ongeveer 3 microseconden gebeuren
delayMicroseconds(10); voor de 10 microseconden hangen
digitalWrite (IRledPin, laag); Dit duurt ook ongeveer 3 microseconden
delayMicroseconds(10); voor de 10 microseconden hangen
Zo 26 microseconden helemaal
microsecs-= 26;
}
Sei(); Hiermee schakelt u hen terug op
}
VOID SendCMuteCode() {}
Dit is de code voor mijn bijzondere Canon, voor anderen de zelfstudie gebruiken
' grijpen ' de juiste code van de afstandsbediening
delayMicroseconds(2595);
pulseIR(2450);
delayMicroseconds(600);
pulseIR(600);
delayMicroseconds(600);
pulseIR(600);
delayMicroseconds(600);
pulseIR(1200);
delayMicroseconds(600);
pulseIR(600);
delayMicroseconds(600);
pulseIR(1250);
delayMicroseconds(600);
pulseIR(600);
delayMicroseconds(600);
pulseIR(650);
delayMicroseconds(600);
pulseIR(1200);
delayMicroseconds(600);
pulseIR(600);
delayMicroseconds(600);
pulseIR(600);
delayMicroseconds(600);
pulseIR(650);
delayMicroseconds(600);
pulseIR(650);
delay(65); 65 milliseconden wacht voordat u het opnieuw verzendt
delayMicroseconds(2595);
pulseIR(2450);
delayMicroseconds(600);
pulseIR(600);
delayMicroseconds(600);
pulseIR(600);
delayMicroseconds(600);
pulseIR(1200);
delayMicroseconds(600);
pulseIR(600);
delayMicroseconds(600);
pulseIR(1250);
delayMicroseconds(600);
pulseIR(600);
delayMicroseconds(600);
pulseIR(650);
delayMicroseconds(600);
pulseIR(1200);
delayMicroseconds(600);
pulseIR(600);
delayMicroseconds(600);
pulseIR(600);
delayMicroseconds(600);
pulseIR(650);
delayMicroseconds(600);
pulseIR(650);
}