Paso 3: Programe!
Este es el programa que escribí. Envía subir señal un volumen cada vez que la perilla sea girada hasta un volumen hacia abajo cuando la perilla hacia abajo, un volumen por señal cada pocos milisegundos mientras que el volumen botón se presiona y el indicador LED se ilumina cuando está enviando señales.
Yo todavía soy un principiante en la programación de arduino, por lo que cualquier mejora sería agradable.
Recuerda cambiar los códigos según los códigos de control remoto!!!
Aquí es un archivo de arduino y un archivo .txt que se puede copiar y pegar.
CÓDIGO (es mejor no copiar desde aquí, copiar de .txt o descargar el código de arduino en lugar de otro):
#include < IRremote.h >
#include < IRremoteInt.h >
activar señal de IR enviando capacidad (sólo funciona en el pin digital 3!!!)
Irsend de IRsend;
Estos pines se pueden cambiar si quieres
perno de centro del potenciómetro
int potpin = 3;
int val = 0;
int old_val = 0;
int nivel = 0;
int old_level = 0;
PIN de volumen pulsador
int downVolpin = 4;
int downVolVal = 0;
LED para indicar cambios en el volumen (para depuración) puede cambiar pin
int indicatorLED = 2;
volumen hasta 490
volumen abajo c90
void setup()
{
Serial.Begin(9600);
pinMode (downVolpin, entrada);
pinMode (indicatorLED, salida);
}
void loop() {}
downVolVal = digitalRead(downVolpin); Estado de volumen botón de
Val = analogRead(potpin); valor analógico de la olla, entre 0-1023
Level = mapa (val, 0, 1023, 0, 100); cambia los valores de 0-1023 a 0-100
Delay(10);
Si (downVolVal == HIGH) {/ / si el volumen se presiona el botón
digitalWrite (indicatorLED, HIGH);
para (int i = 0; i < 3; i ++) {}
irsend.sendSony (0xc90, 12); SONY TV volumen (cambio para su dispositivo)
Delay(100);
}
}
else if (nivel > old_level) {//if perilla para arriba
digitalWrite (indicatorLED, HIGH);
para (int i = 0; i < 3; i ++) {}
irsend.sendSony (0x490, 12); SONY TV volumen (cambio para su dispositivo)
Delay(100);
}
}
else if (nivel < old_level) {//if perilla
digitalWrite (indicatorLED, HIGH);
para (int i = 0; i < 3; i ++) {}
irsend.sendSony (0xc90, 12); SONY TV volumen (cambio para su dispositivo)
Delay(100);
}
} else {//if ninguna acción se realiza
digitalWrite (indicatorLED, bajo);
}
old_val = val; el valor ahora es vieja
old_level = nivel; el valor asignado es ahora viejo
}