Com apenas duas portas do arduino A5 e A4 expandi para mais 16 portas.

Usei 2 PCF8574AP

Exibições: 1153

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Alex Henrique em 2 junho 2013 às 9:35

// include the library code:
#include <LiquidCrystal.h>
#include <TimerOne.h>
const int analogInPin = A0;
int valor = 0;
int decseg;
int tempo;
byte MAP[10]={};
char retorno;
char retornolast;
int count=0;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void scaneia ()
{    
    valor = analogRead(analogInPin);
    if ((valor>236)&(valor<245))//241
    {
        retorno='D';
    }
    if ((valor>225)&(valor<235))//229
    {
        retorno='C';
    }
    if ((valor>215)&(valor<225))//218
    {
        retorno='B';
    }
    if ((valor>202)&(valor<212))//207
    {
        retorno='A';
    }
    if ((valor>312)&(valor<322))//317
    {
        retorno='#';
    }
    if ((valor>291)&(valor<301))//296
    {
        retorno='9';
    }    
    if ((valor>272)&(valor<282))//277
    {
        retorno='6';
    }
    if ((valor>256)&(valor<266))//261
    {
        retorno='3';
    }
    if ((valor>457)&(valor<467))//462
    {
        retorno='0';
    }
    if ((valor>413)&(valor<423))//418
    {
        retorno='8';
    }
    if ((valor>377)&(valor<387))//382
    {
        retorno='5';
    }
    if ((valor>347)&(valor<357))//352
    {
        retorno='2';
    }    
    if ((valor>829)&(valor<839))//834
    {
        retorno='*';
    }
    if ((valor>697)&(valor<707))//702
    {
        retorno='7';
    }
    if ((valor>602)&(valor<612))//607
    {
        retorno='4';
    }
    if ((valor>529)&(valor<539))//534
    {
        retorno='1';
    }
    if (valor<50)//534
    {
        retorno='N';
    }
}
void setup()
{
  lcd.begin(16, 2);
  lcd.clear();
  Timer1.initialize(100000);
  Timer1.attachInterrupt( timerIsr );
}
void loop()
{  
    scaneia();
    if ((retorno != retornolast)&&(retorno!='N'))
    {    
        if (count<17)
        {
        lcd.setCursor(count,0);
        lcd.print(retorno);
        count++;        
        }
        if (count>16)
        {
        lcd.setCursor((count-17),1);
        lcd.print(retorno);
        count++;        
        }    
        if (count>33)
        {
          lcd.clear();
          count=0;
          lcd.setCursor(0,0);
        }    
    }
    retornolast = retorno;
    delay(10);
}

void timerIsr()
{    decseg++;
    if (decseg>5)
    {
        decseg=0;
        tempo++;
    }
    if (tempo>5)
    {
        tempo=0;                
    }    
}

Comentário de Alexandre em 2 junho 2013 às 9:28

Alex e como tu fez isso?

Comentário de Alex Henrique em 2 junho 2013 às 8:50

Eu uso apenas um pino do arduino para fazer leitura de um teclado 4x4. Fiz um esquema com resistores, e uso entrada analógica.

Comentário de marlon bruno cupido em 14 maio 2013 às 20:53

vlw brother.. seria explorar muito pedir um esquema dele com teclado, sou novato e gostaria de ver como é na pratica. obrigado brother!

Comentário de Rogerio A. Filho em 14 maio 2013 às 17:27

Marlon, esse expansor, serve tanto para leitura como escrita, então ele deve funcionar para um teclado..

Hoje a noite finalizo esse expansor.. provavelmente na sexta envio tudo completo de como que ele funciona e o esquema dele.. com codigo de demonstração.

Comentário de marlon bruno cupido em 13 maio 2013 às 23:26

teria como disponibilizar os codigos e o esquema? consegui fazer  as 16 I/O... esse esquema funciona bem com um teclado? 

Comentário de Rogerio A. Filho em 13 maio 2013 às 15:48

To devendo isso a todos, ate essa sexta feira dia 17/05/2013 eu envio o expansor para 64 portas digitais. :)

Comentário de Alexandre em 12 maio 2013 às 9:58

Marlon, são digitais, estamos trabalhando pra expandir pra 64 e também criar um expansor de 64 analógicas.

Comentário de marlon bruno cupido em 12 maio 2013 às 2:48

essas 16  I/o são digitais?

Comentário de marlon bruno cupido em 12 maio 2013 às 2:40

qual é a lista de material para confecção dessa placa?

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço