blog-eletrogate-logo-desktop blog-eletrogate-logo-mobile
  • Categorias
    • Voltar
    • INICIANTES
    • INTERMEDIÁRIOS
    • AVANÇADOS
    • divide
    • Automação Residencial
    • Componentes Eletrônicos
    • Impressão 3D
    • IoT
    • Modelagem 3D
    • Módulos Wifi
    • Por trás da tecnologia
    • Projetos
    • Raspberry Pi
    • Robótica
    • Sensores
    • Shields
    • Sistemas Operacionais
    • Tipos de Arduino
    • Tutoriais
  • Apostilas
  • Quem Somos
  • Seja um redator
  • Trabalhe Conosco
    • Categorias
      • Voltar
      • INICIANTES
      • INTERMEDIÁRIOS
      • AVANÇADOS
      • divide
      • Automação Residencial
      • Componentes Eletrônicos
      • Impressão 3D
      • IoT
      • Modelagem 3D
      • Módulos Wifi
      • Por trás da tecnologia
      • Projetos
      • Raspberry Pi
      • Robótica
      • Sensores
      • Shields
      • Sistemas Operacionais
      • Tipos de Arduino
      • Tutoriais
    • Apostilas
    • Quem Somos
    • Seja um redator
    • Trabalhe Conosco
Loja Eletrogate
voltar
  • Introdução
  • Requisitos
  • Materiais Necessários para o Projeto Pomodoro com Display LCD I2C
  • Diagrama
  • Programação
  • Resultado
  • Referências
  • Sobre o Autor
Automação Residencial

Pomodoro com Display LCD I2C

Eletrogate 6 de setembro de 2022Atualizado em: 21 mar 2023

Introdução

Quantas vezes você já começou os estudos ou aquela atividade que exige concentração e, em pouco tempo, se distraiu com o celular, aquele meme no feed das suas redes sociais ou, até mesmo, com aquela notificação do whatsapp!? Pensando nisso, traremos, neste post, a solução de seus problemas. No projeto de hoje, iremos desenvolver um dispositivo que trabalha com o método de estudos chamado pomodoro. O método Pomodoro é um método de gerenciamento de tempo que consiste na utilização de um cronômetro para dividir o trabalho/atividade em períodos de 25 minutos, separados por intervalos de 10 minutos. Em nosso dispositivo, iremos fazer a contagem do tempo da sua atividade de foco (25 minutos) e, após finalizar a primeira, uma nova, para o tempo do intervalo (10 minutos). Para isso, vamos utilizar o Arduino Nano, o Display LCD, um Buzzer e um Led.


Requisitos

Para realizar o projeto, é necessário que instalemos as seguintes bibliotecas: 

  • Biblioteca Wire;
  • Biblioteca LiquidCrystal I2C.

Materiais Necessários para o Projeto Pomodoro com Display LCD I2C

  • 1x Nano V3.0 + Cabo Usb para Arduino
  • 1x Display LCD 16×2 com I2C e Backlight Azul
  • 1x Buzzer Ativo 5v
  • 1x Led Difuso 5mm Verde
  • 1x Resistor 220R 1/4W (10 Unidades)
  • 2x Mini Protoboard 170 pontos
  • 1x Jumpers – Macho/Femea – 20 Unidades de 20cm
  • 1x Jumpers – Macho/Macho – 20 Unidades de 20cm
  • 1x Adaptador Bateria 9v para Arduino
  • 1x Bateria 9v Alcalina Philips

cta_cart


Diagrama

Abaixo, o diagrama do projeto

As conexões ficaram da seguinte forma

  • SDA do Display: pino A4
  • SCL do Display: pino A5
  • Positivo do Buzzer: Pino 4
  • Anodo do Led: pino 5

Nosso circuito ficará assim:

Blog-Eletrogate-Circuito

Circuito Dispositivo Pomodoro

Para deixar o nosso pomodoro mais carismático, é possível fazer uma impressão 3D para disponibilizar os componentes:

Blog-Eletrogate-Protótipo-3D

Protótipo impressão 3D – Dispositivo pomodoro

A impressão ficará dessa forma e você pode encontrar esse modelo clicando aqui:

Blog-Eletrogate-Impressão-3D

Impressão 3D – Dispositivo Pomodoro


Programação

O código para a programação se encontra disponível aqui:

#include <Wire.h> // Biblioteca Wire responsável por conter funções de comunicação entre dispositivos através do protocolo I2C.
#include <LiquidCrystal_I2C.h>//Biblioteca I2C
LiquidCrystal_I2C lcd(0x38,16,2);  // Criando um LCD de 16x2 no endereço 0x38

/*Definição de Pinos*/
#define led_Verde 5 // Pino do led
#define buzzer 4 // Pino do buzzer

/*Criando as variáveis*/
int pomodoro_estudo = 25; //Tempo de estudo
int pomodoro_descanso = 10; //Tempo de descanso
signed short minutos, segundos, tipos, periodo =0;//Variáveis para a contagem do tempo
char tela[16];//Definindo a variável para conter os caracteres de tempo
int tempo = 200;// Variável para definir a velocidade da música
int divisor = 0, duracaoNota = 0;


int musica[] = {
  // Super Mario Bros theme
  // site da partitura - https://musescore.com/user/2123/scores/2145
  // Koji Kondo
  //Existem dois valores por nota, o primeiro é a altura da nota e o segundo é a sua duração. Ex: 659,8
  
  659,8, 659,8, 0,8, 659,8, 0,8, 523,8, 659,8, 
  784,4, 0,4, 392,8, 0,4, 
  523,-4, 392,8, 0,4, 330,-4, 
  440,4, 494,4, 466,8, 440,4,
  392,-8, 659,-8, 784,-8, 880,4, 698,8, 784,8,
  0,8, 659,4,523,8, 587,8, 494,-4,
  523,-4, 392,8, 0,4, 330,-4, 
  440,4, 494,4, 466,8, 440,4,
  392,-8, 659,-8, 784,-8, 880,4, 698,8, 784,8,
  0,8, 659,4,523,8, 587,8, 494,-4,
};

int notas = sizeof(musica) / sizeof(musica[0]) / 2; // Fornecemos o número de byte, cada valor int é composto por 2 bytes (16 bits)
int notaInteira = (60000 * 4) / tempo;// Calcula o valor da nota.


void setup() {
 //Iniciamos o Display LCD
 lcd.init();
 lcd.backlight();
 //Declarando os pinos usados como Saída
 pinMode(led_Verde, OUTPUT);
 pinMode(buzzer, OUTPUT);

}

void loop() {
  //Print no Display o tempo percorrido
  lcd.setCursor(0,0);
  lcd.print("Tempo decorrido: ");
  lcd.setCursor(1,1);
  sprintf(tela, "%.2d min %.2d seg", minutos, segundos);
  lcd.print(tela);
  //Espera um segundo para adicionar +1 na variável segundos
  delay(1000);
  segundos++;

  //Se os segundos for igual a 60, seta a variável segundos para 0 e acrescenta +1 na variável mintuos
  if(segundos == 60){
    segundos =0;
    minutos++;
  }
  
  //Se os minutos for igual a 25 e o período for igual a 0
  if(minutos == pomodoro_estudo && periodo == 0){
    minutos = 0; //A variável minutos seta para 0
    periodo = 1; // A variável periodo recebe 1 para informar que estamos na contagem descanso
    digitalWrite(led_Verde, HIGH);//Liga o led verde

    delay(1000);

    //Toca a musica do mário
    for (int notaAtual = 0; notaAtual < notas * 2; notaAtual = notaAtual + 2) {

    // Calcula a duração de cada nota
    divisor = musica[notaAtual + 1];
    if (divisor > 0) {
      // Nota normal, lida sem nenhuma interferência
      duracaoNota = (notaInteira) / divisor;
    } else if (divisor < 0) {
      //Durações negativas representa notas pontilhadas. 
      duracaoNota = (notaInteira) / abs(divisor);
      duracaoNota *= 1.5; // Aumenta a duração da nota pela metade
    }

    // Cada nota é tocada apenas 90% do seu tempo, os outros 10% é para pausas
    tone(buzzer, musica[notaAtual], duracaoNota * 0.9);

    // Espera a duração específica da nota acabar para tocar a próxima
    delay(duracaoNota);
    noTone(buzzer);
    }

  //se minutos for igual ao tempo do intervalo de descanso e o período igual a 1 
  }else if(minutos == pomodoro_descanso && periodo == 1){
    minutos =0; //A variável minutos seta para 0
    periodo = 0;  //A variável periodo recebe 0 para informar que estamos na contagem descanso
    digitalWrite(led_Verde, LOW); //Desliga o led verde
    delay(1000);
  }
}

Na primeira parte do código, incluímos as bibliotecas, definimos a entrada do buzzer e do led e declaramos todas as variáveis.

Blog-Eletrogate-Programação-Parte1

Após definirmos as portas, iremos criar uma função do tipo inteiro para definir as notas musicais da música Theme Mario, que irá tocar sempre que terminar o tempo de estudos. Além disso, definimos como fazer as leituras dessas notas e sua duração e calcular seu valor.

Blog-Eletrogate-Programação-Parte2

No setup, iniciamos o LCD e configuramos o modo das portas como saída.

Blog-Eletrogate-Programação-Parte3

No void Loop, printamos o tempo percorrido a cada segundo.

Blog-Eletrogate-Programação-Parte4

Quando a variável segundos atinge o valor 60, acrescentamos 1 à variável minutos e setamos a variável segundos. 

Em nosso código, existem dois períodos. O período de estudo, que recebe o valor 0, e o período de descanso, que recebe o valor 1. Quando o tempo decorrido atinge o tempo de estudo e o período tem valor 0, setamos a variável de minutos e a variável período recebe o valor 1. Além disso, ligamos o led verde e chamamos a função dentro do for para tocar a música do Mário. Aqui, é possível ver o código da música completa e ver, com detalhes, como funciona o código.

Blog-Eletrogate-Programação-Parte5

A última parte é quanto o tempo for igual ao intervalo de descanso e o período igual a 1. As variáveis minutos e período recebem o valor 0 e, após, desligamos o LED verde.

Blog-Eletrogate-Programação-Parte6


Resultado

Tendo feito todos os passos, basta carregar o código para o Arduino e, imediatamente, terá o resultado no Display LCD, como mostrado no vídeo abaixo:

https://blog.eletrogate.com/wp-content/uploads/2022/08/VivaCut_video_1661694762495-2.mp4

 

 


Referências

  • https://blog.eletrogate.com/guia-completo-do-display-lcd-arduino/
  • https://blog.eletrogate.com/guia-completo-do-arduino-nano-driver-ch340-e-bootloader/
  • https://www.instructables.com/The-Pomodoro-Tomato/

Tenha a Metodologia Eletrogate na sua Escola! Conheça nosso Programa de Robótica Educacional.


Sobre o Autor


Lívia Gonçalves
Livia-Goncalves-01
@liviagoncalves_dev

Estudante de Engenharia da Computação e Instrutora de tecnologia e programação.


Eletrogate

6 de setembro de 2022 Atualizado em: 21 mar 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.

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

Sensores

Guia de Uso do Sensor de Chama com Arduino

Eletrogate1 de junho de 2023

Aprenda a usar o Sensor Infravermelho de Chama e Fogo com a placa Arduino Leonardo R3 para dar mais segurança a seus projetos.

Sensores

Guia de Uso do Sensor de Chama com Arduino

Eletrogate1 de junho de 2023

Aprenda a usar o Sensor Infravermelho de Chama e Fogo com a placa Arduino Leonardo R3 para dar mais segurança a seus projetos.

Automação Residencial

Controle de Luminosidade com LDR sem Arduino

Eletrogate25 de maio de 2023

Podemos usar um sensor LDR junto com uma placa Arduino para interpretar a variação luminosa. Mas, também podemos usar poucos componentes eletrônicos para fazer isso, sem programação.

Automação Residencial

Controle de Luminosidade com LDR sem Arduino

Eletrogate25 de maio de 2023

Podemos usar um sensor LDR junto com uma placa Arduino para interpretar a variação luminosa. Mas, também podemos usar poucos componentes eletrônicos para fazer isso, sem programação.

Módulos Wifi

Deauther com NodeMCU ESP-12E

Eletrogate18 de maio de 2023 Atualizado em: 29 maio 2023

No post de hoje, iremos aprender a fazer um deauther com o esp8266. Venha conferir!

Módulos Wifi

Deauther com NodeMCU ESP-12E

Eletrogate18 de maio de 2023 Atualizado em: 29 maio 2023

No post de hoje, iremos aprender a fazer um deauther com o esp8266. Venha conferir!

Componentes Eletronicos

Conhecendo a Pastilha Piezoelétrica

Eletrogate11 de maio de 2023

Como converter energia mecânica em energia elétrica e ainda usar o Arduino para gerenciar isso tudo.

Componentes Eletronicos

Conhecendo a Pastilha Piezoelétrica

Eletrogate11 de maio de 2023

Como converter energia mecânica em energia elétrica e ainda usar o Arduino para gerenciar isso tudo.

Eletrogate Robô

Cadastre-se e fique por
dentro de novidades!

blog-eletrogate-logo-footer

Rua Rio de Janeiro, 441 - Sala 1301
Centro - Belo Horizonte/MG
CEP 30160-041
*Não temos atendimento físico

ANWAR SLEIMAN HACHOUCHE - ME
CNPJ: 18.917.521/0001-73

Atendimento

(31) 3142-3800

contato@eletrogate.com


Seg a Sex - das 8h às 17h

Institucional

  • Apostilas
  • Quem Somos
  • Privacidade
  • Seja um Redator
  • Trabalhe Conosco

Nos acompanhe

Facebook Instagram Youtube

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