Hola a todos, aunque ya llevo tiempo registrada, éste es mi primer hilo pidiendo ayuda.
He intentado usar la búsqueda, otras veces sí que he resuelto así problemas, pero hoy no hay modo.
Estoy realizando un programa en C, usando el compilador de CCS y viendo los resultados mediante proteus.
Deseo que me saque por puerto valores RGB, entre 0 y 255 mediante una modulación software de pulso. Al principio, yo le enviaba desde una aplicación valores entre 0 y 255, y veía los resultados correctos.
Ahora lo que me interesa es mandar los valores como Tono y Brillo, y que esos dos parámetros me den los tres valores RGB que necesito. La función está bien hecha, ya que la he probado con otros lenguajes, pero creo que aquí tengo algún tipo de problema con los tipos de datos.
Tono y Brillo los he declarado como 'int8', y son valores que envío entre 0 y 255. ¿Cómo declaro 'Rojob', 'Verdeb' y 'Azulb'? He probado con int8 también, con long, con float, y no hay modo.
Dejo aquí un trozo de la función, en el primer caso, Rojob y Azulb saldrían como valores correctos, pero en Verdeb sólo salen valores cercanos a 0. En el segundo caso, el problema es con el Rojob. Y así con el resto.
He probado añadiendo (int) y llenándolo de paréntesis, pero tampoco.
void CambiarColor()
{
If ((43 > Tono) && (Tono >= 0)) //0º-60º
{
Rojob = Brillo; //255 si el brillo está al 100% (=255)
Azulb = 0;
Verdeb =(int) (Tono * Brillo / 43);
}
If ((86 > Tono) && ( Tono >= 43)) //60º-120º
{
Verdeb = Brillo;
Azulb = 0;
Rojob =(int)((Brillo - ((Tono - 43) * Brillo) )/ 43);
//ETC.
}
Muchas gracias ya de antemano y pido disculpas por mis pésimas explicaciones!