Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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
_______________________________________________________
PROF. LÉO SPAGNOLO
RESUMO
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
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
materiais utilizados serão retratados nos capítulos um e dois que serão descritos
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
(comprimidos). Possui uma estrutura de madeira, e uma roleta de nylon acoplada a essa
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
horários. O painel conta com um visor LCD, um teclado numérico com botão de start, quatro
programação poderá ser feita de maneira fácil e intuitiva pelo usuário, através das
1.1 Objetivo
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
1.3 Cronograma
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
2.1 Microcontrolador
Um motor de passo é um tipo de motor elétrico usado quando algo tem que ser
controlada por uma série de campos eletromagnéticos que são ativados e desativados
determinado horário, que é programado na memória pelo usuário. Assim, em cada horário
para aquele horário fica acessível ao usuário, através de uma abertura na tampa.
Dispenser Med, assim que a medicação é tomada, o usuário aperta o botão de reset no painel,
com medicamentos para 1-2 semanas dependendo do numero de doses diárias, ou do número
de usuários.
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.
2.5 Fluxograma
projeto.
• Estrutura (madeira)
• Roleta (nylon)
• Tampa (acrílico)
• Cuscopic
• Motor de passo
• Correia
• Engrenagens
2.7 Orçamento
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
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
CAPÍTULO 3
MONTAGEM
3 MONTAGEM DO PROJETO
Esse capítulo tratará sobre o processo de montagem do Dispenser Med. Nele serão
componentes que seriam necessários para a composição do projeto. Primeiramente, foi focada
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
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
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
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
Porém, o conceito mais importante que foi adquirido durante a construção do projeto é
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.
contatar empresas que trabalham com este material, seu custo era elevado, o que aumentou
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
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
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.
convivência e trabalho em grupo, e do como essa convivência pode ser melhor quando se
.
16
REFERÊNCIAS BIBLIOGRÁFICAS
Vista Frontal
Vista Lateral
OBS: Caso nenhum alarme esteja gravado, a mensagem “Nenhum alarme gravado!” será
exibida no display.
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.
________________________________
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