Operaciones matemáticas como sumar, restar, multiplicar y dividir, pueden ser realizadas con la placa Raspberry PI4b. Esto permite que los proyectos y circuitos desarrollados con esta placa, se puedan computarizar, es decir se puedan medir, procesar, aplicarles algoritmos, etc. en esta capitulo veremos cómo podemos usar la Raspberry PI4b para ejecutar instrucciones de suma y resta.

 

Debido a que la Raspberry PiB4 tiene una arquitectura de 64 bits, este puede realizar operaciones matematicas grandes. Asi, comenzaremos por ver la suma y resta, las cuales se ejecutan en la unidad arimetica del procesador como mostrado en la siguiente imagen:

 


| Clique na imagem para ampliar |

 

 

 Muchas veces cuando queremos computar o cuantificar un problema, acudimos a la calculadora para resolver los posibles valores encontrados en el problema. Cuando se desarrollan circuitos con microcontrolador, podemos leer sensores prácticamente de cualquier tipo de señal y de acuerdo a unas reglas de funcionamiento, aplicar operaciones aritméticas para obtener el resultado deseado. Vamos a poner por ejemplo un control de temperatura para el control de un ambiente.

Tenemos el sensor de temperatura y tenemos algunos setpoints para enfriamiento y calentamiento. Otro ejemplo, puede ser una fábrica de jabón, donde son usadas cintas transportadoras, con sus respectivos sensores para contar y actuadores para empaquetar los jabones en cajas. Aunque en el presente artículo no se muestren los programas completos para estos ejemplos, los vamos a usar como una referencia y poder entender el significado de las operaciones aritméticas y cómo podemos usarlas en nuestros proyectos.

En la siguiente figura mostramos la similitud o igualdad que hay entre la tarjeta Raspberry Pi4B y una Calculadora, pues los 2 permiten hacer operaciones aritméticas. En este artículo estudiaremos estas operaciones o instrucciones.

 


| Clique na imagem para ampliar |

 

 

 

LA ISNTRUCCION SUMA (+).

 

 

La instrucción suma es la operación matemática que nos permite adicionar a un valor otro, por ejemplo:

 

2+7 = 9

 

 

En la operación de suma anterior, usamos la instrucción suma que normalmente encontramos en cualquier libro o calculo. Lo usamos a diario, normalmente en el trabajo, escuela, colegio, etc. Pero también la podemos usar en los circuitos que podamos crear o inventar con la tarjeta Raspberry Pi4B. ¿Cómo puedo usar la suma para computar los circuitos electrónicos hechos con Raspberry Pi4B? Esta pregunta puede ser desarrollada o entendida de la siguiente manera:

La Raspberry Pi4B tiene una memoria RAM, más está en blanco y sin etiquetar. Es decir, puedo almacenar valores, pero necesito etiquetar o dar nombre a cada valor. En esta capitulo usaremos el lenguaje “C”, para un mejor entendimiento de la suma y resta. Por ejemplo, para crear una variable o localización de memoria, puedo utilizar una instrucción como:

 

 

Int sensorTemperatura;

 

La línea de código anterior está creando una variable o localización de memoria llamada sensorTemperatura. Es decir, está etiquetando un espacio de la memoria RAM. La memoria RAM, puede verse como una serie de cajones o compartimientos como es mostrado en la siguiente figura.

 

 


 

 

 

 Cuando se inicia un proyecto nuevo, estos cajones están sin nombre o sin etiquetar, pero después de escribir una instrucción como:

 

 

Int sensorTemperatura;

 

Entonces la memoria RAM estaría como es mostrado en la siguiente figura.

 


 

 

 

Así, puedo dar nombre o etiquetar las variables necesitadas en los proyectos o circuitos que este creando. Vamos a crear más una variable en la memoria RAM. La llamaremos setpoint . El código quedaría como:

 

 

Int sensorTemperatura;

 

Int setpoint;

 

Ahora la memoria RAM se parecerá a lo mostrado en la siguiente figura:

 


 

 

 

 Esto se debe a que la memoria RAM es del tipo aleatorio, es decir, al energizar el microcontrolador, la memoria RAM puede tener cualquier valor. Por ejemplo, una vez que se energice, el microcontrolador puede tener valores como mostrado en la siguiente figura.

 


 

 

 

 Pero si apagamos el circuito y volvemos a energizar, pueden aparecer valores como los mostrados en la siguiente figura.

 

 


 

 

 

 Si volvemos a apagar y de nuevo energizar el circuito, la memoria RAM puede tener los valores mostrados en la siguiente figura.

 


 

 

 Así, podemos comprender que por ser la memoria RAM, una memoria de tipo aleatorio (Random Access Memory), sus valores iniciales son desconocidos. Por este motivo es recomendable, inicializar con algún valor, las variables que estemos usando en nuestro proyecto o circuito. Para hacer esto, vasta asignarle un valor, cuando damos el nombre a la variable. Observe el código siguiente:

 

 

Int sensorTemperatura = 0;

 

 

Int setpoint = 33;

 

Se ha asignado un valor a cada variable y así el compilador genera instrucciones para que las variables sean iniciadas con sus respectivos valores. Si ejecutamos el programa en el microcontrolador, las localizaciones de memoria o variables, tendrán los valores mostrados en la siguiente figura.

 

 


 

 

 

Si apagamos el circuito y lo volvemos a energizar, entonces los valores serán iguales a los mostrados en la anterior figura. Esto es válido para cada vez que se apague y se energice el circuito.

Vamos a crear 3 variables más en nuestro programa, como mostrado en la siguiente figura.

 


 

 

 

Esto puede ser usado para la construcción de un termostato o control de temperatura como mostrado en la siguiente figura.

 


 

 

 

 Como dicho anteriormente, los programas mostrados son ejemplos básicos para explicar las operaciones aritméticas. Vamos a inicializar sus valores como mostrado en el siguiente programa:

int sensorTemperatura = 0;
int setpoint = 33;
int setpointCalentamiento = 0;
int display = 0;
int histeresis = 2;



void setup() {

}


void loop() {
   setpointCalentamiento = setpoint + histerisis;
   sensorTemperatura = analogRead(A0);
   display = sensorTemperatura;
}

Al ejecutar el programa, los valores de la memoria RAM, estarán como mostrado en la siguiente figura.

 

 


 

 

 

Observemos que la variabledisplay, siempre tendrá el valor de la variable sensorTemperatura. Esto se debe a que la instrucción:

display = sensorTemperatura;

 

Está instrucción mueve el contenido de sensorTemperatura paradisplay . Recordemos que el símbolo igual (=) es llamado en la lenguaje C/C++, como operador de asignación y es usado para mover datos de una localización de memoria para otra. Podemos ver que el sensor de temperatura está leyendo 17.

También, podemos observar en la anterior figura, que el valor de setpointCalentamiento es 35. Al inicio del programa esta variable la iniciamos con cero (0) como muestra la siguiente instrucción:

int setpointCalentamiento = 0;

Pero al ejecutar el programa, esta variable pasa para 35, pues realizamos una suma y el resultado lo almacenamos en la variable setpointCalentamiento. Esto lo hace la instrucción:

setpointCalentamiento = setpoint + histerisis;

Así, podemos usar la suma en nuestros proyectos o circuitos con Arduino Uno.

 

 

EJECUTANDO LA INSTRUCCIÓN “SUMA” EN EL SIMULADOR GRAFICO DEL PROCESADOR.

 

Para abrir el simulador gráfico, vaya hasta la carpeta o pasta donde se encuentra el simulador y ejecútelo en un navegador como mostrado en la siguiente imagen:

 


 

 

 

aparecerá una ventana como la mostrada en la siguiente figura:

 

 


 

 

 

En el editor vamos a escribir la instrucción para ejecutar:

 

**SUMA

Esto se hace con la instrucción:

 

**ADD

 

Seguida del registro donde se almacenará el resultado:

 

**X0 hasta X27

 

Seguida de los 2 registro usado como operandos para hacer la operación ADD:

 

**X0 hasta X27

 

Una instrucción “Suma” completa seria así:

 

**ADD X1, X3, X4

 

Observa: es necesario separar el nombre de los registros por una coma “,”.

 

Escriba las siguientes instrucciones en el editor del simulador:

 


| Clique na imagem para ampliar |

 

 

Estamos escribiendo un programa donde se carga el registro X3 con el valor: 0X58, el registro X4 con el valor: 0XDB, después se ejecuta la instrucción suma (ADD), entre los registros X3 y X4, dejando el resultado en el registro X1. Para ejecutar el programa, presione el botón: “Assemble” y después el botón: “Execute Instruction”, hasta terminar todas las instrucciones.

 

 


| Clique na imagem para ampliar |

 

 

El programa dará en los registros los siguientes valores:

 


| Clique na imagem para ampliar |

 

 

Si presionas en los botones: “Dec”, como mostrado en la siguiente imagen puedes ver los valores en decimal:

 


| Clique na imagem para ampliar |

 

 

También puedes ejecutar instrucciones en decimal. Para esto es necesario omitir el: “0x” antepuestos a los valores en hexadecimal. Escribe el siguiente programa:

 


| Clique na imagem para ampliar |

 

 

Ejecútalo y observa el resultado en los registros, como mostrado en la siguiente imagen:

 

 


 

 

 

Puede experimentar con otros valores y ver los resultados en los registros.

 

 

LA INSTRUCCION RESTA (-)

La instrucción resta es la operación que nos permite sustraer algo de un valor. Por ejemplo:

 

7-5=3

 

Hemos sustraído de 7, el valor de 5 y así su resultado es 3. ¿Pero cómo puedo usar esto, en el la tarjeta Raspberry Pi4B? Veamos el siguiente programa ejemplo donde creamos una variable llamada setpointEnfriamientos.

 

 


| Clique na imagem para ampliar |

 

 

La anterior figura muestra los valores asignados al inicio del programa. Las otras variables son similares al ejemplo usado anteriormente:

int sensorTemperatura = 0;
Int setpoint = 33;
int setpointCalentamiento = 0;
int setpointEnfriamiento = 0;
int display = 0;
int histeresis = 2;


void setup() {

}


void loop() {
   setpointCalentamiento = setpoint + histerisis;
   setpointEnfriamiento = setpoint - histerisis;
   sensorTemperatura = analogRead(A0);
   display = sensorTemperatura;
}

 Cuando ejecutamos el programa, los valores estarán como iniciando en la siguiente figura.

 


 

 Podemos observar que la variable setpointEnfriamiento fue iniciado en cero (0). Pero al ejecutarse la instrucción:

 

setpointEnfriamiento = setpoint - histerisis;

 

la variable pasa a tener el valor el valor de 31, pues estamos restando o sustrayendo el valor de la variable histéresis (2), del valor de la variable setpoint (33).

En el siguiente programa, hemos inicializado la variable histéresis para 4. Después de ejecutar el programa, los valores de las variables o localizaciones de memoria estarían como los mostrados en la siguiente figura.

 

 


 

 

 int sensorTemperatura = 0;
Int setpoint = 33;
int setpointCalentamiento = 0;
int setpointEnfriamiento = 0;
int display = 0;
int histeresis = 4;


void setup() {

}

void loop() {
   setpointCalentamiento = setpoint + histerisis;
   setpointEnfriamiento = setpoint - histerisis;
   sensorTemperatura = analogRead(A0);
   display = sensorTemperatura;
}

 

Analice los resultados y observe como podemos ejecutar operaciones aritméticas en la placa Arduino Uno, con facilidad, como si fuera una calculadora.

 

EJECUTANDO LA INSTRUCCIÓN “RESTA” EN EL SIMULADOR GRAFICO DEL PROCESADOR

En el editor vamos a escribir la instrucción para ejecutar:

 

**RESTA.

 

Esto se hace con la instrucción:

 

**SUB

 

Seguida del registro donde se almacenará el resultado:

 

**X0 hasta X27

 

Seguida de los 2 registro usado como operandos para hacer la operación SUB:

 

**X0 hasta X27

 

Una instrucción “Suma” completa seria así:

 

**SUB X1, X3, X4

 

Observa: es necesario separar el nombre de los registros por una coma “,”.

 

Escriba las siguientes instrucciones en el editor del simulador:

 


 

 

Estamos escribiendo un programa donde se carga el registro X5 con el valor: 0X37, el registro X2 con el valor: 0X11, después se ejecuta la instrucción resta (SUB), entre los registros X5 y X2, dejando el resultado en el registro X3. Para ejecutar el programa, presione el botón: “Assemble” y después el botón: “Execute Instruction”, hasta terminar todas las instrucciones.

 

 


| Clique na imagem para ampliar |

 

 

El programa dará en los registros los siguientes valores:

 


 

 

 

Si presionas en los botones: “Dec”, como mostrado en la siguiente imagen puedes ver los valores en decimal:

 


| Clique na imagem para ampliar |

 

 

También puedes ejecutar instrucciones en decimal. Para esto es necesario omitir el: “0x” antepuestos a los valores en hexadecimal. Escribe el siguiente programa:

 


| Clique na imagem para ampliar |

 

 

Ejecútalo y observa el resultado en los registros, como mostrado en la siguiente imagen:

 


| Clique na imagem para ampliar |

 

 

Puede experimentar con otros valores y ver los resultados en los registros.

 

 

Conclusión

Sumar y restar es relativamente sencillo en la Raspberry Pi4B. Aunque esta tarjeta se puede programar con diferentes lenguajes como C/C++ y Asembler, los resultados serán los mismos para cualquier lenguaje que usemos. Es importante practicar y sacar las propias conclusiones de las instrucciones usadas y sus respectivos resultados.

 

 

 

 

Buscador de Datasheets



N° de Componente