Get Adobe Flash player

Dado elettronico con particolari caratteristiche

User Rating:  / 2
PoorBest 

Link Articolo Originale: http://www.grix.it/viewer.php?page=10925

 

L'idea di progettare e collaudare questo dispositivo è nata nel momento in cui per caso ho visto alcune pagine su questo sito che trattavano di questo argomento.
Purtroppo io sono fatto così: vedo un dispositivo e devo provare a realizzarlo anche io però con componenti diversi!!! Quindi subito mi sono messo all'opera:

Elenco componenti con descrizione di alcuni componenti
 

Componente

1

PICAXE 18X

1

Resistenza 4.7kΩ

7

Resistenza 330Ω

1

Resistenza 1kΩ

1

Resistenza 10kΩ

1

Display a 7 segmenti CC

1

Pulsante NA

 
Il Picaxe 18X è un uC prodotto dall'azienda PICAXE. Offre 4 pin di input, 8 pin di output e un pin di reset, all'interno ci sono vari moduli (es. pwm, ADC, ecc), supporta il protocollo i2c, inoltre ha il pin17 che serve per collegare un ricev/dem. IR (come dopo vedremo).
Per altre informazioni a riguardo consultare le mie pagine (e in seguito per dubbi commentate):
 

 

 
 
Il display a 7 segmenti con catodo comune è un componente elettronico che permette di visualizzare le 10 cifre numeriche (ed anche alcune lettere) attraverso l'accensione combinata di sette segmenti luminosi, formati internamente da LED. In questo caso è stato utilizzato di tipo catodo comune (CC, GND) per visualizzare i numeri da 1 a 6.
 
 
 
Schema elettrico
 
 
Nel circuito si nota che è stata messa una resistenza da 4k7 per evitare malfunzionamenti dovuti alla funzione reset, poi sono state aggiunte 2 resistenze per collegare al meglio l'interruttore al uC e infine le resistenze da 330 ohm per i LED presenti nel display.
 
PCB
 
Scaricabile qui
 
Sviluppo e descrizione

Ovviamente, questo dispositivo ogni qual volta si preme il pulsante genera un numero causale da 1 a 6 (estremi compresi) e visualizzarlo su un display a 7 segmenti.
Prima di tutto ho fatto lo schema elettrico e poi ho realizzato una tabella dove ho elencato per ogni numero quali pin attivare (attivo alto):
 
 

Numero

a (0)

b (1)

c (2)

d (3)

e (4)

f (5)

g (6)

1

 

X

X

 

 

 

 

2

X

X

 

X

X

 

X

3

X

X

X

X

 

 

X

4

 

X

X

 

 

X

X

5

X

 

X

X

 

X

X

6

X

 

X

X

X

X

X

 
 
 
inseguito sono passato al software, inizialmente avevo trovato questa soluzione qui:


Software (1)
#picaxe18x
main: pause 50
      inc b0
      if b0=0 or b0>6 then mass
      if pin0=1 then out
      goto main
mass: b0=0
      goto main
out: if b0=1 then high 1,2 end if
     if b0=2 then high 0,1,3,4,6 end if
     if b0=3 then high 0,1,2,3,6 end if
     if b0=4 then high 1,2,5,6 end if
     if b0=5 then high 0,2,3,5,6 end if
     if b0=6 then high 0,2,3,4,5,6 end if
pause 5000
low 0,1,2,3,4,5,6
goto main 
 

questo software era molto semplice: incrementava ogni ciclo la variabile b0, quindi la label main (con mass), tramite alcuni accorgimenti, era un contatore da 1 a 6 e poi verificava quando veniva premuto il pulsante. Il software poi continuava visualizzando il numero generato per 5 secondi e in seguito tornava alla label principale.
Questo software funzionava bene però non si basava molto sul concetto della probabilità in quanto in ogni caso i numeri venivano generati tramite un incremento (abbastanza lento). Per questo ho cercato di trovare un'altra soluzione più accettabile.
Inseguito grazie alla prima conoscenza del comando "random" ho realizzato un nuovo software:
 
 
Software (2)
  
#picaxe18x
main: pause 20
      random b0  ;genera un numero a caso
      if pin0=1 then out
 
goto main 
out:if b0<=41 then uno
    if b0<=83 then due
    if b0<=125 then tre
    if b0<=167 then quattro
    if b0<=209 then cinque
    if b0<=251 then sei
    if b0>=252 then main
goto main
 
 
uno: high 1,2 goto temp
due: high 0,1,3,4,6 goto temp
tre: high 0,1,2,3,6 goto temp
quattro: high 1,2,5,6 goto temp
cinque: high 0,2,3,5,6 goto temp
sei: high 0,2,3,4,5,6 goto temp
 
 
temp: pause 5000
      low 0,1,2,3,4,5,6
goto main
 
questo software si basa appunto sulla routine "random", questo comando serve a generare un numero a caso da 0 a 255. Quindi come prima cosa per fare in modo che la probabilità che esca un numero sia uguale a la probabilità che esca un qualsiasi altro numero (da 1 a 6); cioè tutte le probabilità devono essere uguali, ho fatto 266/6=42.6 in questo modo ho impostato sei disequazioni, le quali mi definiscono che per ogni insieme (formato da 42 numeri) viene considerato un valore da 1 a 6. Infatti come si nota dal software: tutti i numeri compresi/uguali tra/a 0 e/o 41 equivalgono a 1, ecc..
Il software poi  continuava visualizzando il numero generato per 5 secondi e in seguito tornava alla label principale. Questo software era molto più completo del precedente e funzionava anch'esso bene, però ci ho voluto dare il "colpo di classe": aggiungere uno scorrimento dei numeri prima della visualizzazione!!!
Quindi mi sono messo all'opera e ho realizzato questo software:
 
Software (3)
#picaxe18x
asp: if pin0=1 then main
goto asp
main: pause 100
      inc b1
      if b1= 10 then temp
      low 0,1,2,3,4,5,6
      random b0  ;genera un numero a caso
      if b0<=41 then uno
      if b0<=83 then due
      if b0<=125 then tre
      if b0<=167 then quattro
      if b0<=209 then cinque
      if b0<=251 then sei
      if b0>=252 then main
goto main
 
uno: high 1,2 goto main
due: high 0,1,3,4,6 goto main
tre: high 0,1,2,3,6 goto main
quattro: high 1,2,5,6 goto main
cinque: high 0,2,3,5,6 goto main
sei: high 0,2,3,4,5,6 goto main
 
temp: let b1=0
      pause 5000
      low 0,1,2,3,4,5,6
goto asp
questo software è simile al precedente solo sono state fatte delle modifiche in modo da avere l'effetto scorrimento/visualizzazione durante la generazione del numero. Quindi la label "asp" attende che viene pigiato il pulsante, se viene pigiato passa a label "main", la quale non solo genera il numero, ma esegue l'effetto scorrimento/visualizzazione (passando anche sulle label "numeriche": uno, due, ecc...). Infine visualizza il numero generato per 5 secondi e ritorna ad attendere quando verrà premuto il pulsante.
 
Tutti i software (1, 2, 3) che ho riportato sono compatibili con il circuito inizialmente illustrato.
 
Mentre gli accorgimenti/modifiche che riporto successivamente vengono eseguite partendo dal software 3.
 
Purtroppo i cerco sempre di aggiungere altri particolari e modifiche,  ne cito solo 2, la prima per esempio di aggiungere un cicalino o altoparlante al circuito iniziale, in questo modo:
 
 
 
e modificare nel programma la label "temp" così:
 

temp: sound 7, (100,50)

      let b1=0

      pause 5000

      low 0,1,2,3,4,5,6

goto asp

apportando queste 2 modifiche è possibile sentire un effetto sonoro (beep) quando viene visualizzato il numero.
La seconda modifica che si può aggiungere è quella di eliminare il pulsante dal circuito e rendere il dispositivo pilotabile con un telecomando TV Sony, infatti modificando i software così (apportando anche la modifica del suono):

 Software (4)

#picaxe18x
asp: infrain2
if infra=21 then main
goto asp
 
main: pause 100
      inc b1
      if b1= 10 then temp
      low 0,1,2,3,4,5,6
      random b0  ;genera un numero a caso
      if b0<=41 then uno
      if b0<=83 then due
      if b0<=125 then tre
      if b0<=167 then quattro
      if b0<=209 then cinque
      if b0<=251 then sei
      if b0>=252 then main
goto main
 
uno: high 1,2 goto main
due: high 0,1,3,4,6 goto main
tre: high 0,1,2,3,6 goto main
quattro: high 1,2,5,6 goto main
cinque: high 0,2,3,5,6 goto main
sei: high 0,2,3,4,5,6 goto main
 
temp: sound 7 (100,50)
      let b1=0
      pause 5000
      low 0,1,2,3,4,5,6
goto asp

mentre al circuito bisogna togliere la parte riguardante il pulsante e aggiungere questo circuito:

facendo queste modifiche è possibile pilotare il dispositivo tramite il telecomando TV Sony premendo semplicemente il pulsante "Power"!

 
Foto realizzazione
 
 
Video realizzazione
 

 
 
Mi sembra di aver scritto tutto!
Grazie per l'attenzione!
Info e dubbi commentate o MP!
 
Volevo fare un saluto e un ringraziamento speciale ad un mio caro amico:
53RG10 (l'avatar cha ha su questo sito),
che mi ha consigliato alcuni aspetti del software
e sostenuto nel collaudo. Grazie mille Sergio!!!

Login Form

Elettronica Open Source