Operações matemáticas como somar, subtrair, multiplicar e dividir podem ser realizadas com a placa Raspberry PI4b. Isso permite que os projetos e circuitos desenvolvidos com esta placa sejam informatizados, ou seja, podem ser medidos, processados, aplicados algoritmos, etc. Neste capítulo veremos como podemos usar o Raspberry PI4b para executar instruções de adição e subtração.

 

 


 

 

 

Como o Raspberry PiB4 possui uma arquitetura de 64 bits, ele pode realizar grandes operações matemáticas. Assim, começaremos vendo a adição e a subtração, que são executadas na unidade aritmética do processador conforme a imagem a seguir:

 


| Clique na imagem para ampliar |

 

 

Muitas vezes quando queremos calcular ou quantificar um problema, vamos à calculadora para resolver os possíveis valores encontrados no problema. Ao desenvolver circuitos com um microcontrolador, podemos ler sensores de praticamente qualquer tipo de sinal e, de acordo com algumas regras de operação, aplicar operações aritméticas para obter o resultado desejado. Vamos colocar, por exemplo, um controle de temperatura para controlar um ambiente.

Temos o sensor de temperatura e temos alguns pontos de ajuste para resfriamento e aquecimento. Outro exemplo pode ser uma fábrica de sabonetes, onde são utilizadas esteiras transportadoras, com seus respectivos sensores para contagem e atuadores para embalar os sabonetes em caixas. Embora os programas completos desses exemplos não sejam mostrados neste artigo, vamos usá-los como referência e entender o significado das operações aritméticas e como podemos utilizá-las em nossos projetos.

Na figura a seguir mostramos a semelhança ou igualdade entre o cartão Raspberry Pi4B e uma Calculadora, pois ambos permitem a realização de operações aritméticas. Neste artigo estudaremos essas operações ou instruções.

 


| Clique na imagem para ampliar |

 

 

 

A INSTRUÇÃO SOMA (+).

 

A instrução de adição é a operação matemática que permite adicionar outro valor a um valor, por exemplo:

 

2+7 = 9

 

Na operação de adição anterior, usamos a instrução de adição que normalmente encontramos em qualquer livro ou cálculo. Usamos diariamente, normalmente no trabalho, escola, faculdade, etc. Mas também podemos usá-lo nos circuitos que podemos criar ou inventar com o cartão Raspberry Pi4B. Como posso usar adição para calcular circuitos eletrônicos feitos com o Raspberry Pi4B? Esta questão pode ser desenvolvida ou entendida da seguinte forma:

O Raspberry Pi4B tem uma RAM e está em branco e sem rótulo. Ou seja, posso armazenar valores, mas preciso rotular ou nomear cada valor. Neste capítulo usaremos a linguagem “C”, para um melhor entendimento de adição e subtração. Por exemplo, para criar uma variável ou local de memória, posso usar uma instrução como:

 

 

Int sensorTemperatura;

 

A linha de código acima está criando uma variável ou local de memória chamado sensorTemperature. Ou seja, está rotulando um espaço na memória RAM. A memória RAM pode ser vista como uma série de gavetas ou compartimentos conforme mostrado na figura a seguir.

 


 

 

 

Quando um novo projeto é iniciado, essas gavetas não têm nome ou rótulo, mas depois de escrever uma declaração como:

 

 

Int sensorTemperatura;

 

 

Então a memória RAM seria como mostrado na figura a seguir.

 


 

 

 

 

Assim, posso nomear ou rotular as variáveis ​​necessárias nos projetos ou circuitos que estou criando. Vamos criar mais uma variável na RAM. Vamos chamá-lo de ponto de ajuste (set point). O código ficaria assim:

 

 

Int sensorTemperatura;

 

 

Int setpoint

 

 

Agora a memória RAM ficará semelhante ao que é mostrado na figura a seguir:

 


 

 

 

Isso porque a RAM é do tipo random, ou seja, quando o microcontrolador é ligado, a RAM pode ter qualquer valor. Por exemplo, uma vez ligado, o microcontrolador pode apresentar valores conforme a figura a seguir.

 


 

 

 

Mas se desligarmos o circuito e energizá-lo novamente, podem aparecer valores como os mostrados na figura a seguir.

 


 

 

 

Se desligarmos e ligarmos novamente o circuito, a memória RAM pode ter os valores mostrados na figura a seguir.

 


 

 

 

Assim, podemos entender que como a RAM é um tipo de memória aleatória (Random Access Memory), seus valores iniciais são desconhecidos. Por este motivo é recomendável inicializar as variáveis ​​que estamos utilizando em nosso projeto ou circuito com algum valor. Para fazer isso, simplesmente atribuímos um valor a ela, quando damos um nome à variável. Observe o seguinte código:

 

Int Sensor de temperatura = 0;

 

 

Int setpoint = 33;

 

A cada variável foi atribuído um valor e assim o compilador gera instruções para que as variáveis sejam inicializadas com seus respectivos valores. Se executarmos o programa no microcontrolador, os locais de memória ou variáveis terão os valores mostrados na seguinte figura.

 


 

 

 

Se desligarmos o circuito e energizá-lo novamente, os valores serão os mesmos mostrados na figura anterior. Isso é válido para cada vez que o circuito é desligado e ligado.

Vamos criar mais 3 variáveis em nosso programa, conforme a figura a seguir.

 


 

 

 

Isto pode ser usado para a construção de um termostato ou controle de temperatura, conforme mostrado na figura a seguir.

 


 

 

 

Como dito antes, os programas mostrados são exemplos básicos para explicar as operações aritméticas. Vamos inicializar seus valores conforme o programa a seguir:

 

int sensor de temperatura = 0;

Int setpoint = 33;

int setpointHeating = 0;

Int display = 0;

int histereie = 2;

 

void setup() {

}

 

void setup() {

}

 

void loop() {

setpointCalentamiento = setpoint + histerisis;

sensorTemperatura = analogRead(A0);

display = sensorTemperatura;

}

 

Ao executar o programa, os valores da memória RAM ficarão conforme a figura a seguir.

 


 

 

 

 

Note que a variável display sempre terá o valor da variável sensorTemperature. Isso ocorre porque a instrução:

 

display = sensorTemperatura;

 

 

Esta instrução move o conteúdo de sensorTemperature para display. Lembre-se que o símbolo de igual (=) é chamado na linguagem C/C++, como um operador de atribuição e é usado para mover dados de um local de memória para outro. Podemos ver que o sensor de temperatura está lendo 17.

Além disso, podemos ver na figura anterior que o valor de setpointCalentamiento é 35. No início do programa iniciamos esta variável com zero (0) como mostra a seguinte instrução:

int setpointHeating = 0;

Mas ao executar o programa, esta variável muda para 35, pois realizamos uma soma e o resultado é armazenado na variável setpointCalentamiento. Isso é feito pela instrução:

setpointHeating = setpoint + histerese;

Assim, podemos utilizar a soma em nossos projetos ou circuitos com o Arduino Uno.

 

 

EXECUTANDO A INSTRUÇÃO "SOMA" NO SIMULADOR GRÁFICO DO PROCESSADOR.

 

Para abrir o simulador gráfico, vá até a pasta ou cole onde está localizado o simulador e execute-o em um navegador conforme a imagem a seguir:

 


 

 

 

Aparecerá uma janela como a da figura a seguir:

 


| Clique na imagem para ampliar |

 

 

No editor vamos escrever a instrução para executar:

 

ADIÇÃO

Isso é feito com a instrução:

ADD

 

Seguido do registrador onde será armazenado o resultado:

X0 a X27

 

Seguido dos 2 registradores usados como operandos para fazer a operação

ADD:

X0 a X27

 

Uma instrução “Adicionar” completa ficaria assim:

ADD: X1, X3, X4

 

Obs: é necessário separar o nome dos registros por vírgula “,”.

Digite as seguintes instruções no editor do simulador:

 


| Clique na imagem para ampliar |

 

 

Estamos escrevendo um programa onde o registrador X3 é carregado com o valor: 0X58, o registrador X4 com o valor: 0XDB, então é executada a instrução de adição (ADD), entre os registradores X3 e X4, deixando o resultado no registrador X1 . Para executar o programa, pressione o botão: “Montar” e em seguida o botão: “Executar Instrução”, até finalizar todas as instruções.

 


| Clique na imagem para ampliar |

 

 

O programa dará os seguintes valores nos registradores:

 


| Clique na imagem para ampliar |

 

 

Se você clicar nos botões: "Dec", como mostra a imagem a seguir você pode ver os valores em decimal:

 


| Clique na imagem para ampliar |

 

 

Você também pode executar instruções em decimal. Para isso é necessário omitir o: “0x” antes dos valores em hexadecimal. Escreva o seguinte programa:

 


 

 

 

Execute-o e observe o resultado nos logs, conforme a imagem a seguir:

 


| Clique na imagem para ampliar |

 

 

 

Você pode experimentar outros valores e ver os resultados nos logs.

 

 

A INSTRUÇÃO SUBTRAI (-)

A instrução de subtração é a operação que nos permite subtrair algo de um valor. Por exemplo:

 

7-5=3

 

Subtraímos de 7, o valor de 5 e então o resultado é 3. Mas como posso usar isso, na placa Raspberry Pi4B? Vejamos o seguinte exemplo de programa onde criamos uma variável chamada setpointCooldowns.

 

 


 

 

 

 

A figura anterior mostra os valores atribuídos no início do programa. As outras variáveis são semelhantes ao exemplo usado acima:

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;

}

 

Ao rodarmos o programa, os valores ficarão como a partir da figura a seguir.

 


 

 

 

Podemos ver que a variável setpointCooling foi iniciada em zero (0). Mas quando a instrução é executada:

setpointCooling = setpoint - histerese;

a variável passa a ter o valor 31, pois estamos subtraindo ou subtraindo o valor da variável histerese (2) do valor da variável setpoint (33).

No programa a seguir, inicializamos a variável histerese em 4. Após rodar o programa, os valores das variáveis ​​ou posições de memória ficariam conforme a figura a seguir.

 


 

 

 

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;

}

 

Analise os resultados e veja como podemos facilmente executar operações aritméticas na placa Arduino Uno, como se fosse uma calculadora.

 

 

EXECUTANDO A INSTRUÇÃO "SUBTRAIR" NO SIMULADOR GRÁFICO DO PROCESSADOR

No editor vamos escrever a instrução para executar:

 

SUBTRAÇÃO

Isso é feito com a instrução:

SUB

Seguido do registrador onde será armazenado o resultado:

X0 a X27

Seguido dos 2 registradores usados ​​como operandos para fazer a operação SUB:

X0 a X27

Uma instrução “Adicionar” completa ficaria assim:

SUB X1, X3, X4

Obs: é necessário separar o nome dos registros por vírgula “,”.

 

Digite as seguintes instruções no editor do simulador:

 


| Clique na imagem para ampliar |

 

 

Estamos escrevendo um programa onde o registrador X5 é carregado com o valor: 0X37, o registrador X2 com o valor: 0X11, a seguir é executada a instrução de subtração (SUB), entre os registradores X5 e X2, deixando o resultado no registrador X3 . Para executar o programa, pressione o botão: “Montar” e em seguida o botão: “Executar Instrução”, até finalizar todas as instruções.

 


 

 

 

O programa dará os seguintes valores nos registradores:

 


| Clique na imagem para ampliar |

 

 

Se você clicar nos botões: "Dec", como mostra a imagem a seguir você pode ver os valores em decimal:

 


| Clique na imagem para ampliar |

 

 

Você também pode executar instruções em decimal. Para isso é necessário omitir o: “0x” antes dos valores em hexadecimal. Escreva o seguinte programa:

 


| Clique na imagem para ampliar |

 

 

Execute-o e observe o resultado nos logs, conforme a imagem a seguir:

 


| Clique na imagem para ampliar |

 

 

Você pode experimentar outros valores e ver os resultados nos logs.

 

 

Conclusão

Adicionar e subtrair é relativamente fácil no Raspberry Pi4B. Embora esta placa possa ser programada com diferentes linguagens como C/C++ e Assembler, os resultados serão os mesmos para qualquer linguagem que utilizarmos. É importante praticar e tirar suas próprias conclusões das instruções utilizadas e seus respectivos resultados.