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 são figuras geométricas fechadas com todos os lados e ângulos iguais.
Um exemplo de polígono regular é o triângulo equilátero.

Fonte: Infoescola
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:

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 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
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
Os materiais necessários para o projeto são:
A montagem do projeto deve ser feita da seguinte forma:

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();
}




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:
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ê!
|
Conheça a Metodologia Eletrogate e Lecione um Curso de Robótica nas Escolas da sua Região!