2020/08/03

Principi di cannibalizzazioni

Ho trovato le cuffiette che usavo con un vecchio walkman Sonoko e ho pensato di fare bottino degli auricolari e del jack. Così ho provato pure il saldatore e posso confermare che funziona (come del resto sapevo già)

2020/08/02

Sintetizzatore e suonatore

In un post precedente ho finalmente alimentato il sintetizzatore provando la cosa più ovvia, cioè l’USB del nanuino (o come volete chiamarlo). Avevo però dei dubbi perché si accendono delle luci che non ricordavo di aver visto accese.

Più volte ho anche detto che non avevo mai prestato la dovuta attenzione a come stessero le cose quando lo suonava: a cosa era attaccato? Ricordavo vagamente solo l’uscita audio.

2020/08/01

Prima della tastiera

Prima che gli regalassimo la tastiera il sintetizzatore aveva alcuni tasti, scomodissimi, con i quali provava a fare i primi accordi. Ho trovato una foto nella quale si vede la versione del sintetizzatore prima della tastiera.

2020/07/05

Un gioco che sembra facile…

Mi sembra un’idea semplice che persino io dovrei riuscire a realizzare: una pulsantiera per prenotare il turno di un gioco che accetta fino a 4 giocatori (squadre).

Immagino uno scatolotto che ha 4 ingressi, ai quali è possibile attaccare, tramite un filo lungo (niente bluetooth…), i pulsanti (con impugnatura ergonomica… o no). In corrispondenza di ogni ingresso due LED: uno per testimoniare il funzionamento del pulsante e un altro per indicare il “vincitore”.

Un display (4 cifre da 8 segmenti) sullo scatolotto indica il tempo (in millisecondi…). Un tastino sullo scatolotto permette di selezionare e mostrare il tempo degli altri pulsanti (i perdenti). Un quinto pulsante serve per inizializzare/avviare il temporizzatore ed è in mano al “mastro di gioco” — cioè per esempio chi legge la domanda, o un operatore incaricato di questo compito una volta che il presentatore ha letto la domanda (o quel che sia nel gioco).

Come timer dovrei usare il 555, e serve un contatore che “manda” i conteggi a N latch che latchano solo quando il giocatore preme il corrispondente bottone (solo il reset fatto dal mastro di gioco li può sbloccare). Dei comparatori possono essere usati per far sì che si accenda il LED del più veloce, e il display visualizzerà il suo tempo. Un pulsante consentirà di vedere a che tempo si sono “latchati” gli altri.

Sto immaginando un progetto digitale, come si può intuire.

Con 4 posso arrivare a 9999 millisecondi, ma facciamo che invece il massimo sia tale che siano sufficienti 12 bit. Mi servono contatori a 12 bit, e per ogni “pulsante” deve essere possibile memorizzare questi 12 bit.

Usando un flip-flop D, ne servirebbero 12×4… usando 74LS74 che ne contiene 2, servirebbero 24 di questi componenti… Usando un 74LS273 che ne contiene 8, ne bastano 6. Dopodiché serve un componente per poter selezionare quale valore deve visualizzare il display, e quindi poi serve un qualcosa che decodifichi questo valore in modo adatto per un display costituito da 4 cifre di otto segmenti ciascuna (dovrebbero essere solo sette: non sono interessato il punto: il numero visualizzato è espresso in millesimi).

Poi come detto mi serve un componente (o un blocco) per contare (un contatore) fino a 212: sarà il timer (555?) a far incrementare ogni volta questo contatore, che poi sarà resettato dal pulsante del mastro di gioco.

I 12 flip-flop D di un pulsante bloccano il valore fornito da questo contatore quando il pulsante viene premuto. (Ogni seconda pressione del tasto non deve avere effetto, quindi non serve debounce?)

Il primo flip flop D che “scatta” deve far partire un altro conteggio? Il timer va ancora per qualche ciclo, in modo che gli altri abbiano tempo per premere, se premono. Se non premono il valore indicato dovrà essere il massimo (tutte e 12 le linee su).

Servono condensatori e resistenze adeguate per far sì che il timer dia un impulso al millisecondo. La precisione non è essenziale, visto che si procede per differenze.

Dei comparatori non credo che servano: si può fare una logica per cui il primo flip-flop a bloccare un valore è anche il vincitore.

Dopo che il primo ha premuto il pulsante, quanti “cicli” (millisecondi) devono passare? Ovvero, dato un evento a cui N persone devono reagire, qual è la “variabilità” della reazione. (Al di là del termine statistico corretto: mi interessa sapere quanti ms ha senso aspettare prima di rinunciare definitivamente a “sentire” anche la pressione degli altri bottoni.

Raggiunto questo limite, la “memoria” dei vari pulsanti non premuti viene portata tutta su, in modo che sul display mostrino il massimo. (Il valore massimo può essere visualizzato in modo speciale, per esempio con tutte “lineette” invece che con il valore effettivo.)

Ricapitolando i componenti per ora:

  • condensatori, resistenze (da contare)
  • 1 × timer 555…
  • 6 × 74LS273
  • 8 × LED
  • 7 × pulsanti (uno in più di quanto detto prima perché voglio un reset esplicito…)
  • 1 × display (questo?

Ma non è finita: il display è tale per cui accende solo una cifra per volta. Quindi occorre passare rapidamente da una cifra all’altra (abbastanza rapidamente da non far vedere che si spegne). Forse si può usare sempre il timer (che quindi non si ferma mai in realtà) per selezionare a rotazione le cifre.

  • 1 × 74HC595 (shift register)

E poi: come converto il numero binario rappresentato dalle 12 linee in un numero a base 10 e dunque in 7×4 (numero delle cifre) linee che, una per volta, vanno ad accendere le cifre del display?

Finisce che sarebbe molto più facile e forse anche economico progettare il tutto con un µC adeguato (ATmega usato da papà mi sembra un po’ eccessivo per un progetto simile: basta e avanza un µC molto più elementare).

Ma proseguendo la strada dell’idea iniziale (solo componenti passivi e componenti digitali “elementari”)… mancano due componenti/blocchi:

  • convertitore 12-bit a decimale (BCD × 4 cifre)
  • multiplexer (deve selezionare 4 gruppi di 12 linee in ingresso e uscire con le 12 linee selezionate)

Le 12 linee selezionate dal multiplexer vanno al convertitore 12-bit a decimale BCD, che in qualche modo va al display (una cifra per volta a rotazione)

Mancano ancora parecchi componenti mi sa, se voglio evitare, come in effetti voglio, µC. Altrimenti: rinunciare all’idea di memorizzare i millisecondi e permettere di visualizzarli. Cioè, detta altrimenti, uno si deve fidare della macchina e basta: il circuito accenderà il LED di chi è arrivato prima e questa prima “attivazione” va a bloccare la possibilità di accensione dei LED degli altri giocatori, dando quindi contezza di chi sia il vincitore.

Per 12-bit a 4 cifre BCD, cfr. pure questo forum in cui un commentatore in effetti suggerisce l’uso di µC… (Lui 16-bit… basta tenerne 4 sempre a 0 si può riciclare la soluzione.)

Senza usare un µC il progetto è più “dispendioso”.

Ho buttato alcuni dei componenti alla rinfusa in KiCad, tanto per avere un’immagine per questo post:

Visto che il progetto è semplice ma nello stesso tempo presenta delle “complicazioni” interessanti, forse lo continuo davvero.

Fritzing?

In questo video lo schema è marcato Fritzing, e quindi suppongo che l’immagine della breadboard sia pure generata con Fritzing, e mi sembra più 2D-osa… :think: Ma forse solo perché non compaiono componenti con lunghi piedini (il disegno delle resistenze e dei circuiti integrati è ok…)

Il testo associato dovrebbe essere questo: Arduino lesson – 4 Digit 7 Segment LED Display.

2020/07/04

Fritzing e condensatori ingombranti

Volevo provare a riportare la breadboard su Fritzing che sembra molto carino e tutto, ma ho scoperto, con un pizzico di disappunto, che l’aspetto “3D” intralcia non poco il posizionamento dei componenti e che non c’è una vista 2D (dall’alto). Una vista “piatta”, ma ancora grafica e non schematica, sarebbe più pratica, almeno per i miei scopi e il mio utilizzo. O per le mie capacità visuali: come al solito preferisco le codifiche “testuali”, per cui stavo pensando di scrivere la breadboard con un linguaggio ad hoc da inventare (un DSL in ruby o in lisp?) che descriva la breadboard e che nello stesso tempo, dopo aver scritto l’opportuno codice, consenta di generare un file nel formato di Fritzing e uno nel formato di KiCad, ecc. Insomma, output ad libitum, a patto di spendere tempo per capire le specifiche dei formati e per scrivere il relativo codice generatore.

(Nell’immagine c’è il tentativo di riprodurre la breadboard di un progetto su Make Electronics), interrotto nel tentativo di limitare l’ingombrante presenza coprente dei condensatori.

Ci sarà un modo di ovviare al problema? Esistono componenti 2D? Dalla lettura rapida di commenti un qualche forum sembra che la risposta sia sì, ma ad oggi non ho trovato niente di usabile con impegno zero.

2020/07/02

Lavori del passato

Scavando tra i documenti si trovano carte che a volte ricordano informazioni dimenticate, altre volte invece ne danno delle nuove.

2020/07/01

Beethoven, Schubert e Chopin tra i circuiti

Prendeva gli appunti su qualunque pezzo di carta fosse a portata di mano.

In quest’immagine ci sono un paio di appunti di circuiti e opere classiche…

2020/06/29

Caricatori alternativi

Nell’arco del tempo siamo passati da un telefono fisso “classico” a un fisso “moderno”, in comodato d’uso (Telecom), e poi ai telefoni portatili, il primo dei quali fu quello fornito da Tele2. Successivamente cambiammo compagnia, il telefono di Tele2 (abbondantemente ripagato) non fu richiesto indietro, e perciò lo usammo finché si poté usare.