Hur att styra TV fungerar med Analog ingång och Arduino (3 / 4 steg)
Steg 3: Programmera den!
Här är det program jag skrev. Det skickar en volym upp signalen när vredet vänds upp, en volym när ratten vrids, en volym ner signal var några millisekunder så länge som volymen ned-knappen trycks, och lyser indikatorn LED när det sänder signaler.
Jag är fortfarande nybörjare på arduino programmering, så några förbättringar skulle vara trevligt.
Kom ihåg att ändra koder enligt din fjärrkontrollskoder!
Här är en arduino fil och en txt-fil som du kan kopiera och klistra in.
KOD (det är bäst att inte kopiera den här, kopiera från .txt eller hämta arduino koden i stället):
#include < IRremote.h >
#include < IRremoteInt.h >
aktivera IR-signalen skickar förmåga (fungerar bara på digital stift 3!!!)
IRsend irsend;
dessa stift kan ändras om du vill
PIN från mitten av potentiometer
int potpin = 3;
int val = 0;
int old_val = 0;
int nivå = 0;
int old_level = 0;
PIN från Volym ned tryckknappen
int downVolpin = 4;
int downVolVal = 0;
ledde till att indikera förändringar i volym (för felsökning) kan du ändra PIN-kod
int indicatorLED = 2;
volym upp 490
Volym ned c90
void setup()
{
Serial.BEGIN(9600);
pinMode (downVolpin, ingång);
pinMode (indicatorLED, produktionen);
}
void loop() {
downVolVal = digitalRead(downVolpin); tillstånd av volym ned-knapp
Val = analogRead(potpin); analoga värde av potten, mellan 0-1023
Level = karta (val, 0, 1023, 0, 100); ändringar av värden från 0-1023 till 0-100
Delay(10);
om (downVolVal == hög) {/ / om ner volym knappen trycks
digitalWrite (indicatorLED, hög);
för (int jag = 0; jag < 3; i ++) {
irsend.sendSony (0xc90, 12); Sony TV ner volymen (förändring för din enhet)
Delay(100);
}
}
annars om (nivå > old_level) {//if ratten vrids
digitalWrite (indicatorLED, hög);
för (int jag = 0; jag < 3; i ++) {
irsend.sendSony (0x490, 12); Sony TV upp volym (förändring för din enhet)
Delay(100);
}
}
annars om (nivå < old_level) {//if ratten vrids
digitalWrite (indicatorLED, hög);
för (int jag = 0; jag < 3; i ++) {
irsend.sendSony (0xc90, 12); Sony TV ner volymen (förändring för din enhet)
Delay(100);
}
} annat {//if varken åtgärder görs
digitalWrite (indicatorLED, låg);
}
old_val = val; värdet är nu gammal
old_level = nivå. mappade värdet är nu gammal
}