sábado, 15 de dezembro de 2012

Desafio 4 " A Panificadora"

Primeiramente gostaria de agradecer ao meu colega Anderson Castanho, pois sem ele não conseguiria realizar este desafio... Valeu Anderson.


Este desafio tinha como proposta desenvolver uma maquina panificadora, que iria fazer 3 tipos de pães diferentes.
Programa:


#include <lpc213x.h>                   
#include "C:\Keil\ARM\lcd.h"            
#define  liga (1<<17)   
#define  sensor (1<<16)             
#define  tipo1 (1<<20)
#define  tipo2 (1<<21)
#define  tipo3 (1<<22)
#define  misturar (1<<16)
#define  forno (1<<17) 

int tempo (int limite)
{
int t;0;                     
for (t=0;t<limite;t++);      
}
int main (void)
{                     
IODIR0 = 0xFFFCFFFF;    
IODIR1 = 0xFF8FFFFF;
init_lcd ();                   
if (!(IOPIN0 & (liga)))
{
lcd_clr();
lcd_puts("OFF");
}

 while (IOPIN0 & (liga))             
 {
  if (IOPIN0 & (sensor))       
{                                     
lcd_clr();
lcd_puts("ESCOLHA"); 
}
if (!(IOPIN0 & (sensor)))
    {
lcd_clr();
lcd_puts("TAMPA ABERTA");
IOCLR1 = (misturar);
IOCLR1 = (forno);
    }
while (IOPIN1 & (tipo1))
{
lcd_clr();
lcd_puts("TIPO1");
IOSET1 = (misturar);
tempo(300000);
IOCLR1 = (misturar);
lcd_clr();
lcd_puts("PAUSA");
tempo(3000000);
IOSET1 = (forno);
lcd_clr();
lcd_puts("ASSANDO");
tempo(3000000);
IOCLR1 = (forno);

while(IOPIN1 & (tipo1))
{
lcd_clr();
lcd_puts("PAO PRONTO"); 
}
}
}
}
while(IOPIN1&(tipo2))
{
lcd_clr();
lcd_puts("TIPO2");
IOSET1 = (misturar);
tempo(6000000);
IOCLR1 = (misturar);
lcd_clr();
lcd_puts("PAUSA");
tempo(6000000);
IOSET1 = (forno);
lcd_clr();
lcd_puts("ASSANDO");
tempo(6000000);
IOCLR1 = (forno);
}
while (IOPIN1 & (tipo2))
{
lcd_clr();
lcd_puts("PAO PRONTO"); 
}
while (IOPIN1 & (tipo3))
{
lcd_clr();
lcd_puts("TIPO3");
IOSET1 = (misturar);
  tempo(9000000);
IOCLR1 = (misturar);
lcd_clr();
lcd_puts("PAUSA");
  tempo(9000000);
IOSET1 = (forno);
lcd_clr();
lcd_puts("ASSANDO");
  tempo(9000000);
IOCLR1 = (forno);
while (IOPIN1 & (tipo3))
{
lcd_clr();
lcd_puts("PAO PRONTO");
}
}


Desafio 3.1 "Níveis de Temperatura"

Olá Pessoal, este desafio tinha como proposto criar 5 níveis de temperatura para conversão em um display de 7 segmentos.


Programa:



#include <lpc21xx.h>    
#include <stdio.h>
                                 
#define a (1<<16)    
#define b (1<<17)    
#define c (1<<18)    
#define d (1<<19)    
#define e (1<<20)    
#define f (1<<21)    
#define g (1<<22)
#define n1 IOSET1=b|c ; IOCLR1=a|d|e|f|g
#define n2 IOSET1=a|b|e|d|g ; IOCLR1=c|f
#define n3 IOSET1=a|b|c|d|g ; IOCLR1=e|f
#define n4 IOSET1=b|c|f|g ; IOCLR1=a|d|e
#define n5 IOSET1=a|c|d|f|g ; IOCLR1=b|e

unsigned int val;
unsigned char teste[];

int main(void)      
{
IODIR1 = 0xffffffff;
PINSEL1 = 0x400000;
VPBDIV = 0x02;              
ADCR   = 0x00210601;

while(1)
{
atualiza:
ADCR  |= 0x01000000;              
while ((ADDR & 0x80000000) == 0);  
val = ((ADDR >> 6) & 0x03FF);

if (val<204)
{
 IOSET1=(n1);
 goto atualiza;
}
else if (val>204 & val<408)
{
 IOSET1=(n2);
 goto atualiza;
}
else if (val>408 & val<612)
{
 IOSET1=(n3);
 goto atualiza;
}
else if (val>612 & val<816)
{
 IOSET1=(n4);
 goto atualiza;
}
else if (val>816 & val<1023)
{
 IOSET1=(n5);
 goto atualiza;
}
}
}


Isso é tudo Pessoal

terça-feira, 11 de dezembro de 2012

Desafio 3.0 " Semáforos"

Este desafio consiste em controlar duas sinaleiras de ruas diferentes, mostrando no display seus estados ( se aberta ou fechada).


Meu Programa:



#include <lpc213x.h>
#include <C:\Keil\ARM\lcd.h>
#define vms1 (1<<16)
#define ams1 (1<<17)
#define vds1 (1<<18)
#define vms2 (1<<19)
#define ams2 (1<<20)
#define vds2 (1<<21)

void tempo (int limite)
{
int t=0;
for (t=0;t<limite;t++);//Função para chamar Tempo//
}

int main (void)
{
IODIR0=0xffffffff;
init_lcd();
while(1)
{
IOSET0=(vds1);
IOSET0=(vms2);
lcd_clr();
lcd_gotoxy(0,0);
lcd_puts("Rua 1 Aberta");
lcd_gotoxy(1,0);
lcd_puts("Rua 2 Fechada");
tempo(10000000);
IOCLR0=(vds1);
IOCLR0=(vms2);
IOSET0=(ams1);
IOSET0=(ams2);
tempo(10000000);
IOCLR0=(ams1);
IOCLR0=(ams2);
IOSET0=(vms1);
IOSET0=(vds2);
lcd_clr();
lcd_gotoxy(0,0);
lcd_puts("Rua 1 Fechada");
lcd_gotoxy(1,0);
lcd_puts("Rua 2 Aberta");
tempo(10000000);
IOCLR0=(vms1);
IOCLR0=(vds2);
IOSET0=(ams1);
IOSET0=(ams2);
tempo(10000000);
IOCLR0=(ams1);
IOCLR0=(ams2);
}
}

O Circuito no Proteus ficou assim:



Desafio 2.0 " A Maquina de Lavar"

Bom pessoal... aí vai minha tarefa 2.0, que consistia em realizar as funções de uma maquina de lavar roupas, Admitindo água, lavando, enxaguando e enfim centrifugando.


Meu programa é o seguinte:



#include <lpc213x.h>
#include <C:\Keil\ARM\lcd.h>
#define chave (1<<22)
#define sensorn (1<<20)
#define sensorp (1<<21)
#define valvula (1<<16)
#define expurgo (1<<17)
#define motor1 (1<<18)
#define motor2 (1<<19)
void tempo (int limite)
{
int t=0;
for (t=0;t<limite;t++);//Função para chamar Tempo//
}
void main (void)
{
IODIR1=0xff8fffff;
init_lcd();
while(1)
{
if(!(IOPIN1&(chave))) // Se chave for 0//
{
IOCLR1=(valvula);//Não liga água//
lcd_clr();
lcd_gotoxy(1,1);
lcd_puts("Ligue a Maquina");
}
else
{
if(!(IOPIN1&(sensorp)))//Se a cahve for 1 ele verifica a porta//
{
IOCLR1=(valvula);//Não liga a admissão se a porta for 0//
lcd_clr();
lcd_gotoxy(1,1);
lcd_puts("Feche a Porta");
}
else
{
IOSET1=(valvula);//Se a for 1 liga a admissao de água//
lcd_clr();
lcd_gotoxy(1,1);
lcd_puts("Admitindo Agua");
if(!(IOPIN1&(sensorn)))//Se o sensor for 0 continua ligado a valvula//
{
IOSET1=(valvula);
lcd_clr();
lcd_gotoxy(1,1);
lcd_puts("Admitindo Agua");
}
else
{
IOCLR1=(valvula);
lcd_clr();
lcd_gotoxy(1,1);
lcd_puts("Lavando");
IOSET1=(motor1);
tempo(10000000);
IOCLR1=(motor1);
IOSET1=(motor2);
tempo(10000000);
IOCLR1=(motor2);
IOSET1=(motor1);
tempo(10000000);
IOCLR1=(motor1);
IOSET1=(motor2);
tempo(10000000);
IOCLR1=(motor2);
      IOSET1=(motor1);
tempo(10000000);
IOCLR1=(motor1);
IOSET1=(motor2);
tempo(10000000);
IOCLR1=(motor2);
IOSET1=(expurgo);//Liga o expurgo e a agua desce do nivel//
lcd_clr();
lcd_gotoxy(1,1);
lcd_puts("Enxaguando");
tempo(10000000);
IOCLR1=(expurgo);
IOSET1=(valvula);
lcd_clr();
lcd_gotoxy(1,1);
lcd_puts("Agua Novamente");
while(IOPIN1&(valvula))
{
if(!(IOPIN1&(sensorn)))//Se sensor de nivel 0 continua ligada a valvula//
{
IOSET1=(valvula);
lcd_clr();
lcd_gotoxy(1,1);
lcd_puts("Agua Novamente");
while(!(IOPIN1&(sensorn)))
{
IOSET1=(valvula);
}
IOCLR1=(valvula);
IOSET1=(expurgo);
lcd_clr();
lcd_gotoxy(1,1);
lcd_puts("Centrifugando");
tempo(10000000);
IOSET1=(motor1);
IOSET1=(motor2);
tempo(10000000);
IOCLR1=(motor1);
IOCLR1=(motor2);
lcd_clr();
lcd_gotoxy(1,1);
IOCLR1=(expurgo);
lcd_puts("Fim de Ciclo");
}
while(1)
{
lcd_clr();
lcd_gotoxy(1,1);
lcd_puts("Fim de Ciclo");
}
}
}
}
}
}
}

Depois de programar este ciclo testei no Proteus. Funcionouu Perfeitamente.

O circuito ficou assim:



Isso é tudo Pessoal!!!!!!