Apri/Chiudi


Lo sconvolgente esperimento di Stern e Gerlach

18 gennaio 2010 , di Boliboop

Si dice spesso che il problema della fisica moderna, e in particolare della meccanica quantistica, sia quello di occuparsi di cose, e trarre conclusioni, al di fuori dell’esperienza comune. Conseguenza sarebbe il non poter capire i principi fondamentali se non dopo studi approfonditi.

Esiste però un esperimento, che fu realizzato nel 1922, che mostra in modo drammatico l’inadeguatezza della fisica classica a spiegare fenomeni che sì coinvolgono gli atomi e le particelle, ma sono di facile intuizione anche per i non addetti ai lavori, poiché coinvolgono concetti come il campo magnetico e poco più.

Ciò che sconvolge di questo esperimento è il modo con cui, in pochi passaggi, ci si renda conto che la Realtà è intimamente molto differente dalla nostra percezione classica (o, per meglio dire, intuitiva). Abituati fin da piccoli a vedere fenomeni che coinvolgono oggetti della nostra stessa scala, non possiamo far altro che sorprenderci quando davanti a noi avviene qualcosa totalmente in contrasto con le nostre convinzioni.

E qui che si incastona a perfezione l’esperimento di Stern e Gerlach, dal nome dello scienziato che lo ideò nel 1921 e dello scienziato con il quale il primo collaborò per realizzarlo, l’anno successivo.

L’esperimento

L’esperimento si suddivide in più fasi, da ognuna delle quali si possono trarre conclusioni molto interessanti.

Si comincia col prendere un forno che vaporizzi una certa quantità di atomi di argento. Questo forno è provvisto di un foro dal quale esce un fascio di atomi di argento. Il motivo della scelta dell’argento è legato principalmente al suo peso molto grande e dal fatto che tutti gli elettroni sono distribuiti in una nube simmetrica attorno al nucleo, tranne uno, il quale è il responsabile del 99,8% del momento angolare intrinseco dell’atomo.

Questo momento angolare intrinseco è anche chiamato spin e, per gli oggetti macroscopici, corrisponde ad una massa che ruota su se stessa, come ad esempio la Terra che ruota attorno al suo asse. Nel caso dell’elettrone, il suo spin fa sì che l’intero atomo di argento possa essere deviato dalla propria traiettoria se viene fatto passare attraverso un campo magnetico.

Se il magnete è disposto lungo l’asse z allora sarà la componente S_z dello spin a determinare la deviazione della traiettoria. Di fronte viene posto uno schermo che rileva la posizione di arrivo degli atomi di argento e, quindi, misura la deflessione della loro traiettoria dovuta al campo magnetico.

Fase 1

Ecco uno schema di questa prima fase dell’esperimento:

Già in questo primo step dell’esperimento di Stern e Gerlach si hanno risultati totalmente in disaccordo con la meccanica classica. Infatti ci si aspetterebbe che gli atomi di argento si distribuiscano sullo schermo su tutti i valori compresi fra lo spin massimo e quello minimo. Invece otteniamo solo due gruppetti di atomi corrispondenti (a meno di una costante che tralasciamo) ai valori 1/2 e -1/2. Dal momento che l’agitazione termica nel forno mescola casualmente gli atomi di argento, questi due gruppetti contengono un numero uguale di atomi di argento.

Si può quindi affermare che, dopo questo primo passo dell’esperimento, invece di spalmare gli atomi sullo schermo, misurandone per ognuno un diverso valore di spin fra gli innumerevoli disponibili, abbiamo due soli risultati possibili che chiameremo S_{z^+} ed S_{z^-}. Questo fenomeno fu chiamato quantizzazione spaziale.

Già di fronte a questo risultato la fisica classica potrebbe crollare davanti a noi, dal momento che non esiste nessuna spiegazione senza ricorrere ad una nuova fisica, appunto la meccanica quantistica.

Ma passiamo seconda parte.

Fase 2

In questa fase non facciamo altro che aggiungere un secondo magnete, questo orientato lungo l’asse x che, attraversato da uno dei due fasci, mentre l’altro viene bloccato, devia le traiettorie degli atomi di argento in base alla componente S_x del loro spin (nel disegno S_{z^+}, ma il discorso non cambia se avessimo scelto S_{z^-}).

Come nel caso precedente, il fascio si divide in due di uguale intensità ma non si apre a ventaglio come classicamente ci si aspetterebbe.

Fase 3

Nell’ultima fase aggiungiamo un terzo magnete orientato, come il primo, lungo l’asse z e lasciamo che sia attraversato da uno dei due fasci usciti dal secondo magnete. Nel nostro esempio abbiamo prima selezionato gli atomi con spin S_{z^+} e poi, da questo, quelli con S_{x^+}. Anche in questo vaso la nostra particola scelta non ha nulla di speciale.

Ci si aspetterebbe che da questo terzo magnete fuoriescano solo atomi con S_{z^+} poiché quelli con S_{z^-} sono stati bloccati subito dopo il primo magnete…

E invece quelli che otteniamo sono ancora due fasci di uguale intensità, uno di atomi con S_{z^+} e l’altro con S_{z^-}.

Interpretazione dei risultati

Come è quindi possibile che ricompaia la componente spin S_{z^-} se gli atomi corrispondenti li avevamo completamente eliminati? Per ottenere i due fasci finali dobbiamo ammettere che il fascio che entra nel terzo magnete non è composto solo da atomi con S_{z^+} e S_{x^+}.

L’unica spiegazione è che la selezione del fascio S_{x^+} (ad opera del secondo magnete) cancella qualsiasi precedente informazione su S_{z}.

Selezionare un fascio e bloccarne un altro significa sostanzialmente effettuare un’operazione di misura ma, secondo la meccanica quantistica (e questo esperimento lo dimostra), S_{z} e S_{x} non sono contemporaneamente determinabili. Da cui l’importante conclusione la misura di una grandezza fisica distrugge qualsiasi informazioni sulla misura precedente fatta su una grandezza fisica quantisticamente incompatibile, indipendentemente dalla perizia con cui viene condotto un esperimento.

Oltre alle componenti dello spin, si possono citare fra le grandezze incompatibili le coppie quantità di moto e posizione, energia e tempo.

Come già visto, è altrettanto importante è il fatto che, contrariamente allo spin di una trottola meccanica, i valori del momento angolare intrinseco di una particella non può assumere tutti i valori intermedi tra un minimo e un massimo ma, in questo esempio, solo due.

Questi concetti mettono totalmente in crisi qualsiasi tentativo classico di interpretazione della Realtà e l’esperimento di Stern e Gerlach, da cui emergono così chiaramente, si può ritenere uno degli esperimenti fondanti della meccanica quantistica.

Articoli correlati:

  1. Connessione difficoltosa? Ci pensa il Windows Network Problem Solver
  2. Google MyMaps: finalmente!
  3. Un effetto tunnel, un pizzico di radioattività, qualche gatto di scorta e un po’ di fisica ma non troppa
Tags: , , , , ,

Quando una funzione d’onda collassa

12 gennaio 2010 , di Boliboop

Quando ho parlato di effetto tunnel e del gatto di Schroedinger ho nominato spesso la funzione d’onda e del suo quadrato, interpretabile come la probabilità.

Quello che è importante sottolineare è che la funzione d’onda non è direttamente osservabile ma sono osservabile le sue conseguenze. Infatti ciò che, si potrebbe dire, determina il valore di una grandezza fisica è solo il processo di misura. Per questo la funziona d’onda del gatto era sospesa fra 1/2 vivo e 1/2 morto, prima che si fosse aperta la scatola.

Senza addentrarci nei dettagli del formalismo matematico usato, per tutti i possibili valori che una grandezza fisica può avere per un dato sistema (ad esempio il valore del momento angolare di una particella), la funziona d’onda prima di un’osservazione deve contenere, secondo le rispettive probabilità, tutti i valori possibili. Una volta effettuato il processo di misura, la funzione d’onda muterà istantaneamente in modo da contemplare, con il 100% di probabilità, solo il valore misurato.

Con un esempio: se una certa grandezza fisica G può assumere solo valore a, b o c con uguale probabilità, allora la funzione d’onda del sistema sul quale si sta per compiere la misura di G, si scriverà concettualmente in questa forma:

\psi = \frac{1}{3} a + \frac{1}{3} b + \frac{1}{3} c

quando poi la misura verrà effettuata, ottenendo ad esempio b, la funzione d’onda si scriverà

\psi = \frac{3}{3} b = b

ovvero tutti i possibili valori della grandezza fisica collasseranno sull’unico valore effettivamente misurato. Questo fenomeno è istantaneo ed è noto come collasso della funzione d’onda.

Anche nell’effetto tunnel si parla di collasso della funzione d’onda se, fermata l’animazione (qui sotto riprodotta), si dovesse trovare l’elettrone in un dato punto della nuvoletta di probabilità

In altre parole, quando un sistema quantistico interagisce con uno strumento di misura (che è sempre macroscopico), è come se le leggi della meccanica quantistica si riducessero alla meccanica classica, meccanica in cui gli oggetti sono ben definiti e sono sempre al di qua o al di là di una barriera energetica, senza sfumature.

Dal momento che le particelle sono trattate in meccanica quantistica come pacchetti d’onda che si evolvono seguendo l’equazione di Schroedinger, il passaggio dal regime quantistico e quello classico avviene secondo questo collasso della funzione d’onda forse, a sua volta, conseguenza del fenomeno chiamato decoerenza. La decoerenza è l’impossibilità da parte di diverse porzioni di una stessa onda di interferire tra loro, a causa dell’interazione con il mondo macroscopico, ovvero una misura in senso lato.

Articoli correlati:

  1. PHP: eliminare i tag HTML da un testo
  2. Come far saltellare l’icona di Mail quando si riceve posta
  3. Modificare le impostazioni di php.ini
Tags: , , ,

Le particelle elementari non esistono

10 gennaio 2010 , di Boliboop


In un periodo in cui, grazie al recente riavvio dell’LHC, la comunità scientifica sta riscoprendo la corsa alle energie sempre più elevate, con le quali far collidere le particelle nucleari (al fine di indagarne le strutture interne e scoprire i mattoni fondamentali della materia), può sembrare assurda una affermazione come quella del titolo: le particelle elementari non esistono.

Si tratta però non di una provocazione ma di una considerazione che viene spontanea mettendo insieme i vari principi fondamentali e le definizioni comunemente accettate in Fisica.

Innazitutto una particella elementare, ovvero una particella che fa parte del novero di quelle che costituirebbero i mattoni fondamentali della materia, dovrebbe, per definizione, non avere costituenti interni.

Sembra una affermazione banale ma non avere costituenti interni significa anche non avere struttura interna, perché se si ha struttura si ha anche parte interne, quindi avere volume nullo ed essere puntiforme.

Sono singolarità dello spaziotempo?

Ma una particella dotata di massa, carica elettrica (o di qualunque altro tipo), dunque una particella dotata di un contenuto di energia, ma puntiforme, senza volume, dovrebbe avere una densità di massa, di carica elettrica e di energia infinite. Ma questo costituirebbe una singolarità dello spaziotempo, ovvero una specie di strappo nel tessuto a 4 dimensioni che costituisce l’universo stesso, un punto non descrivibile correttamente e completamente tramite le leggi della Fisica.

Anche nella Relativtà Generale di Einstein una singolarità dello spaziotempo non è una cosa positiva per una teoria scientifica, poiché l’infinito è sempre un segnale che ci ricorda che c’è qualcosa della Realtà che sfugge alla nostra completa comprensione.

Le più famose singolarità dello spaziotempo sono i buchi neri, oggetti che costituiscono lo stadio finale dell’evoluzione di una stella massiccia, in cui tutta la massa è caduta nel centro, raccogliendo così la materia in un singolo punto.

Immaginare che ogni molecola, atomo o particella non elementare contenga al suo interno un certo numero di punti con massa e energia infinita, proprio come la singolarità dello spaziotempo chiamata buco nero, sembra una assurdità.

Certo è vero che le singolarità dei buchi neri sono occultate alla vista dei noi osservatori umani poiché si interpone il cosiddetto orizzonte degli eventi: una superficie dal cui interno non può uscire nulla, luce compresa, e che quindi ci preclude qualsiasi osservazione della singolarità. Tecnicamente qualsiasi porzione di spaziotempo non osservabile è da considerarsi al di fuori dall’Universo.

In questa similitudine, allora, l’unico modo per ammettere l’esistenza delle particelle elementari sarebbe quella di considerarle singolarità al di fuori del nostro universo, ricoperte da un orizzonte che dona loro un volume apparentemente non nullo, ma senza però la scocciatura della distorsione spaziotemporale che da descrivere i buchi neri come delle voragini inghiotti-materia.

Insomma, a mio parere, qualcosa non quadra.

Sono scatole cinesi?

La soluzione, se così si può dire, sarebbe ammettere che non esiste un mattone fondamentale della materia ma che più alte sono le energie a cui lavorano i nostri acceleratori, più particelle verranno create dalla distruzione delle particelle già esistenti.

In pratica si tratterebbe di un gioco di scatole cinesi in cui le molecole sono formate da atomi, che sono formati da nuclei ed elettroni, i nuclei sono formati da protoni e neutroni che sono formati da quark che sono formati dalle prossime particelle che, grazie alle altissime energie, verranno liberate/create dal guscio dei quark.

Ovviamente questa è una speculazione che sembra non fare altro che eliminare il problema dell’infinita energia di una particella puntiforme e quindi veramente elementare, creando quello delle infinite particelle costituenti la materia.

Attualmente il già citato LHC può portare protoni fino al 99,9999991% della velocità della luce, ma sappiamo che il 100% non è raggiungibile da particelle dotate di massa, mentre è raggiunto spontaneamente dalle particelle senza massa (come i fotoni, appunto). Per una particella dotata di massa, la velocità della luce è raggiungibile solo grazie ad una energia infinita e questo significa che, per ora, non c’è un limite superiore alle energie che possiamo dare ad una particella, se non i limiti tecnologici.

Si tratterebbe quindi proprio di una corsa infinita alle particelle che costituiscono le particelle appena scoperte come costituenti di qualche altra particella… e così via.

Obiettivi di una ricerca senza fine

Ma a cosa servirebbe indagare i costituenti della materia se fosse davvero una ricerca senza fine? Come spesso accade nella ricerca scientifica, non si esplorano i limiti della Fisica se non per indagare anche qualche altro aspetto. In questo caso tentare di scoprire i costituenti della materia è anche una scusa per ricreare le condizioni di energia presenti nei primi istanti del Big Bang, l’origine dell’Universo: comprendere meglio l’evoluzione dei primi secondi di questa gigantesca espansione ci permetterà anche di capire perché ora l’universo è così come lo osserviamo (qui le altre finalità scientifiche dell’LHC).

Ovviamente anche l’Universo stesso, all’istante zero, era una singolarità dello spaziotempo: tutta l’energia e la massa dell’Universo in un singolo punto di cui, ovviamente, non sappiamo nulla.

Articoli correlati:

  1. Piccola guida alla previsione metereologica
  2. LiquidMac: aiuto, mi si è allagato il portatile!
  3. Un effetto tunnel, un pizzico di radioattività, qualche gatto di scorta e un po’ di fisica ma non troppa
Tags: , , , ,

Un effetto tunnel, un pizzico di radioattività, qualche gatto di scorta e un po’ di fisica ma non troppa

6 gennaio 2010 , di Boliboop

Un modo efficace per spiegare quanto sia stupefacente la fisica è quello di parlare della meccanica quantistica, e uno dei fenomeni quantistici più controintuitivi (quindi più intrigante ma realmente esistente) è il cosidetto effetto tunnel.

Cos’è l’effetto tunnel

In poche parole l’effetto tunnel è ciò che consente ad un elettrone di superare una barriera di energia anche se non possiede l’energia sufficiente per superarla. E’ come se una pallina da tennis, lanciata contro un muro, ad un certo punto passasse oltre il muro senza ovviamente averlo sfondato.

Dal momento che la probabilità che l’elettrone superi la barriera energetica senza avere l’energia sufficiente per farlo è molto bassa, la probabilità che tutte le particelle della pallina da tennis attraversino contemporaneamente il muro, pur non avendo l’energia per sfondarlo, è estremamente bassa. Diciamo che potremmo giocare a pelota per miliardi di anni senza ottenere alcun attraversamento. Ma essendo una questione puramente probabilistica, potremmo riuscirci anche al primo colpo.

Vediamo l’effetto tunnel

Alla voce effetto tunnel su Wikipedia è visualizzabile questa illuminante animazione:

Si tratta dell’evoluzione della probabilità di un elettrone di trovarsi in un dato punto quando questo incontra una barriera di energia. Questa animazione non mostra una nuvola di elettroni che viene trasmessa in piccola parte oltre la barriera, ma la probabilità di un singolo elettrone che questo venga trasmesso, pur non avendo l’energia che (secondo la fisica classica) dovrebbe avere per superare la barriera.

Questo significa che l’elettrone in questione ha molta probabilità di rimbalzare (nuvoletta più densa) ma può, in un dato istante e apparentemente in barba alla conservazione dell’energia, anche superare una barriera di energia (nuvoletta più tenue).

Per essere un po’ più precisi non si dovrebbe parlare di probabilità di trasmissione (o attraversamento) ma più semplicemente di probabilità che l’elettrone si trovi oltre la barriera, visto che, a causa del Principio di indeterminazione, non è possibile osservare l’elettrone mentre attraversa la barriera, ma solo subito prima e subito dopo averla attraversata.

Assurdo, vero?

E invece no. Potrei dirvi che sono cose che riguardano solo il mondo della fisica delle particelle ma in realtà esistono dei diodi (componenti utilizzati anche in un alcuni computer) che funzionano grazie all’effetto tunnel, come pure alcune memorie flash, e anche il Sole è una dimostrazione dell’esistenza di questo fenomeno apparentemente assurdo: se non ci fosse l’effetto tunnel la nostra amata stella non sarebbe abbastanza calda da mantenersi accesa…

Radioattivià

E non solo, il decadimento alfa, responsabile della radioattività naturale dell’uranio (ad esempio) è una conseguenza diretta dell’effetto tunnel. Le particelle nucleari (protoni e neutroni) subiscono le forze di attrazione che tengono unito il nucleo degli atomi (forze che evitano che la materia di cui è composto questo display si dissolva nell’aria). Se però un gruppetto di queste particelle nucleari, appunto una particella alfa, sfugge alle forze nucleari grazie al raro e imprevedibile effetto tunnel, ecco che l’uranio diventa piombo ed è spiegata la radioattività (grazie Gamow, ti amiamo).

Sappiamo dunque che l’istante in cui viene rilasciata una particella alfa non è prevedibile ed è anche un fenomeno raro. Per questo, in riferimento ad un elemento radioattivo, si parla di vita media: si può sapere solo per quanto tempo in media un atomo di uranio rimarrà uranio, ovvero in quanto tempo decadrà emettendo una particella alfa. Calza a pennello con ciò che sappiamo dell’effetto tunnel: è un effetto con basi probabilistiche (quindi sappiamo che può avvenire ma non sappiamo quando) ed è piuttosto raro. Possiamo però stabilire ogni quanto tempo, in media, una particella riuscirà a superare una data barriera di energia.

Gatti

Ed arriviamo ai gatti. l’effetto tunnel è intimamente legato ad un famoso esempio usato spesso per illustrare le meraviglie del mondo quantistico, forse il più famoso esperimento mentale della storia della fisica. Si tratta del gatto di Schroedinger.

Un piccolo passo indietro. Quando in fisica quantistica si parla di probabilità si tratta sempre di un calcolo fatto prima che venga effettuata una misura. In poche parole l’elettrone ha una certa probabilità di essere al di qua o al di la della barriera, ma solo dopo l’osservazione e il processo di misura sapremo se è qui o lì.

Ecco cosa scrisse Schroedinger qualche annetto fa:

Si possono anche costruire casi del tutto burleschi. Si rinchiuda un gatto in una scatola d’acciaio insieme con la seguente macchina infernale (che occorre proteggere dalla possibilità d’essere afferrata direttamente dal gatto): in un contatore Geiger si trova una minuscola porzione di sostanza radioattiva, così poca che nel corso di un’ora forse uno dei suoi atomi si disintegra, ma anche in modo parimenti verosimile nessuno; se ciò succede, allora il contatore lo segnala e aziona un relais di un martelletto che rompe una fiala con del cianuro. Dopo avere lasciato indisturbato questo intero sistema per un’ora, si direbbe che il gatto è ancora vivo se nel frattempo nessun atomo si fosse disintegrato. La prima disintegrazione atomica lo avrebbe avvelenato. La funzione ψ dell’intero sistema porta ad affermare che in essa il gatto vivo e il gatto morto non sono stati puri, ma miscelati con uguale peso

Contrariamente a come comunemente ci si riferisce a questo esperimento mentale (mentale nel senso che nessuno lo ha mai realizzato), non si tratta affatto di un paradosso ma di una semplice conseguenza dell’impossibilità di stabilire la vita o la morte di un gatto senza prima averlo osservato. La funzione ψ è quella che viene chiamata funzione d’onda e il suo quadrato è la probabilità.

Tutto questo marchingegno serve solamente a trovare le condizioni tali che, dopo un’ora, la probabilità che il gatto sia vivo è il 50%, e altrettanto che il gatto sia morto. Questo è possibile proprio grazie alla bassa probabilità che l’effetto tunnel ha di verificarsi.

La catena di eventi, nell’arco dell’ora dell’esperimento, è quindi la seguente:

  1. l’effetto tunnel si verifica
  2. accade il decadimento alfa
  3. il contatore Geiger si attiva
  4. la fiala di cianuro si rompe
  5. il gatto muore

Tutto dipende se si verifica o meno l’effetto tunnel.

Articoli correlati:

  1. Quando una funzione d’onda collassa
  2. Il gatto sotto il cerchio: il perché e il per come
  3. Tutorial: testo con effetto latte
Tags: , , , , , ,

Luna blu due volte al mese, dopo i pasti

5 gennaio 2010 , di Boliboop

Ieri Paolo Attivissimo ha pubblicato l’articolo Il Corriere inaugura il festival della castroneria 2010 con la “luna blu”, in cui bacchetta giustamente il Corriere della Sera online per aver spacciato per vera una foto della Luna ritoccata di blu con Photoshop.

Dopo la Luna rossa, neologismo dai pochi anni di vita che almeno indica il colore (seppur tenue) della nostra luna parzialmente eclissata dall’ombra della Terra, ecco la Luna blu che ovviamente non diventa per niente blu, ma semplicemente è piena per due volte nello stesso mese. Trattasi forse di una anglofona associazione di idee per la quale la Luna, portatrice di sventura, forze negative e femminili (questo dice la superstizione popolare, non prendetevela con me), sarebbe blu nel senso di blue, ovvero triste in inglese.

Ma, al contrario dell’anno solare, il mese è un puro artificio umano nel senso che l’anno solare è una vera rivoluzione terrestre intorno al Sole, ma se vogliamo dividere questo anno in 12 mesi di lunghezza variabile dai 28 ai 31 giorni, lo facciamo solo per comodità (anche se ovviamente, al vicinanza della durata del mese terrestre con quelli sinodico e sidereo non è causale dal punto di vista della tradizione popolare).

Se quindi qualche simpatico ignorante si stupisce per due lune piene nello stesso mese dovrebbe, cabalisticamente parlando, stupirsi anche per due lune nuove o quarti o sesti di luna nello stesso mese o in un mese e mezzo preciso preciso.

Se non è chiaro, commentate. Grazie.

Articoli correlati:

  1. iPhone: una recensione dopo un mese d’uso in Italia
  2. Dopo la Terra e la Luna, ecco Marte
  3. Sabato 3 Marzo: l’eclissi di Luna
Tags:

Ho i pollici, voglio le dimensioni

4 gennaio 2010 , di Boliboop

Un classico quesito per chi acquista televisori, monitor, computer portatili, smartphone e tablet è quello ti riuscire a risalire alle dimensioni effettive (altezza e larghezza) a partire dai pollici, che si riferiscono sempre alla diagonale del display. In questo articolo vedremo come si fa questo calcolo.

Proporzioni

Innanzitutto non è possibile effettuare il calcolo se non si hanno anche le proporzioni. Il display di cui parliamo è widescreen 16:9, è 4:3 come i vecchi televisori a tubo catodico, oppure è 3:2 come l’iPhone? Una volta scoperto (non dovrebbe essere difficile reperire tale informazione) chiamiamo questo rapporto b:a=k, cioè base su altezza uguale ad un valore noto, cioé, ad esempio, 1,78 se il display è 16:9.
Anche se b e a sono valori adimensionali (16 e 9 sono numeri puri, senza unità di misura), la base e l’altezza in pollici (B e A) sono ovviamente nello stesso rapporto k. possiamo quindi scrivere:

k = B : A

Teorema di Pitagora

Strano a dirsi, ma per calcolare la soluzione è necessario il teorema di Pitagora.

Scriviamolo secondo i lati A e B espressi in pollici, con ipotenusa la diagonale del display C espressa in pollici:

C^2 = A^2 + B^2

Valgono quindi le seguenti

C = \sqrt{A^2 + B^2}
e
B=kA

e quindi

C = \sqrt{A^2 + k^2A^2}=A\sqrt{ k^2+1}

i valori di A e B risultano quindi essere

A = \frac{C}{\sqrt{ k^2+1}}
B= \frac{kC}{\sqrt{ k^2+1}}

espressioni in funzione degli unici due dati conosciuti: la diagonale del display C e il rapporto di proporzione k.

Come ultimo passaggio ricordiamoci che 1 pollice equivale a 2,54 cm e otteniamo

A_{cm} = \frac{2,54 \times C_{pollici}}{\sqrt{ k^2+1}}
B_{cm}= k A_{cm} = \frac{2,54 \times  k C_{pollici}}{\sqrt{k^2+1}}

Esempio

Applichiamo quindi queste formule nel caso di un display 13,3″ in proporzione 16:10 (monitor di un Apple MacBook).

k = b:a = 16: 10 = 1,6
e
sqrt{k^2+1}= 1,88

e si ha quindi

A = \frac{2,54 \times 13,3}{1,88} \simeq 18 cm
e
B = 1,8 * 1,6 \simeq 28,8 cm

Tabelle

Dal momento che i rapporti di proporzione dei display non sono poi molti, eccovi una tabella riassuntiva con i valori di k e \sqrt{k^2+1} (che indicherò con \alpha):

proporzioni k \alpha
4:3 1,33 2,77
16:9 1,78 4,16
16:10 1,6 3,56
3:2 1,5 3,25

Le formule semplificate diventano quindi:

Altezza_{cm} = \frac{2,54 \times Pollici}{\alpha}
Base_{cm}= k \times Altezza_{cm} = \frac{2,54 \times  k \times Pollici}{\alpha}

Per ottenere informazioni sugli altri rapporti d’aspetto delle immagini (sia fotografiche che video) consultate wikipedia alla voce Aspect ratio.

Articoli correlati:

  1. I nuovi MacBook Pro: più potenti e più ecologici
  2. Se per vincere devo opprimere
  3. L’incredibile fotocamera Seitz 6×17 Digital
Tags: , ,

Arduino Duemilanove: il pulsante

4 febbraio 2009 , di Boliboop

In questo nuovo articolo affronteremo la prima interazione Arduino-uomo, usando un pulsante che, quando premuto, invia un segnale ad Arduino. Il software che caricheremo, quando riceverà questo segnale, deciderà di accendere il led rosso.

Il pulsante (o pushbutton) è un componente che, quando premuto, connette due punti del circuito. Ci sono 5 pushbutton nel KIT Workshop che abbiamo acquistato all’inizio di questo viaggio alla scoperta di Arduino e ognuno di questi ha il seguente schema costruttivo:

pushbutton

In pratica i piedini A e C sono sempre connessi fra loro, così come i piedini B e D, mentre se il pulsante viene premuto, sono connessi tra loro tutti i piedini. Come possiamo utilizzare il pushbutton con Arduino? Basta seguire un tutorial, sul sito ufficiale, chiamato appunto Button e che permette di accendere un led quando viene premuto il pulsante. Ecco come si realizza.

Come si realizza questo circuito con pulsante? Colleghiamo il piedino A direttamente a terra (ad esempio uno dei pin etichettati con Gnd nella fila di pin chiamata POWER) e il piedino B prima ad una resistenza da 2.2 KOhm (ecco come è fatta) e poi all’alimentazione da 5 V. Come mostrato nello schema seguente, dobbiamo connettere il piedino B anche con il pin 2 che sarà quello che riceverà il messaggio “pulsante premuto”:

pushbuttoncircuit

Il tutorial originale spiega che la resistenza da 2.2 KOhm ha una funzione cosiddetta di pull-up che serve ad evitare che il segnare sul pin 2 fluttui quando il pin viene disconnesso dal circuito. Durante le mie prove non ho però riscontrato fluttuazioni ma piuttosto, quando ho eliminato la resistenza sostituendola con un collegamento normale, un assorbimento eccessivo di energia che ha fatto decidere al Mac di disattivare momentaneamente la porta USB a cui Arduino era collegato (con conseguente riavvio del dispositivo). Osservando il funzionamento del circuito, che illustrerò qui di seguito, ho idea che la resistenza di pull-up serva sostanzialmente a forzare un livello logico (come il nostro HIGH) quando il circuito è aperto permettendo di andare su LOW non appena si chiude il circuito. Ma vediamo in dettaglio il circuito e di seguito ne illustrerò il funzionamento e il software da utilizzare:

Arduino - pushbutton in funzione

Come funziona esattamente il circuito? Quando il pushbutton è aperto (ovvero, come abbiamo visto prima, non è premuto) non c’è nessuna connessione fra i due piedini che abbiamo usato, il piedino A e il B. In tale situazione (anche se attraverso la resistenza di pull-up) il pin 2 è connesso all’alimentazione da 5 V e quindi Arduino legge il pin ad un livello HIGH. Quando invece il pushbutton è premuto il circuito è chiuso e fra il piedino A e il B si crea una connessione, quindi il pin 2 si trova allo stesso potenziale della terra e Arduino leggerà quindi il valore LOW (ovviamente il pin 2 è ancora connesso con l’alimentazione a 5 V, ma la resistenza interposta fa sì che tale pin sia più vicino alla terra).

Viene a stabilirsi quindi la seguente corrispondenza:

  • Pulsante non premuto -> pin 2 a livello HIGH
  • Pulsante premuto -> pin 2 a livello LOW

A questo punto manca solo il codice da inviare ad Arduino, che non farà altro che ricevere il segnale dal pin 2 e reagire con una istruzione, nel nostro a caso al pin 13:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int ledPin = 13;
int inPin = 2;
int val = 0;
 
void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(inPin, INPUT);
}
 
void loop(){
  val = digitalRead(inPin);
  if (val == HIGH) {
    digitalWrite(ledPin, LOW);
  } else {
    digitalWrite(ledPin, HIGH);
  }
}

Più in dettaglio, le prime tre righe di codice dichiarano le variabili che impostano il pin 13 come collegamento al led rosso, il pin 2 come pin di entrata del segnale del pulsante, e che infine (con val) impostano il valore iniziale dello status del pin 2 (ovvero del pushbutton).

All’interno del blocco setup() avviene qualcosa di importante, ovvero viene impostato il led 13 come OUTPUT e, per la prima volta, il pin 2 come INPUT.

A questo punto, nel blocco loop(), la prima istruzione, in riga 11, non fa altro che leggere il valore di input, ovvero lo status del pulsante, tramite la funzione digitalRead().

Successivamente il blocco if controlla se il valore di input val è stato letto come HIGH e quindi accende il led rosso (riga 13), altrimenti, lo spegne.

Se volessimo invertire il funzionamento del pushbutton basterebbe scambiare LOW e HIGH nelle righe 13 e 15 del software (senza dover toccare il circuito).

Ma la caratteristica più importante di questo circuito e del software annesso è che le istruzioni di accensione e spegnimento del led sono solamente un esempio e quindi, una volta ricevuto l’input dal dito della persona che ha premuto il pulsante, Arduino può reagire virtualmente in qualsiasi modo. Il limite è il nostro ingegno.

A presto per nuovi articoli su come imparare a usare Arduino!

Articoli correlati:

  1. Arduino Duemilanove: inizia l’avventura
  2. Arduino Duemilanove: espandere Hello, Blink! con una breadboard
  3. Arduino Duemilanove: Hello, Blink!
Tags:

Arduino Duemilanove: Hello, Blink! senza delay()

2 febbraio 2009 , di Boliboop

A prima vista l’argomento di questo tutorial potrebbe non sembrare particolarmente entusiasmante, ma ad un’attenta analisi risulta essere di fondamentale importanza proprio per lo sviluppo di applicazioni interattive. Come spiega infatti nella relativa pagina il sito ufficiale di Arduino, l’uso della funzione delay() nel semplice primo esempio, che abbiamo chiamato Hello, Blink!, è sì molto comoda (perché permette di impostare una pausa a piacere fra l’accensione e lo spegnimento del led semplicemente impostando l’argomento della funzione) ma, per contro, si tratta un blocco totale del programma per la durata della pausa stessa.

In che senso? Mentre infatti è in esecuzione la funzione delay() (ad esempio per 1000 millisecondi), non possono essere eseguite altre istruzioni e, se il nostro obiettivo è quello di far interagire Arduino col mondo esterno, non avrebbe molto senso un blocco del dispositivo dal momento che, probabilmente, il mondo esterno non aspetterà pazientemente la fine dell’esecuzione della funzione delay()

La soluzione è allora tenere traccia dell’istante in cui si è fatto accendere o spegnere il nostro led rosso e, ogni volta che il loop() viene eseguito, è sufficiente controllare se un intervallo di tempo minimo è passato. Se sì, il led va spento, o riacceso.

Vediamo come. Innanzitutto bisogna introdurre una nuova funzione denominata millis() che restituisce il numero di millisecondi trascorsi dall’inizio dell’esecuzione del programma (e si riazzera una volta ogni 50 giorni circa… sempre che teniate Arduino acceso per così tanto tempo).

Ecco il listato che utilizzeremo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int ledPin = 13;
int value = LOW;
long previousMillis = 0;
long interval = 1000;
 
void setup()
{
  pinMode(ledPin, OUTPUT);
}
 
void loop()
{
  if (millis() - previousMillis > interval) {
    previousMillis = millis();
 
    if (value == LOW)
      value = HIGH;
    else
      value = LOW;
 
    digitalWrite(ledPin, value);
  }
}

Le prime quattro righe dichiarano 4 variabili. Le prime due sono interi che stabiliscono il numero del pin a cui è connessa la zampa lunga del nostro led rosso (l’altra è sempre connessa al GND) e il valore iniziale di corrente al pin (LOW è come dire 0 Volt). Le seconde due variabili sono di tipo long (ovvero hanno la possibilità di immagazzinare valori numerici interi con molte più cifre del tipo int) e servono per memorizzare il valore in millisecondi restituito da millis() e l’attesa fra un’accensione e uno spegnimento del led rosso. Il fatto che anche interval sia una variabile long (pur avendo solo 4 cifre) è per permettere di eseguire correttamente la sottrazione in riga 13 fra tipi uguali di variabili.

In riga 8 settiamo il pin 13 come OUTPUT e poi entriamo nel blocco loop(). A questo punto, ad ogni esecuzione del ciclo, viene controllato se millis() - previousMillis è maggiore di interval, ovvero se è passato un tempo uguale o superiore a quello impostato come intervallo fra un’accensione e uno spegnimento. Se sì, in riga 14 viene subito impostato l’attuale valore di millis() come nuovo valore di previousMillis, pronto per la successiva esecuzione del loop().

Nelle righe dalla 16 alla 19 non viene fatto altro che controllare lo stato precedente del pin 13 e, in pratica, se il led è spento viene deciso di accenderlo, se è acceso viene deciso di spegnerlo. Nella riga 21 viene data esecuzione al comando digitalWrite() che, in base al valore della variabile value, agisce direttamente sui livelli del pin 13.

Fra la riga 22 e la 23 (quindi fuori dal primo costrutto if (iniziato in riga 13 e ancora dentro il loop()) possiamo inserire un numero qualsiasi di istruzioni che verranno eseguite immediatamente, senza attendere che siano passati i 1000 millisecondi impostati con interval.

Il prossimo tutorial introdurrà un primo esempio di interazione Arduino-essere umano. Come sempre se avete domande lasciate un messaggio, ehm, un commento.

Articoli correlati:

  1. Arduino Duemilanove: espandere Hello, Blink! con una breadboard
  2. Arduino Duemilanove: Hello, Blink!
  3. Arduino Duemilanove: espandere Hello, Blink!
Tags:

Arduino Duemilanove: espandere Hello, Blink! con una breadboard

29 gennaio 2009 , di Boliboop

L’espansione di cui ci occuperemo oggi è esclusivamente di tipo hardware, dal momento che il software da utilizzare (salvo una piccola modifica) è quello del primo Hello, Blink!. Ma per espandere l’hardware faremo uso di una breadboard, già presente nel KIT Workshop di cui abbiamo parlato nell’articolo introduttivo.

In poche parole, la breadboard (letteralmente tavola di pane) è una basetta provvista di numerosi fori connessi fra loro secondo uno schema a righe o colonne, ovvero:

Breadboard - schema connessioni

In particolare la nostra breadboard è quella nella figura qui in basso e possiede una parte centrale (divisa in due) costituita da 63 righe con 10 fori per ogni riga (posizioni da A a E e, separate dalle prime, da F a J), più due fasce laterali con ognuna due colonne costituite da 50 fori e contrassegnate da i segni + e -, per un totale di 830 fori (anziché 840 come indicato nella confezione):

Breadboard - KIT Workshop

A questo punto possiamo utilizzare la breadboard per costruire un circuito elettrico da collegare al nostro Arduino.

Innanzitutto immaginiamo di voler far lampeggiare un led rosso che sia connesso ad un pin diverso dal numero 13. Potremmo piegare le zampette del led per adattarle alla distanza da coprire ma questo, oltre ad essere antiestico, è certamente una soluzione che rischia di rovinare le zampette stesse e limita fortemente l’espansione futura, non permettendo la possibilità di inserire ulteriori componenti. L’idea è quindi quella di utilizzare la breadboard per realizzare delle connessioni elettriche (con dei cavi o con i ponticelli in dotazione con il KIT Workshop) in modo da scegliere facilmente da quale pin far alimentare il nostro caro led rosso.

Ecco come realizzarlo:

Arduino Duemilanove connesso ad una breadboard con led rosso

In pratica si due collegamenti verdi sono connessi con le due zampette del led rosso e le connettono con le prime due colonne della breadboard, le quali, a loro volta, sono connesse tramite i ponticelli rossi ai pin GND e 10 di Arduino.

In questo modo il programma Hello, Blink! può essere scritto nella seguente maniera

1
2
3
4
5
6
7
8
9
10
11
12
13
14
int ledPin = 10;
 
void setup()
{
  pinMode(ledPin, OUTPUT);
}
 
void loop()
{
  digitalWrite(ledPin, HIGH);
  delay(1000);
  digitalWrite(ledPin, LOW);
  delay(1000);
}

ovvero modificando in riga 1 il numero corrispondente al pin da alimentare. Ovviamente, se non si usa il pin 13, il led L incorporato in Arduino non lampeggerà.

Tre led lampeggianti alternativamente. A questo punto è facilmente implementabile una fila di led (nell’esempio 3, ma al massimo 14) che accendono e si spengono in sequenza. Innanzitutto bisogna collegare tutte e tre le zampe corte al GND e ognuna delle tre zampe lunghe a un differente pin, ad esempio il 2, 3 e 4.

Il codice che ho utilizzato per far illuminare alternativamente i tre led è il seguente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int ledPinStart = 2;
int numberOfPin = 3;
int interval = 500;
int i, j;
 
void setup() 
{
  for (j = 0; j < numberOfPin; j++) {
      pinMode(ledPinStart + j, OUTPUT);
  }
}
 
void loop()
{
  for (i = 0; i < numberOfPin; i++) {
    for (j = 0; j < numberOfPin; j++) {
      digitalWrite(ledPinStart + j, LOW); 
    }
    digitalWrite(ledPinStart + i, HIGH);    
      delay(interval);
  }
}

Come si interpreta il codice? Il primo il costrutto for dentro la funzione setup() serve per settare tutti i pin come OUTPUT. Nel blocco loop() il primo costrutto for ne include un secondo allo scopo di abbassare il livello di tutti i pin a LOW (zero Volt) per poi, fuori dal for nidificato, alzare a HIGH (5 Volt) il livello di un solo pin, sequenzialmente corrispondente ai tre led rossi. Le variabili ledPinStart e numberOfPin permettono di impostare rispettivamente il numero più basso della fila di pin e il numero di led usati.

Studiare le connessioni realizzabili con una breadboard è il primo importante passo per l’espansione di Arduino Duemilanove verso l’utilizzo di periferiche e sensori esterni, collegati ad esso in varia maniera. Nel prossimo articolo, però, affronteremo il secondo tutorial proposto dal sito ufficiale di Arduino, molti utile perché, pur ottenendo sempre il nostro lampeggìo, è basato su un software dalla concezione molto diversa. Stay tuned!

Articoli correlati:

  1. Arduino Duemilanove: inizia l’avventura
  2. Arduino Duemilanove: Hello, Blink!
  3. Arduino Duemilanove: Hello, Blink! senza delay()
Tags:

Arduino Duemilanove: espandere Hello, Blink!

27 gennaio 2009 , di Boliboop

Nel precedente tutorial abbiamo analizzato riga per riga il primo esempio di programmazione per Arduino, ovvero Hello, Blink!. Oggi presenterò qualche semplice e piccola modifica ed espansione, sia software che hardware allo scopo di prendere dimestichezza con il linguaggio utilizzato, ma anche con il dispositivo stesso.

Il codice di partenza è il seguente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
int ledPin = 13;
 
void setup()
{
  pinMode(ledPin, OUTPUT);
}
 
void loop()
{
  digitalWrite(ledPin, HIGH);
  delay(1000);
  digitalWrite(ledPin, LOW);
  delay(1000);
}

Ricordando che al funzione delay() non è altro che una pausa, espressa in millisecondi imposta ad Arduino prima di eseguire l’istruzione successiva, possiamo ovviamente giocare a modificarne il valore tra parentesi (ovvero l’argomento della funzione), aumentandolo o diminuendolo a piacere.

Provate ad esempio a scrivere nelle corrispondenti righe:

11
  delay(2000);

e

13
  delay(500);

Effettuando queste modifiche e inviando il programma ad Arduino, tramite il comando Command+U, avremo, dopo il solito scintillio di led L, TX e RX, un lampeggiare del led L che rimarrà acceso per 2 secondi e resterà spento per mezzo secondo.

Ecco la prima piccola modifica hardware. Nel KIT WorkShop che abbiamo acquistato e di cui abbiamo parlato nel primo articolo introduttivo, sono presenti 5 led rossi, 1 verde e 1 giallo. Prendiamo, ad esempio il led rosso e proviamo a collegarlo ad Arduino. Prima di tutto però osserviamolo, perché noterete che possiede una zampa più lunga dell’altra.

red_led_x5

Senza nemmeno dover piegare le zampe, inseriamo quella più corta nel pin contrassegnato con l’etichetta GND e quella più lunga nel famoso pin 13. Se non avete scollegato Arduino dall’alimentazione (o dalla porta USB), vedrete immediatamente il led illuminarsi secondo il ritmo stabilito dal programma.

Cosa abbiamo fatto? Semplicemente, siccome tutte le zampe corte dei led vanno messe a terra (da cui GND, ground in inglese vuol dire appunto terra) e siccome il pin 13 è, come abbiamo visto nel precedente tutorial, regolato sui 5 volt a intervalli regolari, il led rosso che abbiamo aggiunto viene alimentato esattamente come il piccolo e verde led L, e i due dovrebbero quindi lampeggiare all’unisono.

Ora qualcosa di divertente. Come prima cosa modifichiamo il programma in modo da creare una nuova variabile che chiameremo interval e assegniamole il valore di 1000. Dopo di che inseriamo tale variabile come argomento delle due funzioni delay(). Il nuovo listato del programma sarà quindi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int ledPin = 13;
int interval = 1000;
 
void setup()
{
  pinMode(ledPin, OUTPUT);
}
 
void loop()
{
  digitalWrite(ledPin, HIGH);
  delay(interval);
  digitalWrite(ledPin, LOW);
  delay(interval);
}

A questo punto possiamo modificare solo il valore assegnato alla variabile interval in riga 2 per modificare automaticamente gli argomenti delle due funzioni delay(). La cosa divertente accade quando proviamo ad assegnare ad interval valori sempre più piccoli. Proviamo ad esempio a scrivere interval = 100. Cosa accade? Ovviamente il nostro led rosso comincia a lampeggiare come una luce natalizia.

Ma se impostiamo interval = 10 cosa accade? Il led sembra aver messo di lampeggiare rimanendo sempre accesso. Perché?

Arduino Duemilanove - led rosso su GND e pin 13

Una breve digressione sul funzionamento del sistema visivo occhio-cervello ci fa capire la ragione di questo strano comportamento (non nascondo che appena provato ho istintivamente pensato ad un malfunzionamento o una limitazione di Arduino…). La persistenza della visione è un fenomeno che ci permette di credere che la sequenza di fotogrammi di un cartone animato sia una azione continua e non una serie di disegni statici (idem per i fotogrammi di un film). Alla stessa maniera anche la luce delle lampadine collegate ad una rete domestica a corrente alternata ci appare come stabile ma in realtà è un alternanza, appunto, di luce e buio, così rapida da non essere percettibile. Un tempo si pensava che questo fenomeno coinvolgesse la retina, ma ora è chiaro che è tutto un processo a livello della corteccia cerebrale, ovvero in poche parole, mentre la guardiamo, una immagine ci mette alcuni centesimi di secondi prima di perdere la sua luminosità originale e, se nel frattempo, è già pronta un’altra immagine, noi non siamo in grado di percepire il momento del cambiamento di immagine.

Nel caso del nostro led, se impostiamo un valore di interval di 20 ms vediamo chiaramente un lampeggiare (seppur frenetico) della luce, ma se interval è 18 ( o 16, 14, fino 11 ms) riusciamo a percepire solo un sempre più lieve tremolio. Quando interval = 10 il nostro cervello non ha fatto in tempo a cancellare, e neppure ad attenuare, l’immagine del led acceso che, dopo la pausa in cui il led rimane spento, è già ora di riaccenderlo.

In termini matematici, siccome la sequenza si compone di due delay() ognuno da 10 ms, questo significa che l’intera sequenza dura 20 ms, e quindi l’alternanza di accensioni e spegnimenti avviene 50 volte al secondo (50 x 20 ms = 1000 ms = 1 secondo), ovvero 50 Hz. Tenendo conto, però, che un lieve sfarfallio seppur invisibile può comunque essere fastidioso per l’occhio, la corrente alternata della rete domestica, cioè quella che fa funzionare le nostre lampadine, è sì fissata ad una frequenza di 50 Hz ma (dal momento che la corrente è alternata secondo un onda sinusoidale e rimane accesa sia a 220 V che a -220 V) la frequenza dell’intensità luminosa è doppia, ovvero di 100 Hz.

Ok, ma io non ci credo. Se siete arrivati a questo punto, con interval impostato a 10 ms, Arduino e il suo led apparentemente immobili, e la spiegazione che avete letto vi sembra plausibile ma non una dimostrazione che vi convinca in modo incontrovertibile… beh allora sappiate che avete una mentalità scientifica e tutta la mia stima.

Ad ogni modo, la dimostrazione la potete realizzare semplicemente agitando su e già il vostro Arduino con led rosso collegato. Ebbene sì, provateci. In questo modo, anziché una scia continua rossa, vedrete una scia interrotta da punti di buio, a riprova della rapida alternanza decisa nel programma che avete caricato sul dispositivo. In pratica, ciò che prima veniva percepito dal nostro cervello come immagine statica del led acceso, ora è un immagine spalmata su un certo spazio visivo dal vostro movimento e, in momenti diversi, il led si trova in punti diversi, permettendo al cervello di registrare le immagini della luce in punti diversi della cortecce cerebrale, con buona pace della persistenza della visione.

Ispirandomi ad un mio vecchio articolo, pomposamente intitolato Come trasformare la propria fotocamera digitale in un oscilloscopio, ho fotografato Arduino mentre girava il software Hello, Blink! con interval = 10 ms spostandomi velocemente con la fotocamera, durante lo scatto di un 1/10 di secondo. Nell’immagine in basso potete notare come il led rosso si spenga e si riaccenda varie volte (in sincrono col led verde L) mentre il led PWR mostra una scia continua proprio perché sempre acceso:

Arduino Duemilanove - Hello, Blink! con interval = 10 ms

A conti fatti, ci sono 4 immagini di led interi più 2 mezzi led alle due estremità della scia intermittente. Infatti, con interval = 10, se in un secondo ci sono 50 lampeggiamenti, in un decimo di secondo (la durata dello scatto) ce ne saranno 5.

Nel prossimo articolo realizzeremo un’altra espansione hardware. Nel frattempo, se avete domande, critiche o richieste, scrivete pure nei commenti.

Articoli correlati:

  1. Arduino Duemilanove: espandere Hello, Blink! con una breadboard
  2. Arduino Duemilanove: Hello, Blink!
  3. Arduino Duemilanove: inizia l’avventura
Tags:


Chiudi
E-mail It