Projetos

Calculadora de Áreas com Arduino: Aprenda a construir

Arthur Almeida 4 de setembro de 2025

Introdução

No post de hoje, vamos aplicar conceitos de matemática para criar uma calculadora de áreas de polígonos regulares! O projeto é bem simples e requer apenas um Arduino, um display e alguns botões. Mas antes de começarmos, vamos definir alguns conceitos importantes. Vamos lá!


Polígonos regulares

O que são polígonos regulares?

Polígonos regulares são figuras geométricas fechadas com todos os lados e ângulos iguais.

Um exemplo de polígono regular é o triângulo equilátero.

Um triângulo equilátero é um polígono regular

Fonte: Infoescola


Como calcular a área

Para calcular áreas, existem várias maneiras. No entanto, a melhor abordagem para o nosso projeto é utilizar a seguinte fórmula:

Área = semiperímetro X apótema

Onde o semiperímetro é a metade do perímetro.

Logo, a fórmula é a seguinte:


Perímetro e Apótema

O que é o perímetro?

O perímetro é a soma de todos os lados de um polígono. Por exemplo, o perímetro de um quadrado com lados de 2 cm é 8 cm.

O que é apótema?

O apótema de um polígono regular é o segmento de reta que vai do centro até um de seus lados, formando um ângulo reto com ele.

Fonte: Mundoeducacao


Como calcular o Apótema

Para calcular o apótema de qualquer polígono regular, usamos a seguinte fórmula:

Legenda:

L –> Tamanho do lado

N –> Quantidade de lados

tg –> Tangente


Montagem

A montagem do projeto deve ser feita da seguinte forma:


Código

O código para o projeto é o seguinte:

#include <Adafruit_SSD1306.h> //inclui a biblioteca para o controle do display
#define OLED_RESET -1 
#define SCREEN_ADDRESS 0x3C 
Adafruit_SSD1306 display(128, 64, &Wire, OLED_RESET);  // define o tamanho do display

#define PI 3.1415926535897932384626433832795  //define um valor com várias casas decimais de pi

// inclui os botões e variáveis para o controle
int botao = 5;
int botao2 = 4;
int botao3 = 3;
int botao4 = 2;
int countUp = 0;
int lados = 0;
int countlado = 0;
float area = 0;
int p = 0;
float apot = 0;


void setup() {
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //inicia o display
  display.clearDisplay(); //limpa o display
  // inclui os botões
  pinMode(botao, INPUT_PULLUP);
  pinMode(botao2, INPUT_PULLUP);
  pinMode(botao3, INPUT_PULLUP);
  pinMode(botao4, INPUT_PULLUP);
}

void loop() {
  //bloco responsável por passar o menu 
  if (digitalRead(botao2) == LOW){
    delay(500);
    countUp++;}
  if (digitalRead(botao4) == LOW){
    delay(500);
    countUp--;}
  
  if(countUp == 0){
    tela1();
  }
   else if(countUp == 1){
    tela2();
  }
   else if(countUp == 2){
    tela3();
  }
   else if(countUp == 3){
    calcularea();
  }
 
 //bloco responsável por não permitir valores impossíveis na calculadora
  if(countUp == 4){
   countUp = 0;}
  if(lados < 3){
   lados = 3;}

}
void tela1(){  //função responsável por chamar a tela 1
  display.clearDisplay();
  display.setTextSize(2); 
  display.setTextColor(1); 
  display.setCursor(17,25); 
  display.print("C.D.A V1");
  display.display();
}

void tela2(){ //função responsável por chamar a tela 2
  if (digitalRead(botao) == LOW){
    delay(500);
    lados++;}
  if (digitalRead(botao3) == LOW){
    delay(500);
    lados--;}
  display.clearDisplay();
  display.fillRect(0, 0, 128, 15, WHITE); 
  display.setTextSize(1);
  display.setTextColor(BLACK,WHITE); 
  display.setCursor(2,4); 
  display.print("Quantidade de lados:");
  display.setTextSize(2); 
  display.setTextColor(1); 
  display.setCursor(5,30); 
  display.print("Lados: ");
  display.setTextSize(2); 
  display.setTextColor(1); 
  display.setCursor(80,30); 
  display.print(lados);
  display.display();
}

void tela3(){  //função responsável por chamar a tela 3

   if (digitalRead(botao) == LOW){
    delay(500);
    countlado++;}
   if(digitalRead(botao3) == LOW){
    delay(500);
    countlado--;}
   if(countlado < 0){
    countlado = 0;}

  display.clearDisplay();
  display.fillRect(0, 0, 128, 15, WHITE); 
  display.setTextSize(1);
  display.setTextColor(BLACK,WHITE); 
  display.setCursor(22,4); 
  display.print("Valor do lado:");
  display.setTextSize(3); 
  display.setTextColor(1); 
  display.setCursor(30,30); 
  display.print(countlado);
  display.setTextSize(3); 
  display.setTextColor(1); 
  display.setCursor(80,30); 
  display.print("Cm");
  display.display();
}

void calcularea(){  //função responsável por chamar a tela 4(tela que mostra o resultado da área)
  area = (p/2) * apot;
  p = countlado * lados;
  apot = countlado/(2*tan(PI/lados));

  display.clearDisplay();
  display.fillRect(0, 0, 128, 15, WHITE); 
  display.setTextSize(1);
  display.setTextColor(BLACK,WHITE); 
  display.setCursor(50,4); 
  display.print("Area:");
  display.setTextSize(2); 
  display.setTextColor(1); 
  display.setCursor(0,35); 
  display.print(area);
  display.setTextSize(2); 
  display.setTextColor(1); 
  display.setCursor(90,35); 
  display.print("Cm");
  display.setTextSize(1); 
  display.setTextColor(1); 
  display.setCursor(115,30); 
  display.print("2");
  display.display();
}

 


Demonstração

Vídeo demonstrando o cálculo da área de um triângulo equilátero:

Vídeo demonstrando o cálculo da área de um quadrado:

Vídeo demonstrando o funcionamento de cada botão:


Conclusão

Obrigado por ler até o fim!

E aí, gostou do projeto? Sinta-se à vontade para deixar suas sugestões ou ideias nos comentários. Se você fizer este projeto, poste nas redes sociais e marque a @Eletrogate!

Lembre-se: alimente sempre o maker que existe em você!

 



Sobre o Autor


Arthur Almeida

Estudante do Ensino médio, aficionado por criar novos projetos eletrônicos e automações, principalmente com o Arduino. No meu tempo livre eu gosto de pesquisar sobre novas tecnologias e tento criar projetos com elas.


Arthur Almeida

4 de setembro de 2025

Conheça a Metodologia Eletrogate e Lecione um Curso de Robótica nas Escolas da sua Região!

Eletrogate Robô

Assine nossa newsletter e
receba  10% OFF  na sua
primeira compra!