Você está na página 1de 55

CENTRO TECNOLÓGICO DE MECATRÔNICA SENAI

CURSO TÉCNICO EM AUTOMAÇÃO INDUSTRIAL


ESTÁGIO ESCOLAR

ALAN NUNES BONATTO


EDELVAN CASAGRANDA
FABIANO PEREIRA CALDEIRA
JÉSSICA DOS SANTOS DUTRA
KELIN VARGAS DA SILVA
MATEUS VENTURIN DE SOUZA

PROJETO DE ESTÁGIO ESCOLAR

DISPENSER MED

CAXIAS DO SUL
26 DE ABRIL DE 2011
ALAN NUNES BONATTO
EDELVAN CASAGRANDA
FABIANO PEREIRA CALDEIRA
JÉSSICA DOS SANTOS DUTRA
KELIN VARGAS DA SILVA
MATEUS VENTURIN DE SOUZA

RELATÓRIO DE ATIVIDADES

Trabalho de conclusão da disciplina de


Estágio Escolar apresentado ao Curso
Técnico em Automação Industrial do Centro
Tecnológico de Mecatrônica, como requisito
para aprovação.

Orientador: Prof. Léo Spagnolo

CAXIAS DO SUL
26 DE ABRIL DE 2011
ALAN NUNES BONATTO
EDELVAN CASAGRANDA
FABIANO PEREIRA CALDEIRA
JÉSSICA DOS SANTOS DUTRA
KELIN VARGAS DA SILVA
MATEUS VENTURIN DE SOUZA

RELATÓRIO DE ATIVIDADES

Trabalho de conclusão da disciplina de


Estágio Escolar apresentado ao Curso
Técnico em Automação Industrial do Centro
Tecnológico de Mecatrônica, como requisito
para aprovação.

APROVADO EM: ___________/___________/___________

_______________________________________________________
PROF. LÉO SPAGNOLO
RESUMO

Pesquisas relacionadas a saúde demonstram que o uso de múltiplos medicamentos é uma


condição freqüente entre os idosos e deficientes que, apesar de necessária, na maioria das
vezes, predispõe a riscos em relação aos efeitos adversos e a interação medicamentosa. Dados
de adesão aos remédios revelam dependência na administração, automedicação, esquecimento
e conhecimento deficiente. Por tais fatores considera-se necessário o acompanhamento
sistemático dos idosos que utilizam múltiplos medicamentos, com incentivo a medidas não-
farmacêuticas como auxílio na correta ingestão de fármacos. Este projeto se propõe a auxiliar
não apenas idosos como também outras pessoas que possam ter dificuldades com o
cumprimento de horários e que não dispõem de um acompanhamento constante no seu dia a
dia.

Palavras-chaves: Saúde. Automedicação. Medicamentos.


SUMÁRIO

INTRODUÇÃO ......................................................................................................................... 5
1 DESCRIÇÃO DO PROJETO................................................................................................. 6
1.1 Objetivo ............................................................................................................................ 6
1.2 Justificativa ....................................................................................................................... 7
1.3 Cronograma ...................................................................................................................... 7
2 FUNDAMENTAÇÃO TEÓRICA ......................................................................................... 8
2.1 Microcontrolador .............................................................................................................. 8
2.2 Motor de passo ................................................................................................................. 8
2.3 Descritivo do funcionamento do sistema.......................................................................... 8
2.4 Diagrama eletroeletrônico ................................................................................................ 9
2.5 Fluxograma ....................................................................................................................... 9
2.6 Lista de componentes ....................................................................................................... 9
2.7 Orçamento ...................................................................................................................... 10
2.8 Lista de alocação ............................................................................................................ 10
2.9 Programação Microcontrolador ...................................................................................... 11
2.10 Desenhos mecânicos ..................................................................................................... 11
3 MONTAGEM DO PROJETO .............................................................................................. 12
3.1 Experiências adquiridas .................................................................................................. 13
3.2 Dificuldades encontradas ................................................................................................ 13
3.3 Relacionamento entre os colegas .................................................................................... 14
CONCLUSÃO ......................................................................................................................... 15
REFERÊNCIAS BIBLIOGRÁFICAS .................................................................................... 16
ANEXO A – CRONOGRAMA .............................................................................................. 17
ANEXO B – GUIA DO USUÁRIO ........................................................................................ 19
ANEXO C – DIAGRAMA ELETROELETRÔNICO ............................................................ 23
ANEXO D – FLUXOGRAMA ............................................................................................... 25
ANEXO E – PROGRAMAÇÃO MICROCONTROLADOR ................................................ 27
ANEXO F – DESENHOS MECÂNICOS .............................................................................. 40
ANEXO G – MONTAGEM .................................................................................................... 44
5

INTRODUÇÃO

Como projeto final do Curso Técnico em Controle e Automação Industrial estudou-se

o desenvolvimento de um dispensador automático de comprimidos e sua utilização junto a

pessoas com dificuldades no controle de horários de ingestão de remédios.

O projeto consistirá de uma estrutura em madeira, uma roleta de nylon com divisórias,

uma tampa em acrílico, um motor de passo com sistema de redução, e placas eletrônicas para

o controle do sistema (CUSCOPIC e placa para controle do motor de passo).

Maiores detalhes descritivos sobre o projeto, seu objetivo e suas justificativas, e os

materiais utilizados serão retratados nos capítulos um e dois que serão descritos

posteriormente. No capitulo três será exposta a montagem do projeto, serão citadas

experiências adquiridas, as dificuldades encontradas e os relacionamento com os colegas. Este

projeto será construído nas dependências do SENAI de Caxias do Sul, no período de maio a

julho de 2011.
6

CAPÌTULO 1

DESCRIÇÃO

1 DESCRIÇÃO DO PROJETO

O projeto consiste de um dispensador automático de medicamentos sólidos

(comprimidos). Possui uma estrutura de madeira, e uma roleta de nylon acoplada a essa

estrutura. A roleta divide-se em compartimentos, onde são guardados os comprimidos. Cada

compartimento reserva uma medicação, que deverá ser tomada em determinado horário. Na

parte superior da roleta há uma tampa de acrílico, com uma abertura para o compartimento

central, onde deverão ser retirados os medicamentos. Na parte inferior fica acoplado um

motor de passo, com um sistema de redução por engrenagem, para fazer a rotação com uma

maior resolução do motor.

Na parte frontal da estrutura de madeira, encontra-se o painel para programação dos

horários. O painel conta com um visor LCD, um teclado numérico com botão de start, quatro

botões de funções, um teclado numérico, um sinalizador e um botão de reset. Toda a

programação poderá ser feita de maneira fácil e intuitiva pelo usuário, através das

informações disponíveis no visor LCD.

Para o controle do projeto será utilizada a placa microcontrolada CUSCOPIC,

juntamente com uma placa para controle de motor de passo.

1.1 Objetivo

Criar um dispensador que auxilie as pessoas na programação e controle dos horários

de tomar remédios, buscando evitar o esquecimento e a ingestão indevida.


7

1.2 Justificativa

O projeto foi idealizado para auxiliar idosos, deficientes visuais ou mentais, assim

como pacientes com complicados regimes de medicação diária, visto que pessoas nessas

condições possuem grandes dificuldades com a memorização e cumprimentos das regras de

ingestão dos medicamentos (quantidades e horários).

1.3 Cronograma

O cronograma encontra-se no anexo A.


8

CAPÍTULO 2

FUNDAMENTAÇÃO

2 FUNDAMENTAÇÃO TEÓRICA

As áreas básicas do projeto planejado pelo grupo são fundamentados nas áreas de

microcontrolador e motor de passo.

2.1 Microcontrolador

O microcontrolador é um computador-num-chip, contendo um processador, memória e

periféricos de entrada/saída. É um microprocessador que pode ser programado para funções

específicas, que no caso do projeto estipulado são baseados na movimentação do

compartimento dos comprimidos. O microcontrolador é embarcado no interior de algum outro

dispositivo que possam controlar as funções ou ações do produto.

2.2 Motor de passo

Um motor de passo é um tipo de motor elétrico usado quando algo tem que ser

posicionado muito precisamente ou rotacionado em um ângulo exato, como no caso do nosso

projeto, na questão do compartimento de comprimidos. Neste tipo de motor a rotação é

controlada por uma série de campos eletromagnéticos que são ativados e desativados

eletronicamente, possuindo um número fixo de pólos magnéticos que determinam o número

de passos por revolução.

2.3 Descritivo do funcionamento do sistema


9

O Dispenser Med consiste de um disco contendo 24 compartimentos em forma de

fatia, onde são guardados os comprimidos. Cada compartimento corresponde a um

determinado horário, que é programado na memória pelo usuário. Assim, em cada horário

programado o motor de passo é acionado, girando o disco e posicionando na posição central

do compartimento correspondente aquele determinado horário. Somente a dose designada

para aquele horário fica acessível ao usuário, através de uma abertura na tampa.

Para avisar o usuário são disparados alarmes sonoros e luminosos, no painel do

Dispenser Med, assim que a medicação é tomada, o usuário aperta o botão de reset no painel,

apagando o horário da memória e silenciando os alarmes. O dispensador pode ser carregado

com medicamentos para 1-2 semanas dependendo do numero de doses diárias, ou do número

de usuários.

O guia do usuário do Dispenser Med encontra-se no anexo B.

2.4 Diagrama eletroeletrônico

A placa para motor de passo unipolar servirá para proporcionar a estação CUSCOPIC

uma interface de controle para motores de passo unipolares (5 ou 6 fios), usando 4 saídas a

transistor.

Segue no anexo C a imagem correspondente a placa de controle de motor de passo

unipolar e a lista de componentes desta placa.

2.5 Fluxograma

Segue em anexo D o fluxograma do funcionamento do Dispenser Med.

2.6 Lista de componentes


10

A seguir encontra-se uma serie de componentes necessários para a realização do

projeto.

• Estrutura (madeira)

• Roleta (nylon)

• Tampa (acrílico)

• Cuscopic

• Motor de passo

• Placa para controle de motor de passo

• Correia

• Engrenagens

2.7 Orçamento

O orçamento definido pelo grupo se baseia nos componentes necessários para a

construção do Dispenser Med.

Componentes Valor
Estrutura R$ 40,00
Roleta + usinagem R$ 160,00
Tampa R$ 110,00
Cuscopic --
Motor de passo Doado
Placa de controle de motor de passo R$ 25,00
Correia + Engrenagem R$ 12,00
Gastos gerais (componentes, cabos, cola..) R$ 13,00
Transformador R$ 19,00
Sinal Luminoso e sonoro R$ 14,00
Total R$ 393,00

2.8 Lista de alocação


11

Segue abaixo alista de alocação utilizada no pic 16F628A.

Entradas Saídas
Teclado Matricial Port B Sinal Luminoso E0
Botão Reset D6 Sinal Sonoro E0
Botão F1 D0 Bobina 1 C1
Botão F2 D1 Bobina 2 C2
Botão F3 D2 Bobina 3 C3
Botão F4 D3 Bobina 4 C4

2.9 Programação do microcontrolador

A programação do microcontrolador segue no anexo E.

2.10 Desenhos mecânicos

Segue em anexo F uma ilustração da estrutura mecânica do Dispenser Med.


12

CAPÍTULO 3

MONTAGEM

3 MONTAGEM DO PROJETO

Esse capítulo tratará sobre o processo de montagem do Dispenser Med. Nele serão

apresentadas as experiências adquiridas pelo grupo, as dificuldades encontradas e o

relacionamento do grupo durante o período de convivência para a realização do projeto.

Antes de ser iniciada a montagem, o grupo preocupou-se em providenciar alguns dos

componentes que seriam necessários para a composição do projeto. Primeiramente, foi focada

a usinagem da roleta em nylon. E, após ser achado o material bruto em um estabelecimento

especializado, o professor do SENAI Diego Guerra realizou no laboratório a usinagem da

roleta.

Depois, o próximo objetivo foi achar um motor de passo que conseguisse rotacionar a

roleta, de modo que não perdesse pulsos. Então foram pesquisados diversos modelos, até que

o professor Daniel proporcionou um motor que se encaixava exatamente nas especificações

necessitadas.

Com o motor de passo em mãos, foram realizadas pesquisas para descobrir o modo

que seria conectado os cabos do mesmo. E também foi descoberto que o motor necessitaria de

uma fonte de 24V, mas teria um custo relativamente elevado se tratando de uma fonte. Então

foi decidido que parte do grupo montaria a fonte, tanto para diminuir os gastos, mas também

para novos conhecimentos em eletrônica.

Paralelamente, o programa em linguagem C era realizado por outros componentes do

grupo.
13

Após ter o programa concluído, o motor em condições de ser ligado, a roleta e polias

montadas, foram realizados diversos testes. E com tudo concluído, restava apenas colocar

cada parte em seu devido lugar na estrutura.

As imagens da montagem do projeto encontram-se no anexo G.

3.1 Experiências adquiridas

As experiências adquiridas foram diversas. Primeiro, foram revistos conceitos de

eletrônica, necessários para a montagem da fonte. Também foram utilizados conceitos de

programação, revistos pela programação em linguagem C. Outra experiência importante foi

de procurar diversas alternativas para uma mesma aplicação, pois a idéia inicial dos

componentes utilizados era de um custo elevado, mas após muitas pesquisas e indicações de

profissionais, nosso custo total diminuiu pela metade.

Porém, o conceito mais importante que foi adquirido durante a construção do projeto é

que um bom planejamento determina todo o andamento do projeto.

3.2 Dificuldades encontradas

Dentre as dificuldades encontradas a maior foi reunir o grupo todo em horários

alternativos, pois quase todos os componentes já trabalham e fazem faculdade. Dois colegas

trabalham à noite, isso dificultou muito, mas quando não havia como reunir todos, eram

utilizados outros recursos com e-mail, celular, para comunicação entre o grupo.

Outra dificuldade foi em relação à tampa de acrílico, pois apesar da facilidade em

contatar empresas que trabalham com este material, seu custo era elevado, o que aumentou

muito o custo do projeto.


14

3.3 Relacionamento entre os colegas

O grupo foi formado por afinidade, não havendo problemas entre os integrantes. O

relacionamento entre todos foi agradável e os problemas que surgiam eram resolvidos em

reuniões. Sem haver rumores e problemas mal explicados e mal resolvidos.


15

CONCLUSÃO

Ao chegarmos ao fim desse projeto podemos concluir que não é fácil construir algo

novo e relevante, mas com o empenho e cooperação de todos do grupo qualquer dificuldade

pode ser superada. A organização é indispensável a qualquer atividade realizada e faz a

diferença no resultado final do projeto.

Após quase cinco meses de trabalho torna-se gratificante ver nosso protótipo

finalmente pronto, saber que apesar de tudo que se passou nesse tempo valeu a pena persistir e

ir até o fim, a final a conclusão desse projeto significa também a conclusão do nosso curso

técnico.

Empenhar-se na realização do Dispenser Med nos ensinou muito a respeito de

convivência e trabalho em grupo, e do como essa convivência pode ser melhor quando se

respeita a opinião dos outros e relevam-se algumas discordâncias.

.
16

REFERÊNCIAS BIBLIOGRÁFICAS

WIKIPÉDIA. Microcontrolador. Disponível em:


http://pt.wikipedia.org/wiki/Microcontrolador. Acessado em: 23/04/2011

WIKIPÉDIA. Motor de passo. Disponível em: http://pt.wikipedia.org/wiki/Motor_de_passo.


Acessado em: 23/04/2011
ANEXO A – CRONOGRAMA
ANEXO B – GUIA DO USUÁRIO
Dispenser Med.__________ Guia do usuário

1) Conhecendo o produto 2) Dimensões Gerais

Vista Frontal

Vista Lateral

3) Conhecendo o painel de controle

4) Como utilizar o Dispenser Med.

4.1 Ajustar o horário


1. Pressione a tecla F1 para ajustar o horário.
2. Pressione as teclas correspondentes a hora atual.
3. Pressione a tecla Ok para confirmar. Para apagar a hora digitada, pressione Del.
4. Pressione as teclas correspondentes ao minuto atual.
5. Pressione a tecla Ok para confirmar. Para apagar o minuto digitado, pressione Del.
OBS: Sempre que o Dispenser Med for ligado, será solicitada a redefinição do horário. O
horário será exibido na tela de espera do Dispenser Med.

4.2 Programar Alarme


1. Abra a tampa e coloque a medicação no compartimento escolhido.
2. Feche a tampa.
3. Pressione a tecla F2 para programar um alarme.
4. Digite o número do compartimento escolhido.
5. Pressione a tecla Ok para confirmar. Para apagar o compartimento digitado, pressione
Del.
6. Pressione as teclas correspondentes a hora do alarme.
7. Pressione a tecla Ok para confirmar. Para apagar a hora digitada, pressione Del.
8. Pressione as teclas correspondentes ao minuto do alarme.
9. Pressione a tecla Ok para confirmar. Para apagar o minuto digitado, pressione Del.
10. Será emitido um sinal sonoro, e o horário do alarme será exibido no display.

4.3 Visualizar Memória


1. Pressione a tecla F3 para visualizar os alarmes gravados na memória.
2. Os alarmes serão exibidos em ordem crescente correspondente ao número do
compartimento.

OBS: Caso nenhum alarme esteja gravado, a mensagem “Nenhum alarme gravado!” será
exibida no display.

4.4 Apagar Memória


1. Pressione a tecla F4 para apagar a memória de um compartimento. (Para apagar de mais
compartimentos, ver Master Reset).
2. Pressione as teclas correspondentes ao compartimento.
3. Pressione a tecla Ok para confirmar. Para apagar o compartimento digitado, pressione
Del.
4. Será emitido um sinal sonoro e a mensagem “Alarme apagado!” será exibida no diysplay.

OBS: Caso o Dispenser Med seja desligado, o alarme não será apagado e continuará ativo na
próxima vez que for ligado. Para o alarme ser desativado, este deverá ser apagado da
memória.

4.5 Master Reset


1. Pressione a tecla R por cinco segundos para apagar todos os alarmes gravados na
memória.
2. Será exibida no display a mensagem “Apagar tudo? 1-Sim / 2-Não”.
3. Para apagar todos os alarmes da memória, pressione a tecla 1. Para voltar, a tela de
espera, pressione 2.
4. Se a tecla 1 for pressionada,será emitido um sinal sonoro e a mensagem “Todos os
alarmes foram apagados!” será exibida no display.
4.6 Alarme
1. Quando o horário do alarme for atingido, retire seu medicamento pela abertura na tampa.
2. Pressione a tecla R para interromper o alarme.

________________________________
ANEXO C – DIAGRAMA ELETROELETRÔNICO
ANEXO D – FLUXOGRAMA
ANEXO E – PROGRAMAÇÃO MICROCONTROLADOR
#include <16f877.h>
#device ADC=10
#use delay (clock=20000000)
#include <cuscostdio.h>
#fuses HS, NOWDT, NOPROTECT, NOBROWNOUT, NOLVP, PUT

int cp = 0;
int HORA,MINUTO,SEGUNDO,BOX,IBOX,REBOX,CAS,EBOX;
int
A,B,HR1,MIN1,HR2,MIN2,HR3,MIN3,HR4,MIN4,HR5,MIN5,HR6,MIN6,HR7,MIN7,HR8
,MIN8,HR9,MIN9,HR10,MIN10,HR11,MIN11,HR12,MIN12;
int
HR13,MIN13,HR14,MIN14,HR15,MIN15,HR16,MIN16,HR17,MIN17,HR18,MIN18,HR19,
MIN19,HR20,MIN20,HR21,MIN21,HR22,MIN22,HR23,MIN23,HR24,MIN24;
int COUNT,H1,M1,C,R,DIR;

#int_timer0
void relogio()
{
cp ++;
if (cp == 76) // Quando a contagem de pulsos chegar a 76, zera conta_pulso. O tempo será de
aprox. 1seg(76,29 pulsos).
{
SEGUNDO ++;
cp = 0;
}
if (SEGUNDO > 59)
{
SEGUNDO = 0;
cp = 0;
MINUTO ++;
}
if (MINUTO > 59)
{
MINUTO = 0;
cp = 0;
HORA ++;
}
if (HORA > 23) HORA = 0;
if(HORA == HR1 && MINUTO == MIN1 && SEGUNDO==0) BOX=1;
if(HORA == HR2 && MINUTO == MIN2 && SEGUNDO==0) BOX=2;
if(HORA == HR3 && MINUTO == MIN3 && SEGUNDO==0) BOX=3;
if(HORA == HR4 && MINUTO == MIN4 && SEGUNDO==0) BOX=4;
if(HORA == HR5 && MINUTO == MIN5 && SEGUNDO==0) BOX=5;
if(HORA == HR6 && MINUTO == MIN6 && SEGUNDO==0) BOX=6;
if(HORA == HR7 && MINUTO == MIN7 && SEGUNDO==0) BOX=7;
if(HORA == HR8 && MINUTO == MIN8 && SEGUNDO==0) BOX=8;
if(HORA == HR9 && MINUTO == MIN9 && SEGUNDO==0) BOX=9;
if(HORA == HR10 && MINUTO == MIN10 && SEGUNDO==0) BOX=10;
if(HORA == HR11 && MINUTO == MIN11 && SEGUNDO==0) BOX=11;
if(HORA == HR12 && MINUTO == MIN12 && SEGUNDO==0) BOX=12;
if(HORA == HR13 && MINUTO == MIN13 && SEGUNDO==0) BOX=13;
if(HORA == HR14 && MINUTO == MIN14 && SEGUNDO==0) BOX=14;
if(HORA == HR15 && MINUTO == MIN15 && SEGUNDO==0) BOX=15;
if(HORA == HR16 && MINUTO == MIN16 && SEGUNDO==0) BOX=16;
if(HORA == HR17 && MINUTO == MIN17 && SEGUNDO==0) BOX=17;
if(HORA == HR18 && MINUTO == MIN18 && SEGUNDO==0) BOX=18;
if(HORA == HR19 && MINUTO == MIN19 && SEGUNDO==0) BOX=19;
if(HORA == HR20 && MINUTO == MIN20 && SEGUNDO==0) BOX=20;
if(HORA == HR21 && MINUTO == MIN21 && SEGUNDO==0) BOX=21;
if(HORA == HR22 && MINUTO == MIN22 && SEGUNDO==0) BOX=22;
if(HORA == HR23 && MINUTO == MIN23 && SEGUNDO==0) BOX=23;
if(HORA == HR24 && MINUTO == MIN24 && SEGUNDO==0) BOX=24;
}

void roleta()
{
if(read_eeprom(0) == 255) write_eeprom(0,1);
REBOX=read_eeprom(0);
if(BOX!=REBOX)
{
printf(lcd_putc,"\fAguarde ...");
delay_ms(100);
EBOX=0;
if(BOX>REBOX && BOX-REBOX>12) IBOX=24-(BOX-REBOX), DIR=2;
if(BOX>REBOX && BOX-REBOX<=12) IBOX=BOX-REBOX, DIR=1;
if(BOX<REBOX && REBOX-BOX>=12) IBOX=24-(REBOX-BOX), DIR=1;
if(BOX<REBOX && REBOX-BOX<12) IBOX=REBOX-BOX, DIR=2;
if(DIR==1)
{
for(IBOX=(IBOX*6); IBOX>0 ; IBOX--)
{
output_high(PIN_C1);
delay_ms(10);
output_low(PIN_C1);
delay_ms(10);
output_high(PIN_C1);
output_high(PIN_C2);
delay_ms(10);
output_low(PIN_C1);
output_low(PIN_C2);
delay_ms(10);
output_high(PIN_C2);
delay_ms(10);
output_low(PIN_C2);
delay_ms(10);
output_high(PIN_C2);
output_high(PIN_C3);
delay_ms(10);
output_low(PIN_C2);
output_low(PIN_C3);
delay_ms(10);
output_high(PIN_C3);
delay_ms(10);
output_low(PIN_C3);
delay_ms(10);
output_high(PIN_C3);
output_high(PIN_C4);
delay_ms(10);
output_low(PIN_C3);
output_low(PIN_C4);
delay_ms(10);
output_high(PIN_C4);
delay_ms(10);
output_low(PIN_C4);
delay_ms(10);
output_high(PIN_C4);
output_high(PIN_C1);
delay_ms(10);
output_low(PIN_C4);
output_low(PIN_C1);
delay_ms(10);
EBOX ++;
if(EBOX==24 || EBOX==48 || EBOX==72 || EBOX==96 || EBOX==120 || EBOX==144)
delay_ms(1500);
}
}
if(DIR==2)
{
for(IBOX=(IBOX*6); IBOX>0 ; IBOX--)
{
output_high(PIN_C4);
delay_ms(10);
output_low(PIN_C4);
delay_ms(10);
output_high(PIN_C4);
output_high(PIN_C3);
delay_ms(10);
output_low(PIN_C4);
output_low(PIN_C3);
delay_ms(10);
output_high(PIN_C3);
delay_ms(10);
output_low(PIN_C3);
delay_ms(10);
output_high(PIN_C3);
output_high(PIN_C2);
delay_ms(10);
output_low(PIN_C3);
output_low(PIN_C2);
delay_ms(10);
output_high(PIN_C2);
delay_ms(10);
output_low(PIN_C2);
delay_ms(10);
output_high(PIN_C2);
output_high(PIN_C1);
delay_ms(10);
output_low(PIN_C2);
output_low(PIN_C1);
delay_ms(10);
output_high(PIN_C1);
delay_ms(10);
output_low(PIN_C1);
delay_ms(10);
output_high(PIN_C1);
output_high(PIN_C4);
delay_ms(10);
output_low(PIN_C1);
output_low(PIN_C4);
delay_ms(10);
EBOX ++;
if(EBOX==24 || EBOX==48 || EBOX==72 || EBOX==96 || EBOX==120 || EBOX==144)
delay_ms(1500);
}
}
}
write_eeprom(0,BOX);
while(!input(pin_d6))
{
printf(lcd_putc,"\fRetire seu rem.\nPress. reset");
delay_ms(100);
output_high(pin_e0);
delay_ms(1000);
}
output_low(pin_e0);
output_d(0);
IBOX=0, REBOX=0, EBOX=0, BOX=0, DIR=0;
}

void ajuste()
{
printf(lcd_putc,"\fAjuste o \nhorario");
delay_ms(1000);
while(1)
{
printf(lcd_putc,"\fDigite a \nhora:");
delay_ms(100);
HORA = cusco_readkbd(0);
while (HORA>24) // LIMITE DAS HORAS
{
printf(lcd_putc,"\fRedigite a \nhora:");
delay_ms(100);
HORA = cusco_readkbd(0);
}
printf(lcd_putc,"\fDigite os \nminutos:");
delay_ms(100);
MINUTO = cusco_readkbd(0);
while (MINUTO>59) // LIMITE DOS MINUTOS
{
printf(lcd_putc,"\fRedigite os \nminutos:");
delay_ms(100);
MINUTO = cusco_readkbd(0);
}
delay_ms(100);
SEGUNDO=1;
output_d(0);
return;
}
}

void mostrador()
{
C=0, H1=61, M1=0;
if(HR1==255&&HR2==255&&HR3==255&&HR4==255&&HR5==255&&HR6==255&&
HR7==255&&HR8==255&&HR9==255&&HR10==255&&HR11==255&&HR12==255&
&HR13==255&&HR14==255&&HR15==255&&HR16==255&&HR17==255&&HR18==2
55&&HR19==255&&HR20==255&&HR21==255&&HR22==255&&HR23==255&&HR2
4==255)
{
printf(lcd_putc,"\fNenhum alarme\ngravado!");
delay_ms(2000);
}
else
{
printf(lcd_putc,"\f Case | Alarme");
delay_ms(100);
for(COUNT=0; COUNT<25 ; COUNT++)
{
delay_ms(10);
if(COUNT==1 && HR1!=255) H1=HR1, M1=MIN1, C=1;
if(COUNT==2 && HR2!=255) H1=HR2, M1=MIN2, C=2;
if(COUNT==3 && HR3!=255) H1=HR3, M1=MIN3, C=3;
if(COUNT==4 && HR4!=255) H1=HR4, M1=MIN4, C=4;
if(COUNT==5 && HR5!=255) H1=HR5, M1=MIN5, C=5;
if(COUNT==6 && HR6!=255) H1=HR6, M1=MIN6, C=6;
if(COUNT==7 && HR7!=255) H1=HR7, M1=MIN7, C=7;
if(COUNT==8 && HR8!=255) H1=HR8, M1=MIN8, C=8;
if(COUNT==9 && HR9!=255) H1=HR9, M1=MIN9, C=9;
if(COUNT==10 && HR10!=255) H1=HR10, M1=MIN10, C=10;
if(COUNT==11 && HR11!=255) H1=HR11, M1=MIN11, C=11;
if(COUNT==12 && HR12!=255) H1=HR12, M1=MIN12, C=12;
if(COUNT==13 && HR13!=255) H1=HR13, M1=MIN13, C=13;
if(COUNT==14 && HR14!=255) H1=HR14, M1=MIN14, C=14;
if(COUNT==15 && HR15!=255) H1=HR15, M1=MIN15, C=15;
if(COUNT==16 && HR16!=255) H1=HR16, M1=MIN16, C=16;
if(COUNT==17 && HR17!=255) H1=HR17, M1=MIN17, C=17;
if(COUNT==18 && HR18!=255) H1=HR18, M1=MIN18, C=18;
if(COUNT==19 && HR19!=255) H1=HR19, M1=MIN19, C=19;
if(COUNT==20 && HR20!=255) H1=HR20, M1=MIN20, C=20;
if(COUNT==21 && HR21!=255) H1=HR21, M1=MIN21, C=21;
if(COUNT==22 && HR22!=255) H1=HR22, M1=MIN22, C=22;
if(COUNT==23 && HR23!=255) H1=HR23, M1=MIN23, C=23;
if(COUNT==24 && HR24!=255) H1=HR24, M1=MIN24, C=24;
if(H1!=61) printf(lcd_putc,"\n |%02u| = %02u:%02u ",C,H1,M1),delay_ms(2000),H1=61;
}
COUNT=0, C=0, H1=0, M1=0;
}
output_d(0);
}

void reset_all()
{
R=0;
while(R!=1 && R!=2)
{
printf(lcd_putc,"\fApagar tudo? ( )\n 1-Sim 2-Nao ");
delay_ms(100);
lcd_gotoxy(15,1);
R = cusco_readkbd(0);
}
if(R==1)
{
HR1=255, MIN1=255,write_eeprom(1,255);
HR2=255, MIN2=255,write_eeprom(2,255);
HR3=255, MIN3=255,write_eeprom(3,255);
HR4=255, MIN4=255,write_eeprom(4,255);
HR5=255, MIN5=255,write_eeprom(5,255);
HR6=255, MIN6=255,write_eeprom(6,255);
HR7=255, MIN7=255,write_eeprom(7,255);
HR8=255, MIN8=255,write_eeprom(8,255);
HR9=255, MIN9=255,write_eeprom(9,255);
HR10=255, MIN10=255,write_eeprom(10,255);
HR11=255, MIN11=255,write_eeprom(11,255);
HR12=255, MIN12=255,write_eeprom(12,255);
HR13=255, MIN13=255,write_eeprom(13,255);
HR14=255, MIN14=255,write_eeprom(14,255);
HR15=255, MIN15=255,write_eeprom(15,255);
HR16=255, MIN16=255,write_eeprom(16,255);
HR17=255, MIN17=255,write_eeprom(17,255);
HR18=255, MIN18=255,write_eeprom(18,255);
HR19=255, MIN19=255,write_eeprom(19,255);
HR20=255, MIN20=255,write_eeprom(20,255);
HR21=255, MIN21=255,write_eeprom(21,255);
HR22=255, MIN22=255,write_eeprom(22,255);
HR23=255, MIN23=255,write_eeprom(23,255);
HR24=255, MIN24=255,write_eeprom(24,255);
CAS=0;
printf(lcd_putc,"\fTodos os alarmes\nforam apagados!");
delay_ms(10);
output_high(pin_e0);
delay_ms(500);
output_low(pin_e0);
delay_ms(2000);
output_d(0);
}
if(R==2)
{
output_d(0);
return;
}
}

void erase()
{
CAS=0;
printf(lcd_putc,"\fApagar alarme\ndo case:");
delay_ms(1000);
CAS = cusco_readkbd(0);
while (CAS>24 || CAS==0 ) // MAXIMO DE COMPARTIMENTOS / RESTRIÇÂO
{
printf(lcd_putc,"\fRedigite o num.\ndo case:");
delay_ms(100);
CAS = cusco_readkbd(0);
}
switch (CAS)
{
case 1 : HR1=255, MIN1=255,write_eeprom(1,255);
break;
case 2 : HR2=255, MIN2=255,write_eeprom(2,255);
break;
case 3 : HR3=255, MIN3=255,write_eeprom(3,255);
break;
case 4 : HR4=255, MIN4=255,write_eeprom(4,255);
break;
case 5 : HR5=255, MIN5=255,write_eeprom(5,255);
break;
case 6 : HR6=255, MIN6=255,write_eeprom(6,255);
break;
case 7 : HR7=255, MIN7=255,write_eeprom(7,255);
break;
case 8 : HR8=255, MIN8=255,write_eeprom(8,255);
break;
case 9 : HR9=255, MIN9=255,write_eeprom(9,255);
break;
case 10 : HR10=255, MIN10=255,write_eeprom(10,255);
break;
case 11 : HR11=255, MIN11=255,write_eeprom(11,255);
break;
case 12 : HR12=255, MIN12=255,write_eeprom(12,255);
break;
case 13 : HR13=255, MIN13=255,write_eeprom(13,255);
break;
case 14 : HR14=255, MIN14=255,write_eeprom(14,255);
break;
case 15 : HR15=255, MIN15=255,write_eeprom(15,255);
break;
case 16 : HR16=255, MIN16=255,write_eeprom(16,255);
break;
case 17 : HR17=255, MIN17=255,write_eeprom(17,255);
break;
case 18 : HR18=255, MIN18=255,write_eeprom(18,255);
break;
case 19 : HR19=255, MIN19=255,write_eeprom(19,255);
break;
case 20 : HR20=255, MIN20=255,write_eeprom(20,255);
break;
case 21 : HR21=255, MIN21=255,write_eeprom(21,255);
break;
case 22 : HR22=255, MIN22=255,write_eeprom(22,255);
break;
case 23 : HR23=255, MIN23=255,write_eeprom(23,255);
break;
case 24 : HR24=255, MIN24=255,write_eeprom(24,255);
break;
}
output_d(0x00);
CAS=0;
printf(lcd_putc,"\fAlarme\napagado!");
delay_ms(10);
output_high(pin_e0);
delay_ms(500);
output_low(pin_e0);
delay_ms(1000);
output_d(0);
}

void program()
{
CAS=0;
printf(lcd_putc,"\fDigite o numero\ndo case:");
delay_ms(1000);
CAS = cusco_readkbd(0);
while (CAS>24 || CAS==0 ) // MAXIMO DE COMPARTIMENTOS / RESTRIÇÂO
{
printf(lcd_putc,"\fRedigite o num.\ndo case:");
delay_ms(100);
CAS= cusco_readkbd(0);
}
A=0,B=0;
printf(lcd_putc,"\fDigite a hora\ndo alarme:");
delay_ms(100);
A = cusco_readkbd(0);
while (A>23) // LIMITE DAS HORAS
{
printf(lcd_putc,"\fRedigite a hora\ndo alarme:");
delay_ms(100);
A = cusco_readkbd(0);
}
printf(lcd_putc,"\fDigite o min.\ndo alarme:");
delay_ms(100);
B = cusco_readkbd(0);
while (B>59) // LIMITE DOS MINUTOS
{
printf(lcd_putc,"\fRedigite o min.\ndo alarme:");
delay_ms(100);
B = cusco_readkbd(0);
}
printf(lcd_putc,"\f Case %02u \n Alarme = %02u:%02u ", CAS,A,B);
delay_ms(10);
output_high(pin_e0);
delay_ms(500);
output_low(pin_e0);
delay_ms(2000);
switch (CAS)
{
case 1 : HR1=A, MIN1=B;
break;
case 2 : HR2=A, MIN2=B;
break;
case 3 : HR3=A, MIN3=B;
break;
case 4 : HR4=A, MIN4=B;
break;
case 5 : HR5=A, MIN5=B;
break;
case 6 : HR6=A, MIN6=B;
break;
case 7 : HR7=A, MIN7=B;
break;
case 8 : HR8=A, MIN8=B;
break;
case 9 : HR9=A, MIN9=B;
break;
case 10 : HR10=A, MIN10=B;
break;
case 11 : HR11=A, MIN11=B;
break;
case 12 : HR12=A, MIN12=B;
break;
case 13 : HR13=A, MIN13=B;
break;
case 14 : HR14=A, MIN14=B;
break;
case 15 : HR15=A, MIN15=B;
break;
case 16 : HR16=A, MIN16=B;
break;
case 17 : HR17=A, MIN17=B;
break;
case 18 : HR18=A, MIN18=B;
break;
case 19 : HR19=A, MIN19=B;
break;
case 20 : HR20=A, MIN20=B;
break;
case 21 : HR21=A, MIN21=B;
break;
case 22 : HR22=A, MIN22=B;
break;
case 23 : HR23=A, MIN23=B;
break;
case 24 : HR24=A, MIN24=B;
break;
}
output_d(0x00);
CAS=0;
output_d(0);
return;
}

void write_eeprom1()
{
write_eeprom(1,HR1),write_eeprom(101,MIN1);
write_eeprom(2,HR2),write_eeprom(102,MIN2);
write_eeprom(3,HR3),write_eeprom(103,MIN3);
write_eeprom(4,HR4),write_eeprom(104,MIN4);
write_eeprom(5,HR5),write_eeprom(105,MIN5);
write_eeprom(6,HR6),write_eeprom(106,MIN6);
write_eeprom(7,HR7),write_eeprom(107,MIN7);
write_eeprom(8,HR8),write_eeprom(108,MIN8);
write_eeprom(9,HR9),write_eeprom(109,MIN9);
write_eeprom(10,HR10),write_eeprom(110,MIN10);
write_eeprom(11,HR11),write_eeprom(111,MIN11);
write_eeprom(12,HR12),write_eeprom(112,MIN12);
}

void write_eeprom2()
{
write_eeprom(13,HR13),write_eeprom(113,MIN13);
write_eeprom(14,HR14),write_eeprom(114,MIN14);
write_eeprom(15,HR15),write_eeprom(115,MIN15);
write_eeprom(16,HR16),write_eeprom(116,MIN16);
write_eeprom(17,HR17),write_eeprom(117,MIN17);
write_eeprom(18,HR18),write_eeprom(118,MIN18);
write_eeprom(19,HR19),write_eeprom(119,MIN19);
write_eeprom(20,HR20),write_eeprom(120,MIN20);
write_eeprom(21,HR21),write_eeprom(121,MIN21);
write_eeprom(22,HR22),write_eeprom(122,MIN22);
write_eeprom(23,HR23),write_eeprom(123,MIN23);
write_eeprom(24,HR24),write_eeprom(124,MIN24);
}

void read_eeprom1()
{
HR1=read_eeprom(1), MIN1=read_eeprom(101);
HR2=read_eeprom(2), MIN2=read_eeprom(102);
HR3=read_eeprom(3), MIN3=read_eeprom(103);
HR4=read_eeprom(4), MIN4=read_eeprom(104);
HR5=read_eeprom(5), MIN5=read_eeprom(105);
HR6=read_eeprom(6), MIN6=read_eeprom(106);
HR7=read_eeprom(7), MIN7=read_eeprom(107);
HR8=read_eeprom(8), MIN8=read_eeprom(108);
HR9=read_eeprom(9), MIN9=read_eeprom(109);
HR10=read_eeprom(10), MIN10=read_eeprom(110);
HR11=read_eeprom(11), MIN11=read_eeprom(111);
HR12=read_eeprom(12), MIN12=read_eeprom(112);
}

void read_eeprom2()
{
HR13=read_eeprom(13), MIN13=read_eeprom(113);
HR14=read_eeprom(14), MIN14=read_eeprom(114);
HR15=read_eeprom(15), MIN15=read_eeprom(115);
HR16=read_eeprom(16), MIN16=read_eeprom(116);
HR17=read_eeprom(17), MIN17=read_eeprom(117);
HR18=read_eeprom(18), MIN18=read_eeprom(118);
HR19=read_eeprom(19), MIN19=read_eeprom(119);
HR20=read_eeprom(20), MIN20=read_eeprom(120);
HR21=read_eeprom(21), MIN21=read_eeprom(121);
HR22=read_eeprom(22), MIN22=read_eeprom(122);
HR23=read_eeprom(23), MIN23=read_eeprom(123);
HR24=read_eeprom(24), MIN24=read_eeprom(124);
}

main()
{
lcd_init();
CAS=0, BOX=0, REBOX=0;
HORA=0, MINUTO=0, SEGUNDO=0;
read_eeprom1();
read_eeprom2();
ajuste();
setup_timer_0 (RTCC_DIV_256|RTCC_INTERNAL);
enable_interrupts(GLOBAL);
enable_interrupts(INT_TIMER0);
while(1)
{
while(!input(pin_d1))
{
printf(lcd_putc,"\f DISPENSER MED. \n -- %02u:%02u:%02u -- ", HORA, MINUTO,
SEGUNDO);
delay_ms(500);
if(BOX!=0) roleta();
if(input(pin_d3)) erase();
if(input(pin_d0)) ajuste();
if(input(pin_d2)) mostrador();
while(input(pin_d6))
{
delay_ms(5000);
output_d(0);
if(input(pin_d6)) reset_all();
break;
}
}
program();
write_eeprom1();
write_eeprom2();
}
}
ANEXO F – DESENHOS MECÂNICOS
ANEXO G – MONTAGEM