Pages: [1]   Go Down
Author Topic: (RESOLVIDO) Ajuda com word e byte  (Read 670 times)
0 Members and 1 Guest are viewing this topic.
Brasil
Offline Offline
Sr. Member
****
Karma: 2
Posts: 315
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
#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;
}    
« Last Edit: March 17, 2013, 12:54:25 pm by mmoscz » Logged

4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP


Offline Offline
Jr. Member
**
Karma: 1
Posts: 75
3ª Idade ... in the house
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Arduino Mega 2560
Arduino Nano
Arduino UNO Rev3
Raspberry PI Model B
EasyPIC v4

Brasil
Offline Offline
Sr. Member
****
Karma: 2
Posts: 315
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP


Pages: [1]   Go Up
Jump to: