Show Posts
Pages: 1 2 [3] 4 5 ... 29
31  International / Software / Re: Programmare cubo led 4x4x4 con due 74HC595 on: June 25, 2013, 03:19:25 pm
i pin 10 ora a me sono collegati a +5V
32  International / Software / Re: Programmare cubo led 4x4x4 con due 74HC595 on: June 25, 2013, 01:15:06 pm
Prima di cambiare le connessioni vorrei capire meglio smiley-lol
Quindi devo prendere i due pin 10 degli s/r e collegarli entrambi su un solo pin di arduino?
poi quindi quando invio la serie di bit devo fare:

invio prima serie
accendo il piano
azzero (settando high i due pin 10)
latch su low per memorizzare
invio seconda
accendo piano
azzero
latch


e così via?
33  International / Software / Re: Programmare cubo led 4x4x4 con due 74HC595 on: June 25, 2013, 07:24:06 am
ma cancellando lo shift si spegneranno i led accesi prima?
cioè se io volessi accendere prima 3 led in un piano e poi 3 su un altro, se uso canc dello shift poi i primi 3 led si spengono?
34  International / Software / Re: Programmare cubo led 4x4x4 con due 74HC595 on: June 25, 2013, 05:41:19 am
Non ho uno schema ordinato :S però ho fatto questo su fritzing giusto per farvi vedere i collegamenti tra i due s/r e le due colonne e due livelli, ho lasciato stare i collegamenti con i pin di arduino perchè poi quelli dipendono dal programma


Ma quindi come dovrei scrivere nello sketch per fare quello che dice Etemenanki .... non sono così preparato in materia per capire al 100% quello che ha detto >_<
35  International / Software / Re: Programmare cubo led 4x4x4 con due 74HC595 on: June 24, 2013, 02:35:14 pm
Le connessioni le ho riviste 10mila volte  smiley-cry
poi scusa perchè con la funzione "uno_per_uno()" va tutto bene e con gli altri non molto? :S
36  International / Software / Re: Programmare cubo led 4x4x4 con due 74HC595 on: June 24, 2013, 12:09:44 pm
Quote
è tutto scritto in quel link, lo hai letto?  smiley-razz )
Quale link?  smiley-slim
Quote
ciclo iniziale ...
1) spegni tutti gli strati
2) impulso LOW su SCLR (pulisce il registro)
3) invio stringa su SI e clock su SCK
4) impulso alto su RCK (passa i dati in latch, poi deve tornare basso per mantenerli)
5) abilita strato 1

da qui in poi ...
1) impulso LOW su SCLR (pulisce il registro, ma i dati delle uscite sono mantenuti dai latch)
2) invio stringa su SI e clock su SCK
3) spegni strato 1
4) impulso alto su RCK (passa i dati in latch, poi deve tornare basso per mantenerli)
5) abilita strato 2

torna ad 1) ... ecc ...

Tu lo piloti in questo modo
Non è che ci abbia capito molto   smiley-sweat
Comunque io  prima accendo il livello (che non è connesso ad uno shift register), poi abbasso il latch, passo i dati (nella funzione c'è sia il  bit di clock che quello del serial input) e poi riattivo il latch
37  International / Software / Re: Programmare cubo led 4x4x4 con due 74HC595 on: June 24, 2013, 10:21:01 am
ancora problemi ç_ç
scrivendo questo codice
Code:
digitalWrite(npn[0], HIGH);
  digitalWrite(latch, LOW);
  shiftOut(data, clock, MSBFIRST, 0b00000010);
  shiftOut(data, clock, MSBFIRST, 0b00000000);
  digitalWrite(latch, HIGH);
dovrebbe accendermi il 7° led giusto?
invece mi accende con luce maggiore il 6° e con luce fioca il 7° ..... ho pensato quindi ad un problema nei collegamenti, li ho rivisti e nessun filo si tocca, inoltre ho grattato anche un po' con la punta del giravite fra i due pin in caso ci sia qualche cosa che li metta a contatto, ma niente.
Però usando lo sketch che li accende uno per uno sequenzialmente, questo problema non me lo da smiley-neutral .... sto uscendo pazzo mi sa

lo sketch uno per uno è questo
Code:
void uno_per_uno()
{
  int i; //contatore
  for(i=0;i<4;i++)
 {
  digitalWrite(npn[i], HIGH); //attivo il livello corrispondente al contatore
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b10000000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00000000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b01000000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00000000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00100000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00000000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00010000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00000000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00001000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00000000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00000100); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00000000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00000010); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00000000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00000001); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00000000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00000000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b10000000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00000000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b01000000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00000000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00100000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00000000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00010000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00000000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00001000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00000000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00000100); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00000000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00000010); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00000000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00000001); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(npn[i], LOW);//disattivo il livello
 
 }
}
38  International / Software / Re: Programmare cubo led 4x4x4 con due 74HC595 on: June 24, 2013, 08:08:39 am
Quote
Beh, allora c'è qualcosa che non funziona...
Se li accendi tutti funziona, se li accendi alternati no. Ed accendendoli in sequenza 1 ad uno?
Sisi ho usato lo sketch che me li accende uno ad uno in sequenza (lo sketch sta su)
e funziona bene
Quote
Lavora su singoli bit, imposti il bit in posizione "n" del byte x.
I bit vanno di posizione da 0 a 7, da destra verso sinistra (il bit meno significativo a sta destra):
7.6.5.4.3.2.1.0

se quindi ad esempio voglio accendere il 6° led mi basta scrivere bitset(7, byte) e dichiaro prima la variabile byte=B0000000; ?
39  International / Software / Re: Programmare cubo led 4x4x4 con due 74HC595 on: June 23, 2013, 03:20:20 pm
Il reference per quanot riguarda bitset(x, n) l'ho visto ma non è che c'ho capito molto smiley-neutral
40  International / Software / Re: Programmare cubo led 4x4x4 con due 74HC595 on: June 23, 2013, 02:57:58 pm
Sisi ho provato con tutti e 4 i piani e si accendono tutti i led
41  International / Software / Re: Programmare cubo led 4x4x4 con due 74HC595 on: June 23, 2013, 01:26:47 pm
mi chiedevo inoltre se c'è un modo per accendere un singolo led senza scrivere la combinazione di bit.
Mi spiego
se ad esempio volessi accendere solo un led non c'è un modo per accendere direttamente il led 34 senza scrivere la serie di bit?
non si posso creare delle variabili? xD
sarebbe utile anche in un ciclo, dove a seconda del contatore decido se accendere o meno quel led, in questo caso la combinazione di bit deve cambiare ogni volta e non posso usare il ciclo
42  International / Software / Re: Programmare cubo led 4x4x4 con due 74HC595 on: June 23, 2013, 11:28:14 am
si le 16 uscite degli shift register sono collegate alle 16 colonne di led
quindi tenendo conto di un solo piano, ogni led è collegato ad un'uscita degli shift register
43  International / Software / Re: Programmare cubo led 4x4x4 con due 74HC595 on: June 23, 2013, 07:21:54 am
Usando uno sketch che mi illumina tutti i led uno alla volta, va tutto bene
Code:
/* Sketch cubo LED 4x4x4 per l'esame
creato da: Salvatore Marcellini */

//Definisco le variabili
int latch= 8; //pin del latch degli 74HC595
int clock= 12; //pin del clock degli 74HC595
int data= 11; //pin dove gli 74HC595 ricevono l'input
int npn[4]= {5, 6, 7, 9}; // array con i pin dei transistor
int i; //contatore
int pausa= 100;

// Setto tutti i  pin su OUTPUT
void setup ()
{
    pinMode(latch, OUTPUT);
    pinMode(clock, OUTPUT);
    pinMode(data, OUTPUT);
    for(i=0;i<4;i++)
    {
        pinMode(npn[i], OUTPUT);
    }
}

//inizio del programma
void loop ()
{
  for(i=0;i<4;i++)
 {
  digitalWrite(npn[i], HIGH); //attivo il livello corrispondente al contatore
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b10000000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00000000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b01000000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00000000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00100000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00000000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00010000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00000000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00001000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00000000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00000100); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00000000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00000010); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00000000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00000001); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00000000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00000000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b10000000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00000000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b01000000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00000000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00100000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00000000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00010000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00000000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00001000); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00000000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00000100); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00000000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00000010); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b00000000); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b00000001); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 
     
      digitalWrite(npn[i], LOW);
 
 }
             
}

Quindi credo che i collegamenti vadano bene no?

Però se voglio accendere una colonna si e una no, come qui
Code:
/* Sketch cubo LED 4x4x4 per l'esame
creato da: Salvatore Marcellini */

//Definisco le variabili
int latch= 8; //pin del latch degli 74HC595
int clock= 12; //pin del clock degli 74HC595
int data= 11; //pin dove gli 74HC595 ricevono l'input
int npn[4]= {5, 6, 7, 9}; // array con i pin dei transistor
int i; //contatore
int pausa= 1000;

// Setto tutti i  pin su OUTPUT
void setup ()
{
    pinMode(latch, OUTPUT);
    pinMode(clock, OUTPUT);
    pinMode(data, OUTPUT);
    for(i=0;i<4;i++)
    {
        pinMode(npn[i], OUTPUT);
    }
}

//inizio del programma
void loop ()
{
  for(i=0;i<4;i++)
 {
  digitalWrite(npn[i], HIGH); //attivo il livello corrispondente al contatore
 
  digitalWrite(latch, LOW); //latch basso per passare la serie di bit
  shiftOut(data, clock, MSBFIRST, 0b10101010); //prima serie di bit dello 74HC595 n°1
  shiftOut(data, clock, MSBFIRST, 0b10101010); //seconda serie di bit dello 74HC595 n°2
  digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
  delay(pausa); //pausa
 digitalWrite(npn[i], LOW);
 }
             
}

Non mi accende una colonna si e una no, ma me le accende quasi tutte tranne 3.
Quindi direi che sono io a non aver capito come programmare in modo giusto mi sa xD
44  International / Hardware / Re: Guida e spiegazione componenti per Cubo led on: June 23, 2013, 07:02:05 am
Dopo tutto l'aiuto che mi avete dato voglio almeno mostrarvi il progetto finito smiley-lol
Grazie mille ragazzi, siete stati indispensabili smiley-grin



Certo il cubo non è perfettamente dritto xD però è il massimo che ho potuto fare
45  International / Software / Re: Programmare cubo led 4x4x4 con due 74HC595 on: June 22, 2013, 05:29:55 pm
in realtà io lo inviavo con 0b quando facevo le prove su bredboard e andava con 8 bit :\
Pages: 1 2 [3] 4 5 ... 29