Criar um sistema de lembretes com alarme em Python é um dos projetos mais gratificantes para quem está dando os primeiros passos na programação. Além de ser uma ferramenta extremamente útil para organizar a rotina, este projeto permite que você entenda fundamentos essenciais como manipulação de tempo, loops de controle e bibliotecas externas. Imagine nunca mais esquecer de beber água ou de uma reunião importante porque você mesmo construiu a solução tecnológica para esse problema. Neste guia, vamos explorar o passo a passo para desenvolver seu próprio despertador inteligente utilizando Python.
Por que aprender como criar um sistema de lembretes com alarme em Python?
Desenvolver pequenos utilitários é a melhor forma de fixar o conhecimento teórico. Quando você decide construir um sistema de lembretes, você deixa de apenas ler sobre sintaxe e passa a aplicar a lógica de programação com Python na prática. Este projeto aborda conceitos que são pilares no desenvolvimento de software, como a espera por eventos específicos e a interação com o sistema operacional para emitir sons ou notificações.
Além disso, o Python é a linguagem ideal para automações rápidas. Com poucas linhas de código, conseguimos integrar funcionalidades que em outras linguagens exigiriam centenas de linhas. Ao dominar este script, você ganha confiança para avançar em tópicos mais complexos, como o desenvolvimento de interfaces gráficas ou a integração com APIs.
Configurando o ambiente de desenvolvimento
Antes de começarmos a digitar o código, precisamos garantir que o seu computador tenha tudo o que é necessário. O primeiro passo, naturalmente, é ter o interpretador instalado. Se você ainda não tem, confira o guia de como instalar Python para preparar sua máquina corretamente.
Para este projeto, utilizaremos algumas bibliotecas nativas e uma externa para reproduzir o som do alarme. As bibliotecas nativas são time e datetime. Para o áudio, a biblioteca winsound (exclusiva para Windows) ou a playsound (multiplataforma) são as escolhas mais comuns. Recomendamos o uso do VS Code como editor, e você pode potencializar seu trabalho com as melhores extensões do VS Code Python.
Instalando dependências externas
Se você optar pela biblioteca playsound para que seu alarme funcione em Linux ou macOS, abra seu terminal e execute o comando abaixo:
pip install playsound==1.2.2Dica de Especialista: A versão 1.2.2 da playsound é mais estável em diversos sistemas operacionais, evitando erros comuns de compatibilidade com caminhos de arquivos.
Como criar um sistema de lembretes com alarme em Python: Passo 1 – Capturando a entrada do usuário
O primeiro passo lógico do nosso roteiro é perguntar ao usuário em que momento o alarme deve tocar. Precisamos coletar a hora e o minuto de forma precisa. Para isso, usaremos a função input do Python. É fundamental validar se o usuário digitou números válidos para evitar que o programa trave.
hora_alarme = input("Digite a hora do alarme (HH): ")
minuto_alarme = input("Digite o minuto do alarme (MM): ")
mensagem = input("Qual o nome deste lembrete? ")
print(f"Alarme configurado para {hora_alarme}:{minuto_alarme}. Lembrete: {mensagem}")Nesta etapa, estamos apenas guardando as informações em variáveis em Python do tipo string. Mais adiante, precisaremos converter esses valores para inteiros para realizarmos as comparações de tempo necessárias.
Passo 2 – Gerenciando o Tempo com o Módulo Datetime
Para que o sistema saiba quando tocar, ele precisa consultar o relógio do sistema constantemente. O Python possui um módulo poderoso chamado datetime para lidar com datas e horas no Python. O segredo aqui é criar um loop que verifica a hora atual e compara com a hora definida pelo usuário.
Utilizaremos o método datetime.now() para capturar o instante exato. Veja como a lógica de comparação funciona dentro do código:
import datetime
import time
while True:
agora = datetime.datetime.now()
if agora.hour == int(hora_alarme) and agora.minute == int(minuto_alarme):
print("BEEP! BEEP! HORA DO LEMBRETE!")
break
time.sleep(10) # Verifica a cada 10 segundos para economizar processamentoNote que usamos time.sleep(10). Essa é uma prática recomendada para evitar que seu script consuma 100% da CPU ao rodar uma verificação milhares de vezes por segundo desnecessariamente. É uma forma simples de otimização.
Passo 3 – Adicionando o Alarme Sonoro
Um sistema de lembretes visual é bom, mas um alarme sonoro é muito mais eficiente. Se você estiver no Windows, pode usar a função interna do sistema para emitir um “bip” de frequência específica, mas o ideal é reproduzir um arquivo MP3 ou WAV agradável.
Aqui, integraremos a biblioteca que instalamos anteriormente. Certifique-se de ter um arquivo de áudio chamado “alarme.mp3” na mesma pasta do seu script para evitar o erro de FileNotFoundError no Python.
from playsound import playsound
# Dentro da condição do alarme:
print(f"ATENÇÃO: {mensagem}")
playsound('alarme.mp3')O áudio continuará tocando até o arquivo terminar. Se você deseja que o som se repita, precisará envolver a chamada da função em um novo loop, mas para um sistema simples de lembretes, uma execução costuma ser suficiente.
Passo 4 – Tratamento de Erros e Validação
Um bom programador sempre prevê o que pode dar errado. E se o usuário digitar “abc” em vez de uma hora? Ou se digitar “25” para a hora? Para tornar seu sistema de lembretes profissional, devemos usar blocos de controle para capturar falhas. O uso de try except em Python é obrigatório aqui.
try:
hora_alarme = int(input("Hora (0-23): "))
minuto_alarme = int(input("Minuto (0-59): "))
if not (0 <= hora_alarme <= 23 and 0 <= minuto_alarme <= 59):
raise ValueError("Hora ou minuto inválido!")
except ValueError as e:
print(f"Erro na configuração: {e}")
exit()Essa validação garante que o programa não tente processar dados impossíveis, o que causaria um erro durante a execução do loop principal.
Melhorando a experiência: Listas de Lembretes
Até agora, nosso sistema aceita apenas um alarme por vez. Mas e se quisermos vários lembretes ao longo do dia? Podemos evoluir o código utilizando listas em Python ou até mesmo dicionários no Python para armazenar múltiplos horários e suas respectivas descrições.
Dessa forma, o loop while percorreria a lista de despertadores a cada ciclo, verificando se algum deles atingiu o horário programado. Uma vez disparado, o lembrete pode ser removido da lista para não tocar novamente no próximo minuto.
Código Completo do Projeto
Abaixo, você encontra o código unificado que integra a captura de dados, validação, loop de verificação de tempo e o alerta sonoro. Este script é funcional e pode ser estendido conforme sua necessidade.
import datetime
import time
from playsound import playsound
import sys
def configurar_alarme():
print("--- SISTEMA DE LEMBRETES PYTHON ---")
try:
h = int(input("Digite a HORA desejada (0-23): "))
m = int(input("Digite o MINUTO desejado (0-59): "))
msg = input("Digite a mensagem do lembrete: ")
if not (0 <= h <= 23 and 0 <= m <= 59):
print("Horário inválido! Use números entre 0-23 para horas e 0-59 para minutos.")
return None
return {"hora": h, "minuto": m, "mensagem": msg}
except ValueError:
print("Entrada inválida! Digite apenas números para o horário.")
return None
def iniciar_sistema():
alarme = configurar_alarme()
if not alarme:
return
print(f"\nAlarme ativado para as {alarme['hora']:02d}:{alarme['minuto']:02d}.")
print("O programa continuará rodando em segundo plano...")
while True:
agora = datetime.datetime.now()
if agora.hour == alarme['hora'] and agora.minute == alarme['minuto']:
print(f"\n[ALERTA EMITIDO]: {alarme['mensagem']}")
try:
# Certifique-se de ter um arquivo 'alarme.mp3' no mesmo diretório
playsound('alarme.mp3')
except Exception as e:
print(f"Não foi possível tocar o som: {e}")
print("\a") # Emite um sinal sonoro padrão do sistema (beep)
print("Lembrete concluído. Encerrando programa.")
break
# Dorme por 30 segundos para não sobrecarregar o processador
time.sleep(30)
if __name__ == "__main__":
iniciar_sistema()Expandindo seu sistema de lembretes
Agora que você já sabe como criar um sistema de lembretes com alarme em Python, existem diversos caminhos para torná-lo ainda mais poderoso. Você pode, por exemplo, criar uma interface visual amigável utilizando técnicas de interfaces gráficas com Tkinter. Isso permitiria que usuários que não entendem de tecnologia pudessem usar sua ferramenta.
Outra ideia interessante é salvar os lembretes em um arquivo de texto ou banco de dados. Assim, mesmo que você feche o script e o abra novamente, os alarmes configurados não seriam perdidos. Para aprender sobre isso, veja como integrar Python com SQLite.
Para aprender mais detalhes técnicos sobre automação e manipulação de arquivos de áudio, consulte a documentação oficial da biblioteca Datetime e as referências da comunidade no PyPI. Para entender a estrutura de tempo mais a fundo no nível do sistema, o Cron do Linux é uma excelente referência teórica sobre agendamento de tarefas.
Perguntas Frequentes
O script precisa ficar aberto para o alarme tocar?
Sim, como é um script de terminal rodando em um loop while, o processo precisa estar ativo na memória para monitorar o relógio.
Posso usar o sistema para tocar mais de um alarme?
Nesta versão simplificada não, mas você pode modificar o código para usar uma lista de dicionários e iterar sobre ela dentro do loop principal.
O som não tocou, o que pode ser?
Geralmente é um problema de caminho do arquivo. Verifique se o arquivo de áudio está na mesma pasta que o arquivo .py e se o nome está escrito exatamente igual no código.
Como faço para o alarme tocar “para sempre” até eu parar?
Você deve colocar a função playsound dentro de um loop while True, mas precisará implementar uma forma de interrompê-lo, como uma entrada de teclado.
É possível usar esse alarme no celular?
Sim, você pode rodar scripts Python no Android e iOS usando aplicativos como o Pydroid ou Pythonista, mas a biblioteca playsound pode precisar ser substituída por APIs nativas desses apps.
Como converter este script em um programa executável?
Você pode usar bibliotecas como o PyInstaller para transformar seu código .py em um .exe para Windows ou .app para Mac.
O comando time.sleep(30) não vai fazer o alarme atrasar?
Como verificamos apenas hora e minuto, 30 segundos é um intervalo seguro. O alarme tocará dentro do minuto correto. Se você precisasse de precisão de segundos, o sleep deveria ser de 1 segundo.
Existe uma forma de silenciar o alarme via código?
Para controlar o volume ou parar o áudio antes do fim do arquivo, bibliotecas mais robustas como pygame.mixer são recomendadas no lugar da playsound.
Aprender a automatizar sua própria rotina é o primeiro passo para se tornar um desenvolvedor de destaque. Continue praticando, modificando esse código e testando novas funcionalidades para aprimorar suas habilidades em Python!







