#include #include //enable IR signal sending ability (only works on digital pin 3!!!) IRsend irsend; //these pins can be changed if you like //pin from center of potentiometer int potpin = 3; int val = 0; int old_val = 0; int level = 0; int old_level = 0; //pin from volume down pushbutton int downVolpin = 4; int downVolVal = 0; //led to indicate changes in volume (for debugging) you can change pin int indicatorLED = 2; //volume up 490 //volume down c90 void setup() { Serial.begin(9600); pinMode(downVolpin, INPUT); pinMode(indicatorLED, OUTPUT); } void loop() { downVolVal = digitalRead(downVolpin); //state of volume down button val = analogRead(potpin); // analog value of pot, between 0-1023 level = map(val, 0, 1023, 0, 100); //changes values from 0-1023 to 0-100 delay(10); if (downVolVal == HIGH) { // if down volume button is pressed for (int i = 0; i < 3; i++) { irsend.sendSony(0xc90, 12); // Sony TV down volume (change for your device) delay(100); } } else if (level > old_level) { //if knob is turned up digitalWrite(indicatorLED, HIGH); for (int i = 0; i < 3; i++) { irsend.sendSony(0x490, 12); // Sony TV up volume (change for your device) delay(100); } } else if (level < old_level) { //if knob is turned down digitalWrite(indicatorLED, HIGH); for (int i = 0; i < 3; i++) { irsend.sendSony(0xc90, 12); // Sony TV down volume (change for your device) delay(100); } } else { //if neither action is done digitalWrite(indicatorLED, LOW); } old_val = val; //the value is now old old_level = level; //the mapped value is now old }