Go Down

Topic: problema shift in con 74hc165 shift out con 74hc595 (Read 1 time) previous topic - next topic

damosound

salve a tutti
volevo esporvi un problema a cui non riesco a venire a capo!
il mio intento, come da oggetto, è quello di leggere lo stato di 8 tasti con l'ausilio del 74hc165 e di verificare il loro stato con l'74hc595
vi allego il codice:
Code: [Select]

// test shift register in input 74hc165 e test shift register in out
//  scansiona 8 tasti dal 165, e riproduce il loro stato su 8 led collegati al 595
int dout=4;//data out pin 14 del 595
int clo=2;// clock pin 11 del 595
int lo=3;// latch pin 12 del 595

int din=8;//data in pin 9 del 165
int cin=2;//clock pin 2 del 165
int lin=3;//latch pin 1 del 165
 
void setup()
{ //pin 595
  pinMode(clo,OUTPUT); 
  pinMode(dout,OUTPUT);
  pinMode(lo,OUTPUT);
  //pin 165
  pinMode(cin,OUTPUT);
  pinMode(din,INPUT);
  pinMode(lin,OUTPUT);
}
int READ(int dat,int cl)  //funzione di lettura shift register
{ int val;
   val= digitalRead(dat);  //lettura dato
  digitalWrite(cl,LOW);
  digitalWrite(cl,HIGH);  //clock
  digitalWrite(cl,LOW);
  return val;             //ritorna il valore letto
}


void Stampabasso(int dat,int cl) //stampa bit basso
{ digitalWrite(dat,LOW);
  digitalWrite(cl,LOW);
  digitalWrite(cl,HIGH);
  digitalWrite(cl,LOW);
}

void Stampaalto(int dat,int cl)  //stampa pin alto
{ digitalWrite(dat,HIGH);
  digitalWrite(cl,LOW);
  digitalWrite(cl,HIGH);
  digitalWrite(cl,LOW);
}


void loop()
{
  int i=0;
  int arr[8]={0,0,0,0,0,0,0,0}; //array lettura, azzerato
  digitalWrite(lin,HIGH);
  delay(150);
  digitalWrite(lin,LOW);  //faccio entrare gli ingressi nel 165
  digitalWrite(lin,HIGH);
 
  for(i=0;i<8;i++)
  {
    arr[i]=READ(din,cin);  //inserisce nell'array il valore del dato letto
  }


 
  // scrittura
  digitalWrite(lo,LOW);
  digitalWrite(lo,HIGH);
  digitalWrite(lo,LOW);
  delay(20);

{for(i=0;i<8;i++)
{if(arr[i]==1)
   {Stampaalto(dout,clo);}
  else
   {Stampabasso(dout,clo);}
}

  }
  delay(150);

}


Nella parte di scrittura del 595 non ho problemi, ho provato separatamente le funzioni, e pare girare bene.

non riesco a far girare la parte dello shift in, ovvero anche se cambio lo stato dei tasti i led rimangono sempre e tutti accesi.
cosa sbaglio!???
grazie!





Michele Menniti

Quote
il mio intento, come da oggetto, è quello di leggere lo stato di 8 tasti con l'ausilio del 74hc165 e di verificare il loro stato con l'74hc595

scusa, per meglio capire, che differenza intendi tra "leggere" e "verificare" lo stato di 8 tasti?
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

pelletta

int dout=4;//data out pin 14 del 595
int clo=2;// clock pin 11 del 595
int lo=3;// latch pin 12 del 595

int din=8;//data in pin 9 del 165
int cin=2;//clock pin 2 del 165
int lin=3;//latch pin 1 del 165

damosound

grazie pelletta! ho risolto!
mi era proprio sfuggito
buona serata!

pelletta

La distrazione fa passare brutte serate a volte  ;)

Go Up