Arduino Forum

International => Portugues => Topic started by: mmoscz on Mar 16, 2013, 11:42 pm

Title: (RESOLVIDO) Ajuda com word e byte
Post by: mmoscz on Mar 16, 2013, 11:42 pm
Quote

Eu estava bobeando e descobri que quando fazia o Entradas = ~Entradas ele ficava com 0xFFXX, e nunca ia ficar como o Entradas_OLD, pois eu setava apenas o primeiro byte do Entradas.


Estou fazendo um sistema para entrada de 16 botões, ainda não coloquei os dois 74166, mas mesmo não operando com os 16 bits.
Alguém pode dar uma olhada nesse código, pois se substituo o tipo das variáveis de byte para word, não acontece nada quando aperto os botões, mas se uso byte responde como esperado
Provavelmente deve ser alguma coisinha que estou esquecendo, mas depois de dois dias, já não sei mais o que tentar.

Code: [Select]

#define CI74166_DATAIN 11    // 74166 13
#define CI74166_CLOCK  12    // 74166 7
#define CI74166_CLOCK_INH 10 // 74166 6
#define CI74166_STROBE 7    // 74166 15

byte Entradas166;
byte Entradas166_OLD = 0xFF;
byte FinalButtons = 0x0000;
byte FinalButtons_OLD = 0x0000;

unsigned long LastRead;
int DebounceDelay = 50;

void setup()
 {
 pinMode(CI74166_DATAIN, INPUT);
 pinMode(CI74166_CLOCK, OUTPUT);
 pinMode(CI74166_CLOCK, OUTPUT);
 pinMode(CI74166_CLOCK_INH, OUTPUT);
 pinMode(CI74166_STROBE, OUTPUT);
 Serial.begin(9600);
 }
 
void loop()
 {
 shiftIn();
 if (Entradas166 != Entradas166_OLD)  
   {
   LastRead = millis();
   }
 if ((millis() - LastRead) > DebounceDelay)
   {                    
   FinalButtons = Entradas166;
   }
 if (FinalButtons != FinalButtons_OLD)
   {
   Serial.println(FinalButtons, BIN);
   FinalButtons_OLD = FinalButtons;
   }  
 Entradas166_OLD = Entradas166;
 }
 
void shiftIn()
{
 int BitEntrada = 0;
 digitalWrite(CI74166_CLOCK,0);
 digitalWrite(CI74166_STROBE,0);
 delayMicroseconds(2);
 digitalWrite(CI74166_CLOCK,1); // important
 digitalWrite(CI74166_STROBE,1);
 for (int i= 0; i <= 7; i++)
 {
   digitalWrite(CI74166_CLOCK,1);
   delayMicroseconds(2);
   bitWrite(Entradas166, 7 - i, digitalRead(CI74166_DATAIN));
   digitalWrite(CI74166_CLOCK,0);
   delayMicroseconds(2);
 }
 Entradas166 = ~Entradas166;
}    
Title: Re: Ajuda com word e byte
Post by: tretas on Mar 17, 2013, 12:41 pm
Boas,

Visto que o

word

Description
A word stores a 16-bit unsigned number, from 0 to 65535. Same as an unsigned int.


Eu tentava com um unsigned int, pois eu não percebo é como pode funcionar com um byte visto que não cabe la dentro, mas eu pelo que tenho lido aqui no forum estou a anos luz de você a nível de codigo para o arduino ...

Cpts

Zé tretas
Title: Re: Ajuda com word e byte
Post by: mmoscz on Mar 17, 2013, 01:31 pm
Essa é o problema, eu não consigo usar os 16bits, pois quando altero para word que seria para armazenar os 16 botões, não faz nada.