Você está na página 1de 7

Blog

Assistente de Treino com Arduino


Eletrogate 10 de outubro de 2023

Introdução

No post de hoje, nós vamos fazer um “ajudante” para quem faz exercícios físicos em casa. O projeto consiste em um
dispositivo que conta as suas flexões e quantas séries você fez. Ele utiliza um Arduino Uno, um sensor Ultrassônico
HC-SR04, um display Oled e um buzzer.

O projeto

Nesse projeto, o sensor HC-SR04 mede a distância em cm, e compara para ver se ela é menor do que 10 centímetros.
Se for menor do que 10 cm, ele adiciona 1 número na quantidade de flexões. Quando a quantidade de flexões chegar
a 15 flexões, ele encerra uma série e inicia o descanso.

Materiais Necessários para o Projeto Assistente de Treino com Arduino


Uno R3 SMD CH340
Display OLED 128×64 0.96″ I2C – Azul/Amarelo
Módulo Sensor de Distância Ultrassônico HC-SR04
Buzzer Ativo 5v
Protoboard 400 Pontos
Jumpers – Macho/Macho – 65 Unidades

Controle sua privacidade AdOpt


Minhas
Rejeitar Aceitar
opções
Nosso site usa cookies para melhorar a navegação. Política de Privacidade - Termos de uso - Opt-out
Circuito

Código

O código será o seguinte:

1. //Aqui incluimos as bibliotecas


2. #include <SPI.h>
3. #include <Wire.h>
4. #include <Adafruit_GFX.h>
5. #include <Adafruit_SSD1306.h>
6.
7. //aqui configuramos o tamanho do display
8. #define SCREEN_WIDTH 128
9. #define SCREEN_HEIGHT 64
10. #define OLED_RESET -1
11. #define SCREEN_ADDRESS 0x3C
12. Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
13.
14. int flexoes = 15; // aqui você escolhe quantas flexões quer fazer
15.
16. int contador = 0; //cria uma variável para o contador de flexões
17. int series = 0; //
18. int trig = 7; // Pino usado para disparar os pulsos do sensor
19. int echo = 6; // pino usado para ler a saida do sensor
20. int buzzer = 5; //pino onde o buzzer está conectado
21. float TempoEcho = 0;
22. const float VelocidadeSom_mporus = 0.000340; //velocidade do som
23. bool flexaobaixo = false;
24. bool flexaoalto = false;
25.
26.
27. void setup() {
28. Serial.begin(9600);
29.
30. pinMode(trig, OUTPUT); //define o pino Trigger como saída
31. digitalWrite(trig, LOW);
32. pinMode(echo, INPUT); // define pino ECHO como entrada
33. pinMode(buzzer , OUTPUT);//define o buzzer como saída
34.
35. display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // declara o endereço do display
36. display.clearDisplay();
Controle sua privacidade AdOpt
37.
Nosso site 38. digitalWrite(buzzer,LOW);
usa cookies para melhorar a navegação. Política de Privacidade - Termos de uso - Opt-out
39. }
40.
41. void loop() {
42.
43. DisparaPulsoUltrassonico(); //dispara um pulso
44. TempoEcho = pulseIn(echo, HIGH);
45.
46. Serial.println(CalculaDistancia(TempoEcho)*100);
47.
48. if((CalculaDistancia(TempoEcho)*100) < 10 ){ //se a distancia lida for menor do que 10 cm
49. flexaobaixo = true; //altera o valor da booleana
50. }
51.
52. if((CalculaDistancia(TempoEcho)*100) > 20 && (CalculaDistancia(TempoEcho)*100) < 30 ){ //se a distancia li
53. flexaoalto = true; //altera o valor da booleana
54. }
55.
56. if((flexaoalto == true) && (flexaobaixo == true)){ //faz a comparação das duas booleanas para ver se foi u
57. contador++;
58. display.clearDisplay(); //limpa o display
59. display.setTextSize(3); //define o tamanho da letra
60. display.setTextColor(1);
61. display.setCursor(0,20);
62. display.print(contador/2); // escreve no display quantas flexões
63. display.setTextSize(1);
64. display.setCursor(70,20);
65. display.print("Series: ");
66. display.setCursor(120,20);
67. display.print(series); //escreve no display quantas séries feitas
68. display.display();
69. flexaoalto = false;
70. flexaobaixo = false;
71. }
72.
73. if(contador == flexoes*2){ //se o contador ler 30(equivalente a 15 flexões),chama a função responsável pel
74. descanso();
75. }
76. }
77.
78. void DisparaPulsoUltrassonico(){
79. // Para fazer o HC-SR04 enviar um pulso ultrassonico, nos temos
80. // que enviar para o pino de trigger um sinal de nivel alto
81. // com pelo menos 10us de duraçao
82. digitalWrite(trig, HIGH);
83. delayMicroseconds(10);
84. digitalWrite(trig, LOW);
85. }
86.
87. // Função para calcular a distancia em metros
88. float CalculaDistancia(float tempo_us){
89. return((tempo_us*VelocidadeSom_mporus)/2);
90. }
91.
92. void descanso(){
93. //apita para iniciar o tempo de descanso
94. digitalWrite(buzzer,HIGH);
95. delay(500);
96. digitalWrite(buzzer,LOW);
97. delay(500);
98. digitalWrite(buzzer,HIGH);
99. delay(500);
100. digitalWrite(buzzer,LOW);
101. display.clearDisplay();
102. display.setTextSize(2);
103. display.setTextColor(1);
104. display.setCursor(0,32);
105. display.print("Descanso!");//escreve na tela o descanso
106. display.display();
107.
108.
109. delay(30000); // tempo de descanso
110.
111. digitalWrite(buzzer,HIGH); //apita o buzzer 5 vezes para indicar o fim do descanso
112. delay(300);
113. digitalWrite(buzzer,LOW);
114. delay(300);
115. digitalWrite(buzzer,HIGH);
116. delay(300);
117. digitalWrite(buzzer,LOW);
118. delay(300);
119. digitalWrite(buzzer,HIGH);
Controle sua privacidade AdOpt
120. delay(300);
Nosso site usa cookies
121. para melhorar a navegação. Política de Privacidade - Termos de uso - Opt-out
digitalWrite(buzzer,LOW);
122. delay(300);
123. digitalWrite(buzzer,HIGH);
124. delay(300);
125. digitalWrite(buzzer,LOW);
126. delay(300);
127. digitalWrite(buzzer,HIGH);
128. delay(300);
129. digitalWrite(buzzer,LOW);
130. series++; //adiciona 1 na quantidade de séries
131. contador = 0 ; // zera o contador de flexões
132. }

Nessa parte do código, é possível alterar a quantidade de flexões desejada:

1. int flexoes = 15; // aqui você escolhe quantas flexões quer fazer

Testes

No vídeo, utilizei a minha mão para simular a aproximação do corpo:

00:00 00:17

Mudei o tempo de descanso somente para ficar mais rápido do vídeo:


Controle sua privacidade AdOpt

Nosso site usa cookies para melhorar a navegação. Política de Privacidade - Termos de uso - Opt-out
00:00 00:30

Agora, fica o desafio: bater o meu recorde (4 flexões).

Brincadeiras à parte, agora é só aproveitar o ajudante e não perder mais a conta!

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.

Controle sua privacidade AdOpt

Nosso site usa cookies para melhorar a navegação. Política de Privacidade - Termos de uso - Opt-out
Eletrogate 10 de outubro de 2023

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica
em geral.

0 Comentários 
1 Entrar

G Iniciar a discussão...

FAZER LOGIN COM OU REGISTRE-SE NO DISQUS ?

Nome

 Compartilhar Mais votados Mais recentes Mais antigos

Seja o primeiro a comentar.

Inscreva-se Privacidade Política de Proteção de Dados

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

AUTOMAÇÃO RESIDENCIAL
Detecção de Movimento com Sensor PIR e LDR
Eletrogate14 de novembro de 2023

Se você está em busca de maneiras de reduzir o consumo de energia e, ao mesmo tempo, adicionar um toque de automação à
sua casa, este guia é para você. Vamos explorar como criar um detector de movimento que acende as luzes somente em…
condições de baixa luminosidade e detecão de movimentos no ambiiente, graças a um sensor PIR e um sensor de luz LDR.
AUTOMAÇÃO RESIDENCIAL
Controle de Acesso RFID via Celular
Eletrogate7 de novembro de 2023

Já imaginou ter o controle total do acesso a qualquer ambiente na palma da sua mão? Neste post, você vai descobrir como
transformar esse cenário em realidade, usando a combinação do Arduino e tecnologia RFID, além de conhecer uma plataforma…
que possibilita desenvolver um aplicativo de forma simples e rápida, o MIT App Inventor.

Controle sua privacidade AdOpt

Nosso site usa cookies para melhorar a navegação. Política de Privacidade - Termos de uso - Opt-out
PROJETOS
Robô que Evita Obstáculos com Arduino
Eletrogate31 de outubro de 2023

Você já pensou em fazer um daqueles robôs que andam sozinhos sem bater em nenhum lugar? Se sim, esse post é para você!

BLOG
Frequencímetro com Arduino
Eletrogate24 de outubro de 2023

Neste tutorial, vamos explicar o que é um frequencímetro, como ele funciona, fórmula para calcular Hertz (Hz) e demonstrar um
projeto prático de frequencímetro com Arduino.

Cadastre-se e fique por


dentro de novidades!

Nome *

Email *

Eu concordo em receber comunicações.


Ao informar meus dados, eu concordo com a Política de Privacidade.

Cadastrar

Nos acompanhe

  
Facebook Instagram Youtube

© ELETROGATE 2023 - Todos os direitos reservados. Termos de uso e Política de privacidade.

Controle sua privacidade AdOpt

Nosso site usa cookies para melhorar a navegação. Política de Privacidade - Termos de uso - Opt-out

Você também pode gostar