Autor Tema: como invertir un valor entre 0 a 255 en 255 a 0  (Leído 3276 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado w3-sistemas

  • PIC12
  • **
  • Mensajes: 89
como invertir un valor entre 0 a 255 en 255 a 0
« en: 14 de Abril de 2016, 23:22:55 »
hola a todos, si alguien me comenta como hacer en c e de invertir un valor de entre 0 a 255 al reves, osea si resivo 255 es 0 si es 254 es 1 253 es 2 y asi susecivamente, se que hay alguna palabra en C que lo hace yo pense en una formula ( (valor recibido - 255)*(-1)) no le den bola a los parentesis es simplemente para comprension, gracias

Desconectado QIQE

  • PIC18
  • ****
  • Mensajes: 335
Re:como invertir un valor entre 0 a 255 en 255 a 0
« Respuesta #1 en: 15 de Abril de 2016, 01:47:31 »
Has probado 255- ValorRecibido
Muchas gracias por vuestro tiempo.

Saludos desde valencia!!!

Desconectado jaio21

  • PIC10
  • *
  • Mensajes: 33
s
« Respuesta #2 en: 15 de Abril de 2016, 03:28:56 »
Saludos Soy Principiante en Lenguaje C pero de ARDUINO

nose si sea lo mismo en la plataforma directa de C o C++

pero en Arduino esta este metodo para invertir el valor de un numero entero el numero en este caso es de 0 a 100 y se invierte de 100 a 0

con la  Referencia es MAP
y la Sintaxis es asi:

int valor;
valor = map(valor, 0, 100, 100, 0);

Aqui el ejemplo en Arduino... espero te sea de Ayuda...

//*****************************************
void setup() {
Serial.begin(9600);

}

void loop()
{
  int valor = analogRead(0);
  valor = map(valor, 0, 1023, 0, 100);
  Serial.print("Valor Original de entrada :");
  Serial.println(Valor);

  valor = map(valor, 0, 100, 100, 0);
  Serial.print("Valor invertido de salida:");
  Serial.print(Valor);
}

//*****************************************

Saludos
« Última modificación: 15 de Abril de 2016, 03:33:07 por jaio21 »
El Ingenio humano no tiene limites, se obtiene a través del tiempo y aprendiendo de nuestros propios errores....

Javier Iriarte

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:como invertir un valor entre 0 a 255 en 255 a 0
« Respuesta #3 en: 15 de Abril de 2016, 04:48:51 »
La solucion mas simple es una resta como dijo QIQE, no tiene sentido utilizar nada mas. Obviamente limitarlo a 8 bits y estamos hablando de 2 variables unsigned.

map es un overkill en esta situacion en particular, ya que debe generar una ecuacion lineal para que el valor que envies sea pasado al otro valor, cuando me refiero a una ecuacion lineal me refiero a esto:

Código: [Seleccionar]
Resultado = A * Variable + B
o que es lo mismo que

Código: [Seleccionar]
Y = AX + B
Código: C
  1. long map(long x, long in_min, long in_max, long out_min, long out_max)
  2. {
  3.   return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
  4. }

Internamente lo hace con enteros ( nuevamente me refiero a A y B ), y el resultado deberia darte un valor de A = -1 y B = 255, llegando nuevamente a la formula que dio QIQE, pero su aplicacion es muy distinta, por la cantidad de calculos, por que se usa una variable long ( 4 bytes ) , lo cual la operacion de suma/resta y multiplicacion se vuelven mas costosas computacionalmente (a una simple resta) y ni hablar de la division.

« Última modificación: 15 de Abril de 2016, 04:54:30 por KILLERJC »

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1937
    • Sicoy
Re:como invertir un valor entre 0 a 255 en 255 a 0
« Respuesta #4 en: 18 de Abril de 2016, 11:52:05 »
Código: C
  1. unsigned char CambiarValor (unsigned char ValorRecibido)
  2. {
  3.    return (255 - ValorRecibido);
  4. }
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32


 

anything