Pages: [1]   Go Down
Author Topic: problema shift in con 74hc165 shift out con 74hc595  (Read 1333 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 1
Posts: 31
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
// 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!




Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 574
Posts: 12661
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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


Marche
Offline Offline
Edison Member
*
Karma: 34
Posts: 2276
azioni semplici per risultati complessi
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Newbie
*
Karma: 1
Posts: 31
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Marche
Offline Offline
Edison Member
*
Karma: 34
Posts: 2276
azioni semplici per risultati complessi
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La distrazione fa passare brutte serate a volte  smiley-wink
Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 574
Posts: 12661
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

 smiley-eek
L'importante è che la questione sia risolta, ma togliere qualche dubbio non sarebbe male. Poiché damosound ha deciso di ignorare bellamente la mia domanda (ma è un suo sacrosanto diritto), vorrei sapere almeno da BUD in che consiste il suo intervento.
Io leggo il codice postato all'inizio e le righe suggerite da te ed a me sembrano ASSOLUTAMENTE identiche, a pèarte le dimensioni ed il colore che tu hai dato a quei 2 e 3, e non credo che sia questa la soluzione.
Quindi, se non scoccia pure a te, mi spieghi perché un suggerimento identico al post originale dovrebbe risolvere un problema?
Logged


Marche
Offline Offline
Edison Member
*
Karma: 34
Posts: 2276
azioni semplici per risultati complessi
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mike, ti do un bel 3!

Ha assegnato gli stessi pin di arduino a entrambi gli shift register, ecco perchè ho evidenziato i numeri.

Come punizione mezz'ora in ginocchio sui ceci smiley-yell

 smiley-wink
« Last Edit: October 04, 2012, 06:33:51 pm by Pelletta » Logged

Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 574
Posts: 12661
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

eh no caro, non ci sto! intanto credo che lui abbia sbagliato a porre la domanda, usando due verbi con lo stesso significato riferiti a due integrati con funzionamento "opposto", senza possibilità di vedere uno schema elettrico, figuriamoci se mi mettevo ad analizzare il programma, visto che la programmazione non è proprio quel che si dice il "mio forte" smiley-grin, quindi mi sono limitato a leggere il tuo suggerimento e confrontarlo con il suo firmware. Di solito si suggerisce la soluzione corretta o si fa presente l'errore; tu ti sei affidato al silenzio stampa ed allo spirito di deduzione di chi ha commesso l'errore; io una caxxata del genere, scarso come sono, non l'avrei fatta mai, semplicemente eprché non metto mai mano ad un firmware se prima non disegno uno schema elettrico e realizzo l'hardware smiley-wink
Quindi il 3 non lo merito e non lo voglio, i ceci sì, domani finiscono in pentola con 150g di ditalini, grazie del pensiero e a buon rendere smiley-cool
Logged


Marche
Offline Offline
Edison Member
*
Karma: 34
Posts: 2276
azioni semplici per risultati complessi
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ecco, lo sapevo che si arrabbiava smiley-lol

Nemmeno io ho visto tutto il firmware, ho notato subito quell'errore di distrazione e l'ho evidenziato.
Non credo sia necessario lo schema elettrico quando vengono inizializzati gli stessi pin di arduino a più integrati che per altro svolgono funzioni differenti.
Poi magari il problema era altrove, intanto quella cosa era da sistemare.
Come giustamente hai detto, non avendo visto lo schema elettrico non potevo suggerire una modifica al firmware quindi mi sono limitato a segnalare l'errore.
« Last Edit: October 04, 2012, 06:28:57 pm by Pelletta » Logged

Pages: [1]   Go Up
Jump to: