<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Boliboop &#187; Informatica</title>
	<atom:link href="http://www.troise.net/boliboop/categoria/informatica/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.troise.net/boliboop</link>
	<description>my web identity</description>
	<lastBuildDate>Thu, 23 Jun 2011 07:32:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Chords Archiver: la mia prima applicazione per iPad</title>
		<link>http://www.troise.net/boliboop/chords-archiver-la-mia-prima-applicazione-per-ipad/</link>
		<comments>http://www.troise.net/boliboop/chords-archiver-la-mia-prima-applicazione-per-ipad/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 07:32:14 +0000</pubDate>
		<dc:creator>Boliboop</dc:creator>
				<category><![CDATA[Informatica]]></category>

		<guid isPermaLink="false">http://www.troise.net/boliboop/?p=944</guid>
		<description><![CDATA[
Se vi siete chiesti il perché di questi mesi di assenza, ecco la spiegazione: Apple ha appena approvato la mia prima applicazione per iPad, si chiama Chords Archiver, è gratis ed è un archiviatore di accordi e testi di canzoni, con alcune ottimizzazioni per l&#8217;utilizzo durante le performance live.
Ho approntato anche un pagina di supporto [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.troise.net/boliboop/wp-content/uploads/2011/06/chords_archiver_webicon.png" alt="" title="chords_archiver_webicon" width="200" height="198" class="alignleft size-full wp-image-945" /></p>
<p>Se vi siete chiesti il perché di questi mesi di assenza, ecco la spiegazione: Apple ha appena approvato la mia prima applicazione per iPad, si chiama <a href="http://itunes.apple.com/it/app/chords-archiver/id437294974?mt=8">Chords Archiver</a>, è gratis ed è un archiviatore di accordi e testi di canzoni, con alcune ottimizzazioni per l&#8217;utilizzo durante le performance live.</p>
<p>Ho approntato anche un <a href="http://apps.troise.net/it/chords_archiver.html">pagina di supporto</a> che ne spiega il funzionamento e le caratteristiche principali.</p>
<p>Ovviamente, trattandosi della mia prima applicazione per iPad (e più in generale per iOS), sono graditi, anzi incoraggiati, commenti, suggerimenti e critiche.</p>
<p class="akst_link"><a href="http://www.troise.net/boliboop/?p=944&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_944" class="akst_share_link">Condividi</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.troise.net/boliboop/chords-archiver-la-mia-prima-applicazione-per-ipad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arduino Duemilanove: il pulsante</title>
		<link>http://www.troise.net/boliboop/arduino-duemilanove-il-pulsante/</link>
		<comments>http://www.troise.net/boliboop/arduino-duemilanove-il-pulsante/#comments</comments>
		<pubDate>Wed, 04 Feb 2009 17:53:44 +0000</pubDate>
		<dc:creator>Boliboop</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Arduino]]></category>

		<guid isPermaLink="false">http://www.troise.net/boliboop/?p=847</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>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.</p>
<p>Il pulsante (o <em>pushbutton</em>) è un componente che, quando premuto, connette due punti del circuito. Ci sono 5 pushbutton nel <strong>KIT Workshop</strong> che abbiamo acquistato all&#8217;<a href="http://www.troise.net/boliboop/arduino-duemilanove-inizia-lavventura/">inizio di questo viaggio</a> alla scoperta di Arduino e ognuno di questi ha il seguente schema costruttivo:</p>
<p style="text-align: center;"><a href="http://www.troise.net/boliboop/wp-content/uploads/2009/02/pushbutton.png"><img src="http://www.troise.net/boliboop/wp-content/uploads/2009/02/pushbutton.png" alt="pushbutton" title="pushbutton" width="144" height="267" class="aligncenter size-full wp-image-848" /></a></p>
<p>In pratica i piedini <strong>A</strong> e <strong>C</strong> sono sempre connessi fra loro, così come i piedini <strong>B</strong> e <strong>D</strong>, mentre se il pulsante viene premuto, sono connessi tra loro tutti i piedini. Come possiamo utilizzare il <em>pushbutton</em> con <em>Arduino</em>? Basta seguire un tutorial, sul sito ufficiale, chiamato appunto <a href="http://arduino.cc/it/Tutorial/Button">Button</a> e che permette di accendere un led quando viene premuto il pulsante. Ecco come si realizza.</p>
<p><strong>Come si realizza questo circuito con pulsante?</strong> Colleghiamo il piedino <strong>A</strong> direttamente a terra (ad esempio uno dei pin etichettati con <strong>Gnd</strong> nella fila di pin chiamata <strong>POWER</strong>) e il piedino <strong>B</strong> prima ad una resistenza da <strong>2.2 KOhm</strong> (<a href="http://www.okaphone.nl/calc/resistore.shtml?ohm=2200&#038;tol=5">ecco come è fatta</a>) e poi all&#8217;alimentazione da <strong>5 V</strong>. Come mostrato nello schema seguente, dobbiamo connettere il piedino <strong>B</strong> anche con il pin <strong>2</strong> che sarà quello che riceverà il messaggio &#8220;pulsante premuto&#8221;:</p>
<p style="text-align: center;"><a href="http://www.troise.net/boliboop/wp-content/uploads/2009/02/pushbuttoncircuit.png"><img src="http://www.troise.net/boliboop/wp-content/uploads/2009/02/pushbuttoncircuit.png" alt="pushbuttoncircuit" title="pushbuttoncircuit" width="319" height="456" class="aligncenter size-full wp-image-853" /></a></p>
<p>Il tutorial originale spiega che la resistenza da <strong>2.2 KOhm</strong> ha una funzione cosiddetta di <a href="http://en.wikipedia.org/wiki/Pull-up_resistor">pull-up</a> che serve ad evitare che il segnare sul pin <strong>2</strong> 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 <em>pull-up</em> serva sostanzialmente a forzare un livello logico (come il nostro <strong>HIGH</strong>) quando il circuito è aperto permettendo di andare su <strong>LOW</strong> non appena si chiude il circuito. Ma vediamo in dettaglio il circuito e di seguito ne illustrerò il funzionamento e il software da utilizzare:</p>
<p style="text-align: center;"><a href="http://www.troise.net/boliboop/wp-content/uploads/2009/02/img_5759-r.jpg"><img src="http://www.troise.net/boliboop/wp-content/uploads/2009/02/img_5759-r-360x480.jpg" alt="Arduino - pushbutton in funzione" title="Arduino - pushbutton in funzione" width="360" height="480" class="aligncenter size-medium wp-image-860" /></a></p>
<p><strong>Come funziona esattamente il circuito?</strong> Quando il <em>pushbutton</em> è <em>aperto</em> (ovvero, come abbiamo visto prima, non è premuto) non c&#8217;è nessuna connessione fra i due piedini che abbiamo usato, il piedino <strong>A</strong> e il <strong>B</strong>. In tale situazione (anche se attraverso la resistenza di pull-up) il pin <strong>2</strong> è connesso all&#8217;alimentazione da <strong>5 V</strong> e quindi <em>Arduino</em> legge il pin ad un livello <strong>HIGH</strong>. Quando invece il <em>pushbutton</em> è premuto il circuito è chiuso e fra il piedino <strong>A</strong> e il <strong>B</strong> si crea una connessione, quindi il pin <strong>2</strong> si trova  allo stesso potenziale della terra e Arduino leggerà quindi il valore <strong>LOW</strong> (ovviamente il pin <strong>2</strong> è ancora connesso con l&#8217;alimentazione a <strong>5 V</strong>, ma la resistenza interposta fa sì che tale pin sia più <em>vicino</em> alla terra).</p>
<p>Viene a stabilirsi quindi la seguente corrispondenza:</p>
<ul>
<li>Pulsante non premuto -> pin <strong>2</strong> a livello <strong>HIGH</strong></li>
<li>Pulsante premuto -> pin <strong>2</strong> a livello <strong>LOW</strong></li>
</ul>
<p>A questo punto manca solo il codice da inviare ad <em>Arduino</em>, che non farà altro che ricevere il segnale dal pin 2 e reagire con una istruzione, nel nostro a caso al pin 13:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">int</span> ledPin <span style="color: #339933;">=</span> <span style="color: #0000dd;">13</span><span style="color: #339933;">;</span>
<span style="color: #993333;">int</span> inPin <span style="color: #339933;">=</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
<span style="color: #993333;">int</span> val <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  pinMode<span style="color: #009900;">&#40;</span>ledPin<span style="color: #339933;">,</span> OUTPUT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  pinMode<span style="color: #009900;">&#40;</span>inPin<span style="color: #339933;">,</span> INPUT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> loop<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  val <span style="color: #339933;">=</span> digitalRead<span style="color: #009900;">&#40;</span>inPin<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>val <span style="color: #339933;">==</span> HIGH<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    digitalWrite<span style="color: #009900;">&#40;</span>ledPin<span style="color: #339933;">,</span> LOW<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
    digitalWrite<span style="color: #009900;">&#40;</span>ledPin<span style="color: #339933;">,</span> HIGH<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p><strong>Più in dettaglio</strong>, le prime tre righe di codice dichiarano le variabili che impostano il pin <strong>13 </strong>come collegamento al led rosso, il pin <strong>2</strong> come pin di entrata del segnale del pulsante, e che infine (con <em>val</em>) impostano il valore iniziale dello status del pin <strong>2</strong> (ovvero del <em>pushbutton</em>).</p>
<p>All&#8217;interno del blocco <em>setup()</em> avviene qualcosa di importante,  ovvero viene impostato il led <strong>13</strong> come <strong>OUTPUT</strong> e, per la prima volta, il pin <strong>2</strong> come <strong>INPUT</strong>.</p>
<p>A questo punto, nel blocco <em>loop()</em>, la prima istruzione, in <strong>riga 11</strong>, non fa altro che leggere il valore di input, ovvero lo status del pulsante, tramite la funzione <em>digitalRead()</em>.</p>
<p>Successivamente il blocco <em>if</em> controlla se il valore di input <em>val</em> è stato letto come HIGH e  quindi accende il led rosso (<strong>riga 13</strong>), altrimenti, lo spegne.</p>
<p>Se volessimo invertire il funzionamento del <em>pushbutton</em> basterebbe scambiare <strong>LOW</strong> e <strong>HIGH</strong> nelle <strong>righe 13 e 15</strong> del software (senza dover toccare il circuito).</p>
<p>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&#8217;input dal dito della persona che ha premuto il pulsante, Arduino può reagire virtualmente in qualsiasi modo. Il limite è il nostro ingegno.</p>
<p>A presto per nuovi articoli su <a href="http://www.troise.net/boliboop/tag/arduino/">come imparare a usare Arduino</a>!</p>
<p class="akst_link"><a href="http://www.troise.net/boliboop/?p=847&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_847" class="akst_share_link">Condividi</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.troise.net/boliboop/arduino-duemilanove-il-pulsante/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Arduino Duemilanove: Hello, Blink! senza delay()</title>
		<link>http://www.troise.net/boliboop/arduino-duemilanove-hello-blink-senza-delay/</link>
		<comments>http://www.troise.net/boliboop/arduino-duemilanove-hello-blink-senza-delay/#comments</comments>
		<pubDate>Sun, 01 Feb 2009 23:03:19 +0000</pubDate>
		<dc:creator>Boliboop</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Arduino]]></category>

		<guid isPermaLink="false">http://www.troise.net/boliboop/?p=837</guid>
		<description><![CDATA[A prima vista l&#8217;argomento di questo tutorial potrebbe non sembrare particolarmente entusiasmante, ma ad un&#8217;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&#8217;uso della funzione delay() nel semplice primo esempio, che abbiamo chiamato Hello, Blink!, è sì molto [...]]]></description>
			<content:encoded><![CDATA[<p>A prima vista l&#8217;argomento di questo tutorial potrebbe non sembrare particolarmente entusiasmante, ma ad un&#8217;attenta analisi risulta essere di fondamentale importanza proprio per lo sviluppo di applicazioni interattive. Come spiega infatti nella <a href="http://arduino.cc/it/Tutorial/BlinkWithoutDelay">relativa pagina</a> il sito ufficiale di Arduino, l&#8217;uso della funzione <em>delay()</em> nel semplice primo esempio, che abbiamo chiamato <a href="http://www.troise.net/boliboop/arduino-duemilanove-hello-blink/">Hello, Blink!</a>, è sì molto comoda (perché permette di impostare una pausa a piacere fra l&#8217;accensione e lo spegnimento del led semplicemente impostando l&#8217;argomento della funzione) ma, per contro, si tratta un blocco totale del programma per la durata della pausa stessa.</p>
<p><strong>In che senso?</strong> Mentre infatti è in esecuzione la funzione <em>delay()</em> (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&#8217;esecuzione della funzione <em>delay()</em>&#8230;</p>
<p>La soluzione è allora tenere traccia dell&#8217;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.</p>
<p><strong>Vediamo come.</strong> Innanzitutto bisogna introdurre una nuova funzione denominata <strong>millis()</strong> che restituisce il numero di millisecondi trascorsi dall&#8217;inizio dell&#8217;esecuzione del programma (e si riazzera una volta ogni 50 giorni circa&#8230; sempre che teniate Arduino acceso per così tanto tempo).</p>
<p>Ecco il listato che utilizzeremo:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</pre></td><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">int</span> ledPin <span style="color: #339933;">=</span> <span style="color: #0000dd;">13</span><span style="color: #339933;">;</span>
<span style="color: #993333;">int</span> value <span style="color: #339933;">=</span> LOW<span style="color: #339933;">;</span>
<span style="color: #993333;">long</span> previousMillis <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #993333;">long</span> interval <span style="color: #339933;">=</span> <span style="color: #0000dd;">1000</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  pinMode<span style="color: #009900;">&#40;</span>ledPin<span style="color: #339933;">,</span> OUTPUT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> loop<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>millis<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> previousMillis <span style="color: #339933;">&gt;</span> interval<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    previousMillis <span style="color: #339933;">=</span> millis<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>value <span style="color: #339933;">==</span> LOW<span style="color: #009900;">&#41;</span>
      value <span style="color: #339933;">=</span> HIGH<span style="color: #339933;">;</span>
    <span style="color: #b1b100;">else</span>
      value <span style="color: #339933;">=</span> LOW<span style="color: #339933;">;</span>
&nbsp;
    digitalWrite<span style="color: #009900;">&#40;</span>ledPin<span style="color: #339933;">,</span> value<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>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&#8217;altra è sempre connessa al <strong>GND</strong>) e il valore iniziale di corrente al pin (<em>LOW</em> è come dire 0 Volt). Le seconde due variabili sono di tipo <em>long</em> (ovvero hanno la possibilità di immagazzinare valori numerici interi con molte più cifre del tipo <em>int</em>) e servono per memorizzare il valore in millisecondi restituito da <em>millis()</em> e l&#8217;attesa fra un&#8217;accensione e uno spegnimento del led rosso. Il fatto che anche <em>interval</em> sia una variabile long (pur avendo solo 4 cifre) è per permettere di eseguire correttamente la sottrazione in <strong>riga 13</strong> fra tipi uguali di variabili.</p>
<p>In <strong>riga 8</strong> settiamo il pin <strong>13</strong> come <em>OUTPUT</em> e poi entriamo nel blocco <em>loop()</em>. A questo punto, ad ogni esecuzione del ciclo, viene controllato se <code>millis() - previousMillis</code> è maggiore di <em>interval</em>, ovvero se è passato un tempo uguale o superiore a quello impostato come intervallo fra un&#8217;accensione e uno spegnimento. Se sì, in <strong>riga 14</strong> viene subito impostato l&#8217;attuale valore di <em>millis()</em> come nuovo valore di <em>previousMillis</em>, pronto per la successiva esecuzione del <em>loop()</em>.</p>
<p>Nelle righe dalla <strong>16</strong> alla <strong>19</strong> non viene fatto altro che controllare lo stato precedente del pin <strong>13</strong> e, in pratica, se il led è spento viene deciso di accenderlo, se è acceso viene deciso di spegnerlo. Nella <strong>riga 21</strong> viene data esecuzione al comando <code>digitalWrite()</code> che, in base al valore della variabile <em>value</em>, agisce direttamente sui livelli del pin <strong>13</strong>.</p>
<p>Fra la riga <strong>22</strong> e la <strong>23</strong> (quindi fuori dal primo costrutto if (iniziato in riga <strong>13</strong> e ancora dentro il <em>loop()</em>) <strong>possiamo inserire un numero qualsiasi di istruzioni che verranno eseguite immediatamente</strong>, senza attendere che siano passati i 1000 millisecondi impostati con <em>interval</em>.</p>
<p>Il prossimo tutorial introdurrà un primo esempio di interazione Arduino-essere umano. Come sempre se avete domande lasciate un messaggio, ehm, un commento.</p>
<p class="akst_link"><a href="http://www.troise.net/boliboop/?p=837&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_837" class="akst_share_link">Condividi</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.troise.net/boliboop/arduino-duemilanove-hello-blink-senza-delay/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Arduino Duemilanove: espandere Hello, Blink! con una breadboard</title>
		<link>http://www.troise.net/boliboop/arduino-duemilanove-espandere-hello-blink-con-una-breadboard/</link>
		<comments>http://www.troise.net/boliboop/arduino-duemilanove-espandere-hello-blink-con-una-breadboard/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 01:11:47 +0000</pubDate>
		<dc:creator>Boliboop</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Arduino]]></category>

		<guid isPermaLink="false">http://www.troise.net/boliboop/?p=819</guid>
		<description><![CDATA[L&#8217;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&#8217;hardware faremo uso di una breadboard, già presente nel KIT Workshop di cui abbiamo parlato nell&#8217;articolo introduttivo.
In poche parole, la breadboard (letteralmente tavola di [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;espansione di cui ci occuperemo oggi è esclusivamente di tipo hardware, dal momento che il software da utilizzare (salvo una piccola modifica) è quello del <a href="http://www.troise.net/boliboop/arduino-duemilanove-hello-blink/">primo Hello, Blink!</a>. Ma per espandere l&#8217;hardware faremo uso di una <a href="http://it.wikipedia.org/wiki/Breadboard">breadboard</a>, già presente nel <strong>KIT Workshop</strong> di cui abbiamo parlato nell&#8217;<a href="http://www.troise.net/boliboop/arduino-duemilanove-inizia-lavventura/">articolo introduttivo</a>.</p>
<p>In poche parole, la <em>breadboard</em> (letteralmente <em>tavola di pane</em>) è una basetta provvista di numerosi fori connessi fra loro secondo uno schema a righe o colonne, ovvero:</p>
<p style="text-align: center;"><a href="http://it.wikipedia.org/wiki/File:Breadboard-144dpi.gif"><img src="http://www.troise.net/boliboop/wp-content/uploads/2009/01/breadboard-144dpi.gif" alt="Breadboard - schema connessioni" title="Breadboard - schema connessioni" width="298" height="226" class="aligncenter size-full wp-image-820" /></a></p>
<p>In particolare la nostra <em>breadboard</em> è 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 <strong>A</strong> a <strong>E</strong> e, separate dalle prime, da <strong>F</strong> a <strong>J</strong>), più due fasce laterali con ognuna due colonne costituite da 50 fori e contrassegnate da i segni <strong>+</strong> e <strong>-</strong>, per un totale di 830 fori (anziché 840 come indicato nella confezione):</p>
<p style="text-align: center;"><a href="http://www.troise.net/boliboop/wp-content/uploads/2009/01/img_5649.jpg"><img src="http://www.troise.net/boliboop/wp-content/uploads/2009/01/img_5649-262x480.jpg" alt="Breadboard - KIT Workshop" title="Breadboard - KIT Workshop" width="262" height="480" class="aligncenter size-medium wp-image-821" /></a></p>
<p>A questo punto possiamo utilizzare la breadboard per costruire un circuito elettrico da collegare al nostro Arduino.</p>
<p>Innanzitutto immaginiamo di voler far lampeggiare un led rosso che sia connesso ad un pin diverso dal numero <em>13</em>. 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&#8217;espansione futura, non permettendo la possibilità di inserire ulteriori componenti. L&#8217;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.</p>
<p>Ecco come realizzarlo:</p>
<p><a href="http://www.troise.net/boliboop/wp-content/uploads/2009/01/img_5507-r.jpg"><img src="http://www.troise.net/boliboop/wp-content/uploads/2009/01/img_5507-r-480x330.jpg" alt="Arduino Duemilanove connesso ad una breadboard con led rosso" title="Arduino Duemilanove connesso ad una breadboard con led rosso" width="480" height="330" class="aligncenter size-medium wp-image-822" /></a></p>
<p>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 <strong>GND</strong> e <strong>10</strong> di Arduino.</p>
<p>In questo modo il programma <a href="http://www.troise.net/boliboop/arduino-duemilanove-hello-blink/">Hello, Blink!</a> può essere scritto nella seguente maniera</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">int</span> ledPin <span style="color: #339933;">=</span> <span style="color: #0000dd;">10</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  pinMode<span style="color: #009900;">&#40;</span>ledPin<span style="color: #339933;">,</span> OUTPUT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> loop<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  digitalWrite<span style="color: #009900;">&#40;</span>ledPin<span style="color: #339933;">,</span> HIGH<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  delay<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  digitalWrite<span style="color: #009900;">&#40;</span>ledPin<span style="color: #339933;">,</span> LOW<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  delay<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>ovvero modificando in <strong>riga 1</strong> il numero corrispondente al pin da alimentare. Ovviamente, se non si usa il pin <strong>13</strong>, il led <strong>L</strong> incorporato in Arduino non lampeggerà.</p>
<p><strong>Tre led lampeggianti alternativamente</strong>. A questo punto è facilmente implementabile una fila di led (nell&#8217;esempio 3, ma al massimo 14) che accendono e si spengono in sequenza. Innanzitutto bisogna collegare tutte e tre le zampe corte al <strong>GND</strong> e ognuna delle tre zampe lunghe a un differente pin, ad esempio il <strong>2</strong>, <strong>3</strong> e <strong>4</strong>.</p>
<p><object width="480" height="295"><param name="movie" value="http://www.youtube.com/v/xuo30MhSfMc&#038;hl=it&#038;fs=1&#038;color1=0xe1600f&#038;color2=0xfebd01"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/xuo30MhSfMc&#038;hl=it&#038;fs=1&#038;color1=0xe1600f&#038;color2=0xfebd01" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"></embed></object></p>
<p>Il codice che ho utilizzato per far illuminare alternativamente i tre led è il seguente:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">int</span> ledPinStart <span style="color: #339933;">=</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>
<span style="color: #993333;">int</span> numberOfPin <span style="color: #339933;">=</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">;</span>
<span style="color: #993333;">int</span> interval <span style="color: #339933;">=</span> <span style="color: #0000dd;">500</span><span style="color: #339933;">;</span>
<span style="color: #993333;">int</span> i<span style="color: #339933;">,</span> j<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> 
<span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>j <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> j <span style="color: #339933;">&lt;</span> numberOfPin<span style="color: #339933;">;</span> j<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      pinMode<span style="color: #009900;">&#40;</span>ledPinStart <span style="color: #339933;">+</span> j<span style="color: #339933;">,</span> OUTPUT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> loop<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> numberOfPin<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>j <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span> j <span style="color: #339933;">&lt;</span> numberOfPin<span style="color: #339933;">;</span> j<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      digitalWrite<span style="color: #009900;">&#40;</span>ledPinStart <span style="color: #339933;">+</span> j<span style="color: #339933;">,</span> LOW<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
    <span style="color: #009900;">&#125;</span>
    digitalWrite<span style="color: #009900;">&#40;</span>ledPinStart <span style="color: #339933;">+</span> i<span style="color: #339933;">,</span> HIGH<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    
      delay<span style="color: #009900;">&#40;</span>interval<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p><strong>Come si interpreta il codice?</strong> Il primo il costrutto <em>for</em> dentro la funzione <em>setup()</em> serve per settare tutti i pin come <em>OUTPUT</em>. Nel blocco <em>loop()</em> il primo costrutto <em>for</em> ne include un secondo allo scopo di abbassare il livello di tutti i pin a <strong>LOW</strong> (zero Volt) per poi, fuori dal <em>for</em> nidificato, alzare a <strong>HIGH</strong> (5 Volt) il livello di un solo pin, sequenzialmente corrispondente ai tre led rossi. Le variabili  <em>ledPinStart</em> e <em>numberOfPin</em> permettono di impostare rispettivamente il numero più basso della fila di pin e il numero di led usati.</p>
<p>Studiare le connessioni realizzabili con una <em>breadboard</em> è il primo importante passo per l&#8217;espansione di <em>Arduino Duemilanove</em> verso l&#8217;utilizzo di periferiche e sensori esterni, collegati ad esso in varia maniera. Nel prossimo articolo, però, affronteremo il secondo tutorial proposto dal<a href="http://arduino.cc/it/"> sito ufficiale di Arduino</a>, molti utile perché, pur ottenendo sempre il nostro lampeggìo, è basato su un software dalla concezione molto diversa. Stay tuned!</pre>
<p class="akst_link"><a href="http://www.troise.net/boliboop/?p=819&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_819" class="akst_share_link">Condividi</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.troise.net/boliboop/arduino-duemilanove-espandere-hello-blink-con-una-breadboard/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Arduino Duemilanove: espandere Hello, Blink!</title>
		<link>http://www.troise.net/boliboop/arduino-duemilanove-espandere-hello-blink/</link>
		<comments>http://www.troise.net/boliboop/arduino-duemilanove-espandere-hello-blink/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 00:40:25 +0000</pubDate>
		<dc:creator>Boliboop</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Arduino]]></category>

		<guid isPermaLink="false">http://www.troise.net/boliboop/?p=805</guid>
		<description><![CDATA[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;
&#160;
void [...]]]></description>
			<content:encoded><![CDATA[<p>Nel precedente tutorial abbiamo analizzato riga per riga il primo esempio di programmazione per Arduino, ovvero <a href="http://www.troise.net/boliboop/arduino-duemilanove-hello-blink/">Hello, Blink!</a>. 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.</p>
<p>Il codice di partenza è il seguente:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">int</span> ledPin <span style="color: #339933;">=</span> <span style="color: #0000dd;">13</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  pinMode<span style="color: #009900;">&#40;</span>ledPin<span style="color: #339933;">,</span> OUTPUT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> loop<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  digitalWrite<span style="color: #009900;">&#40;</span>ledPin<span style="color: #339933;">,</span> HIGH<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  delay<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  digitalWrite<span style="color: #009900;">&#40;</span>ledPin<span style="color: #339933;">,</span> LOW<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  delay<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Ricordando che al funzione <code>delay()</code> non è altro che una pausa, espressa in millisecondi imposta ad Arduino prima di eseguire l&#8217;istruzione successiva, possiamo ovviamente giocare a modificarne il valore tra parentesi (ovvero l&#8217;<em>argomento</em> della funzione), aumentandolo o diminuendolo a piacere.</p>
<p>Provate ad esempio a scrivere nelle corrispondenti righe:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>11
</pre></td><td class="code"><pre class="c" style="font-family:monospace;">  delay<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>e</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>13
</pre></td><td class="code"><pre class="c" style="font-family:monospace;">  delay<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Effettuando queste modifiche e inviando il programma ad Arduino, tramite il comando <em>Command+U</em>, avremo, dopo il solito scintillio di led <strong>L</strong>, <strong>TX</strong> e <strong>RX</strong>, un lampeggiare del led <strong>L</strong> che rimarrà acceso per 2 secondi e resterà spento per mezzo secondo.</p>
<p><strong>Ecco la prima piccola modifica hardware.</strong> Nel <strong>KIT WorkShop</strong> che abbiamo acquistato e di cui abbiamo parlato nel primo <a href="http://www.troise.net/boliboop/arduino-duemilanove-inizia-lavventura/">articolo introduttivo</a>, 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&#8217;altra.</p>
<p><img src="http://www.troise.net/boliboop/wp-content/uploads/2009/01/red_led_x5-480x360.jpg" alt="red_led_x5" title="red_led_x5" width="480" height="360" class="aligncenter size-medium wp-image-807" /></p>
<p>Senza nemmeno dover piegare le zampe, inseriamo quella più corta nel pin contrassegnato con l&#8217;etichetta <strong>GND</strong> e quella più lunga nel famoso pin <strong>13</strong>. Se non avete scollegato Arduino dall&#8217;alimentazione (o dalla porta USB), vedrete immediatamente il led illuminarsi secondo il ritmo stabilito dal programma.</p>
<p>Cosa abbiamo fatto? Semplicemente, siccome tutte le zampe corte dei led vanno messe a terra (da cui <strong>GND</strong>, ground in inglese vuol dire appunto terra) e siccome il pin <strong>13</strong> è, 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 <strong>L</strong>, e i due dovrebbero quindi lampeggiare all&#8217;unisono.</p>
<p><strong>Ora qualcosa di divertente.</strong> Come prima cosa modifichiamo il programma in modo da creare una nuova variabile che chiameremo <em>interval</em> e assegniamole il valore di <em>1000</em>. Dopo di che inseriamo tale variabile come argomento delle due funzioni <em>delay()</em>. Il nuovo listato del programma sarà quindi:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">int</span> ledPin <span style="color: #339933;">=</span> <span style="color: #0000dd;">13</span><span style="color: #339933;">;</span>
<span style="color: #993333;">int</span> interval <span style="color: #339933;">=</span> <span style="color: #0000dd;">1000</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  pinMode<span style="color: #009900;">&#40;</span>ledPin<span style="color: #339933;">,</span> OUTPUT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> loop<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  digitalWrite<span style="color: #009900;">&#40;</span>ledPin<span style="color: #339933;">,</span> HIGH<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  delay<span style="color: #009900;">&#40;</span>interval<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  digitalWrite<span style="color: #009900;">&#40;</span>ledPin<span style="color: #339933;">,</span> LOW<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  delay<span style="color: #009900;">&#40;</span>interval<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>A questo punto possiamo modificare solo il valore assegnato alla variabile <em>interval</em> in <strong>riga 2</strong> per modificare automaticamente gli argomenti delle due funzioni delay(). La cosa divertente accade quando proviamo ad assegnare ad <em>interval</em> valori sempre più piccoli. Proviamo ad esempio a scrivere <code>interval = 100</code>. Cosa accade? Ovviamente il nostro led rosso comincia a lampeggiare come una luce natalizia. </p>
<p>Ma se impostiamo <code>interval = 10</code> cosa accade? <strong>Il led sembra aver messo di lampeggiare rimanendo sempre accesso. Perché?</strong></p>
<p><img src="http://www.troise.net/boliboop/wp-content/uploads/2009/01/img_5504-r-480x402.jpg" alt="Arduino Duemilanove - led rosso su GND e pin 13" title="Arduino Duemilanove - led rosso su GND e pin 13" width="480" height="402" class="aligncenter size-medium wp-image-809" /></p>
<p>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&#8230;). La <a href="http://it.wikipedia.org/wiki/Persistenza_della_visione">persistenza della visione</a> è 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, <strong>una immagine ci mette alcuni centesimi di secondi prima di perdere la sua luminosità originale</strong> e, se nel frattempo, è già pronta un&#8217;altra immagine, noi non siamo in grado di percepire il momento del cambiamento di immagine.</p>
<p>Nel caso del nostro led, se impostiamo un valore di <em>interval</em> di 20 ms vediamo chiaramente un lampeggiare (seppur frenetico) della luce, ma se <em>interval</em> è 18 ( o 16, 14,  fino 11 ms) riusciamo a percepire solo un sempre più lieve tremolio. <strong>Quando <code>interval = 10</code> il nostro cervello non ha fatto in tempo a cancellare, e neppure ad attenuare, l&#8217;immagine del led acceso che, dopo la pausa in cui il led rimane spento, è già ora di riaccenderlo.</strong></p>
<p>In termini matematici, siccome la sequenza si compone di due <em>delay()</em> ognuno da 10 ms, questo significa che l&#8217;intera sequenza dura 20 ms, e quindi l&#8217;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&#8217;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 <em>220 V</em> che a <em>-220 V</em>) la frequenza dell&#8217;intensità luminosa è doppia, ovvero di <strong>100 Hz</strong>.</p>
<p><strong>Ok, ma io non ci credo.</strong> Se siete arrivati a questo punto, con <em>interval</em> 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&#8230; beh allora sappiate che avete una mentalità scientifica e tutta la mia stima.</p>
<p>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 <em>spalmata</em> 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.</p>
<p>Ispirandomi ad un mio vecchio articolo, pomposamente intitolato <a href="http://www.troise.net/boliboop/come-trasformare-la-propria-fotocamera-digitale-in-un-oscilloscopio/">Come trasformare la propria fotocamera digitale in un oscilloscopio</a>, ho fotografato Arduino mentre girava il software <em>Hello, Blink!</em> con <code>interval = 10 ms</code> spostandomi velocemente con la fotocamera, durante lo scatto di un 1/10 di secondo. Nell&#8217;immagine in basso potete notare come il led rosso si spenga e si riaccenda varie volte (in sincrono col led verde <strong>L</strong>) mentre il led <strong>PWR</strong> mostra una scia continua proprio perché sempre acceso:</p>
<p><img src="http://www.troise.net/boliboop/wp-content/uploads/2009/01/img_5647-480x318.jpg" alt="Arduino Duemilanove - Hello, Blink! con interval = 10 ms" title="Arduino Duemilanove - Hello, Blink! con interval = 10 ms" width="480" height="318" class="aligncenter size-medium wp-image-812" /></p>
<p>A conti fatti, ci sono 4 immagini di led interi più 2 mezzi led alle due estremità della scia intermittente. Infatti, con <em>interval = 10</em>, se in un secondo ci sono 50 lampeggiamenti, in un decimo di secondo (la durata dello scatto) ce ne saranno 5.</p>
<p>Nel prossimo articolo realizzeremo un&#8217;altra espansione hardware. Nel frattempo, se avete domande, critiche o richieste, scrivete pure nei commenti.</p>
<p class="akst_link"><a href="http://www.troise.net/boliboop/?p=805&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_805" class="akst_share_link">Condividi</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.troise.net/boliboop/arduino-duemilanove-espandere-hello-blink/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Arduino Duemilanove: Hello, Blink!</title>
		<link>http://www.troise.net/boliboop/arduino-duemilanove-hello-blink/</link>
		<comments>http://www.troise.net/boliboop/arduino-duemilanove-hello-blink/#comments</comments>
		<pubDate>Sat, 24 Jan 2009 23:45:03 +0000</pubDate>
		<dc:creator>Boliboop</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Arduino]]></category>

		<guid isPermaLink="false">http://www.troise.net/boliboop/?p=787</guid>
		<description><![CDATA[Eccoci al secondo appuntamento con Arduino. Dopo aver semplicemente accesso il nostro amico, ora, seguendo i tutorial del sito web di Arduino, ci imbattiamo come primo programma d&#8217;esempio in Blink. Nella descrizione annessa a tale esempio viene spiegato come sia uso comune, in quasi tutti i linguaggi di programmazione, introdurre la sintassi e le prime [...]]]></description>
			<content:encoded><![CDATA[<p>Eccoci al secondo appuntamento con Arduino. Dopo aver semplicemente accesso il nostro amico, ora, seguendo i <a href="http://arduino.cc/it/Tutorial/">tutorial</a> del sito web di Arduino, ci imbattiamo come primo programma d&#8217;esempio in <strong>Blink</strong>. Nella descrizione annessa a tale esempio viene spiegato come sia uso comune, in quasi tutti i linguaggi di programmazione, introdurre la sintassi e le prime funzioni con un software che mostri sullo schermo la classica frase <a href="http://it.wikipedia.org/wiki/Hello_world">Hello, World!</a>. Ma dal momento che Arduino non ha uno schermo, faremo lampeggiare un led&#8230; in segno di saluto.</p>
<p>Come abbiamo notato nel precedente <a href="http://www.troise.net/boliboop/arduino-duemilanove-inizia-lavventura/">articolo introduttivo</a>, sono installati su Arduino almeno due led: il primo è arancione ed è contrassegnato dall&#8217;etichetta <strong>PWR</strong> (che sta per <em>power</em>) e segnala se c&#8217;è alimentazione, mentre il secondo è verde ed ha l&#8217;etichetta <strong>L</strong> e per quel che sappiamo, per ora, il suo unico scopo e quello di essere un led, appunto.</p>
<p>Questo secondo led chiamato <strong>L</strong> è connesso al pin 13, quindi: inviare corrente al pin <strong>13</strong> significa accendere il led <strong>L</strong>. Ricordiamocelo.</p>
<p><img src="http://www.troise.net/boliboop/wp-content/uploads/2009/01/img_5516-rc-480x329.jpg" alt="Arduino Duemilanove - pin 13" title="Arduino Duemilanove - pin 13" width="480" height="329" class="aligncenter size-medium wp-image-801" /></p>
<p>Apriamo il software Arduino e copiamo il seguente codice (in alternativa lo si può prelevare dal menu <em>File>Sketchbook>Examples>Digital>Blink</em>)</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">int</span> ledPin <span style="color: #339933;">=</span> <span style="color: #0000dd;">13</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  pinMode<span style="color: #009900;">&#40;</span>ledPin<span style="color: #339933;">,</span> OUTPUT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> loop<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  digitalWrite<span style="color: #009900;">&#40;</span>ledPin<span style="color: #339933;">,</span> HIGH<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  delay<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  digitalWrite<span style="color: #009900;">&#40;</span>ledPin<span style="color: #339933;">,</span> LOW<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  delay<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>prima di inviarlo ad Arduino, vediamo in dettaglio come si legge questo codice (che è scritto in <a href="http://it.wikipedia.org/wiki/C_(linguaggio)">linguaggio C</a>) e cosa ordina di fare al dispositivo.</p>
<p>La <strong>riga 1</strong> del codice recita <code>int ledPin = 13;</code> e non fa altro che impostare una variabile chiamata <em>ledPin</em> (ma la si può chiamare come si vuole) al valore 13. Ricordatevi sempre il punto e virgola alla fine di una istruzione, comprese quelle all&#8217;interno dei blocchi definiti dalle parentesi graffe.</p>
<p>La <strong>riga 3</strong> apre, con il comando <code>void setup()</code>, una sezione entro la quale si possono settare alcuni parametri iniziali di Arduino. In questo caso, in <strong>riga 5</strong>, il comando <code>pinMode(ledPin, OUTPUT);</code> non fa l&#8217;altro che imporre ad Arduino uno specifico uso per il pin 13, cioè come output. In parole povere con questo comando stiamo dicendo che il pin 13 non dev&#8217;essere usato per raccogliere informazioni (input) ma per mostrare informazioni (output).</p>
<p>Il gruppo successivo di istruzioni, introdotto dal comando <code>void loop()</code>, descrive la sequenza di istruzioni che Arduino deve eseguire continuamente. <em>Loop</em> infatti sta per <em>ciclo</em>, e tutto ciò che si trova tra le <strong>rige 10 e 13</strong> viene ripetuto all&#8217;infinito.</p>
<p>Ma cosa dicono le istruzioni tra le righe 10 e 13? Essendo il pin 13 uno della seriei dei pin DIGITAL, la <strong>riga 10</strong> assegna a questo pin un valore HIGH (ovvero alto) tramite il comando <code>digitalWrite(ledPin, HIGH);</code>. Questo significa, nella fattispecie, che la riga 10 ordina ad Arduino di applicare una differenza di potenziale di 5 Volt al pin 13 (e corrisponde all&#8217;1 del sistema binario usato in elettronica). questo perché la variabile <em>ledPin</em> è stata impostata al valore 13, nella prima riga del codice.</p>
<p>La riga successiva, la <strong>11</strong>, ordina ad Arduino di attendere per un secondo esatto e lo fa tramite il comando <code>delay(1000);</code> il cui valore tra parentesi è espresso in millisecondi.</p>
<p>La <strong>riga 12</strong> imposta il valore del pin 13 su LOW, lo zero digitale, zero anche in Volt.</p>
<p>L&#8217;ultima riga del blocco è identica alla riga 11, e serve ad attendere un altro secondo prima di ripetere l&#8217;intero ciclo.</p>
<p><strong>Ok, abbiamo parlato di pin, e il led che doveva lampeggiare?</strong> E&#8217; sufficiente ricordarsi che il led <strong>L</strong> e il pin <strong>13</strong> sono connessi nella scheda Arduino modello Duemilanove. E quindi i valori di potenziale HIGH e LOW di cui abbiamo parlato vengono automaticamente <em>visti</em> dal led <strong>L</strong> che comincerà immediatamente a lampeggiare, con il ritmo di una accensione od uno spegnimento al secondo.</p>
<p><strong>Ok, come si carica il programma su Arduino per farglielo eseguire?</strong> Prima di tutto è sempre buona norma controllare che il codice scritto sia conforme alle specifiche della scheda Arduino utilizzata. Per questo, premendo Command+R (su Mac) o andando sul menu <em>Sketch>Verify/Compile</em>, possiamo chiedere alla piattaforma di programmazione di controllare la correttezza del codice. </p>
<p>Se, dopo qualche secondo, appare in basso la scritta <strong>Done compiling.</strong> vuol dire che la verifica è andata a buon fine e non ci sono né errori di sintassi né incompatibilità con l&#8217;hardware (ah, Arduino si chiama così proprio per assonanza con hardware&#8230; l&#8217;avevate già capito? Bravi.).</p>
<p>Sotto a Done compiling appare anche una riga che ci dice quanta memoria occuperebbe questo programma una volta caricato su Arduino:</p>
<blockquote><p>Binary sketch size: 1124 bytes (of a 14336 byte maximum)</p></blockquote>
<p>Arduino è dotato di una memoria flash da 16 Kbyte, di cui circa 2 KB utilizzati dal <em>bootloader</em> (il sistema che consente ad Arduino di ricevere correttamente i programmi dal computer).</p>
<p><strong>Ok, carichiamo il programma su Arduino?</strong> Sì, è sufficiente premere Command+U, oppure andare su <em>File>Upload to I/O Board</em> e il programma, in pochi secondi, viene caricato e mandato in esecuzione. </p>
<p>Durante la fase di caricamento vedrete alcuni led lampeggiare anche molto velocemente. Si tratta del già conosciuto led <strong>L</strong> ed anche dei due nuovi led <strong>RX</strong> e <strong>TX</strong> (si tratta di indicatori di lettura e scrittura sulla memoria di Arduino). Finito il vortice di lampeggii, il led <strong>L</strong> comincia a comportarsi esattamente come definito nel programma, alternando accensioni e spegnimenti al ritmo di una al secondo.</p>
<p>Complimenti, il vostro primo <strong>Blink</strong> funziona egregiamente!</p>
<p>Per interrompere il programma bisogna spegnere Arduino staccando il cavo USB, ma ricordate che il programma è memorizzato e, appena ricollegate Arduino (alla porta USB, ad un alimentatore per iPod, ad un trasformatore a corrente continua tra 7 e 12 Volt o ad una batteria) il programma ripartirà immediatamente.</p>
<p><strong>Nel prossimo articolo</strong> vedremo come personalizzare questo primo programma per esplorare la logica con cui è scritto e nuovi modi per espandere Arduino.</p>
<p class="akst_link"><a href="http://www.troise.net/boliboop/?p=787&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_787" class="akst_share_link">Condividi</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.troise.net/boliboop/arduino-duemilanove-hello-blink/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Arduino Duemilanove: inizia l&#8217;avventura</title>
		<link>http://www.troise.net/boliboop/arduino-duemilanove-inizia-lavventura/</link>
		<comments>http://www.troise.net/boliboop/arduino-duemilanove-inizia-lavventura/#comments</comments>
		<pubDate>Fri, 23 Jan 2009 22:49:53 +0000</pubDate>
		<dc:creator>Boliboop</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Arduino]]></category>

		<guid isPermaLink="false">http://www.troise.net/boliboop/?p=774</guid>
		<description><![CDATA[
Arduino è una &#8220;piattaforma di prototipazione elettronica open-source&#8221; (ne accennai un anno fa). 
E&#8217; cioè? In poche parole è un fantastico aggeggio made in Italy che può caricare in memoria un software, registrare stimoli dall&#8217;esterno e inviare comandi a una serie infinita di motori, luci ed attuatori di ogni genere. Apparecchiatura dal grande successo internazionale, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.troise.net/boliboop/wp-content/uploads/2009/01/img_5509-480x319.jpg" alt="Arduino Duemilanove - fronte" title="Arduino Duemilanove - fronte" width="480" height="319" class="aligncenter size-medium wp-image-780" /></p>
<p><a href="http://arduino.cc/">Arduino</a> è una &#8220;piattaforma di prototipazione elettronica open-source&#8221; (ne accennai <a href="http://www.troise.net/boliboop/hardware-open-source/">un anno fa</a>). </p>
<p><strong>E&#8217; cioè?</strong> In poche parole è un fantastico aggeggio <em>made in Italy</em> che può caricare in memoria un software, registrare stimoli dall&#8217;esterno e inviare comandi a una serie infinita di motori, luci ed attuatori di ogni genere. Apparecchiatura dal grande successo internazionale, è stata progettata per artisti, designer, hobbisti e chiunque sia interessato a create oggetti o ambienti interattivi. <a href="http://arduino.cc/it/Guide/Introduction">Arduino</a>, in sostanza, è uno strumento che permette di costruire computer in grado di interagire con l&#8217;ambiente in cui si trovano.</p>
<p><img src="http://www.troise.net/boliboop/wp-content/uploads/2009/01/img_5510-480x324.jpg" alt="Arduino Duemilanove - retro" title="Arduino Duemilanove - retro" width="480" height="324" class="aligncenter size-medium wp-image-781" /></p>
<p><strong>E quindi?</strong> Con questo primo articolo introduttivo iniziamo (io e Andrea Giansanti, la mente creativa del progetto) lo studio di questa piccola ma potente apparecchiatura elettronica allo scopo di esplorarne le potenzialità e di vedere&#8230; dove ci porta.</p>
<p>L&#8217;avventura è iniziata mercoledì mattina quando abbiamo fatto l&#8217;ordine per il <a href="http://www.smartprj.com/catalog/index.php?main_page=product_info&#038;cPath=1&#038;products_id=10">KIT Workshop &#8211; Livello base</a> (che comprende l&#8217;ultima versione di Arduino, chiamata <a href="http://arduino.cc/it/Main/ArduinoBoardDuemilanove">Duemilanove</a>) sullo shop online di <a href="http://www.smartprj.com/">Smart Projects</a> (Arduino è reperibile anche singolarmente, ed anche su <a href="http://www.robot-italy.com/index.php?cPath=1_119">Robot Italy</a>). Con una spesa di soli 50 euro ci siamo portati a casa la seguente attrezzatura:</p>
<blockquote><p>1 Arduino Duemilnove Board + 1 USB cable, 1 Straight single line pinhead connectors 2,54 40&#215;1, 1 Breadboard, 840 tie points, 1 Set of 70 breadboard jumper wires, 5 10K Ohm Resistors 1/4W, 5 2.2K Ohm Resistor 1/4 W, 10 220 Ohm Resistors 1/4W, 5 330K Ohm Resistors 1/4W, 5 100nF capacitor polyester, 5 10nF capacitor polyester, 3 100uF electrolytic capacitor 25Vdc, 1 4,7K Ohm Thermistor, 1 70..100K Ohm LDR VT90N2, 3 5mm RED LED, 1 5mm GREEN LED, 1 5mm YELLOW LED, 1 10Kohm linear potentiometer, pcb terminals, 2 BC547 Transistor in TO92 Package, 1 Piezo buzzer, 5 PCB Pushbutton, 12&#215;12mm size, 2 4N35 Optocoupler DIL-6 package, 2 Tilt sensor, 1 Diode 1n4007, 1 MOS Irf540.</p></blockquote>
<p>Nonostante lo shop on-line avesse specificato un tempo di consegna di 48-72 ore, Arduino  e tutto il kit sono arrivati in sole 24 ore.</p>
<p>Ho deciso di pubblicare una serie di articoli per creare un resoconto dello studio di Arduino Duemilanove in italiano, sia come riferimento futuro per noi stessi, ma anche per rendere meno ampia la mancanza di materiale on-line su questo specifico modello di Arduino e in particolar modo in italiano. Essendo alle prime armi e non avendo una conoscenza dei precedenti modelli, ci concentreremo quindi solo su questo modello.</p>
<p><strong>Ok, come si installa?</strong> Acquistato l&#8217;hardware, anche se è possibile <a href="http://arduino.cc/it/Main/ArduinoBoardSerialSingleSided3">autocostruirselo</a> (qui lo <a href="http://arduino.cc/it/uploads/Main/arduino-duemilanove-schematic.pdf">schema costruttivo</a>, ricordate che è open-source!), è stato necessario installare sia la piattaforma di programmazione, ovvero il <a href="http://arduino.cc/it/Main/Software">software Arduino</a>, disponibile per Mac OS X, Linux e Windows, sia il giusto driver USB (allegato al software, anche se la versione più aggiornata è scaricabile sul sito della <a href=" http://www.ftdichip.com/Drivers/VCP.htm">FTDI</a>).</p>
<p><strong>Installato tutto?</strong> Bene, lanciate il software Arduino, collegate Arduino Duemilanove al computer tramite il cavo USB in dotazione, selezionate (se necessario) la corretta Serial Port (su Mac è quella che contiene la dicitura <em>tty.usbserial</em>) nel menu <em>Tools</em> e&#8230; se il led etichettato <strong>PWR</strong> è acceso e arancione (vedi figura in basso) allora il vostro Arduino è correttamente alimentato!</p>
<p>Il led etichettato <strong>L</strong> dovrebbe lampeggiare con una luce verde, in seguito vedremo come utilizzata tale led.</p>
<p><img src="http://www.troise.net/boliboop/wp-content/uploads/2009/01/img_5506-c-419x480.jpg" alt="Arduino Duemilanove - LED e alimentazione USB" title="Arduino Duemilanove - LED e alimentazione USB" width="419" height="480" class="aligncenter size-medium wp-image-785" /></p>
<p>Nel prossimo articolo vedremo come caricare il primo programma d&#8217;esempio, per insegnare i primi passi al vostro Arduino. Per qualsiasi domanda, richiesta o segnalazione d&#8217;errore, lasciate un commento.</p>
<p class="akst_link"><a href="http://www.troise.net/boliboop/?p=774&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_774" class="akst_share_link">Condividi</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.troise.net/boliboop/arduino-duemilanove-inizia-lavventura/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Assistenza tecnica: report on-line</title>
		<link>http://www.troise.net/boliboop/assistenza-tecnica-report-on-line/</link>
		<comments>http://www.troise.net/boliboop/assistenza-tecnica-report-on-line/#comments</comments>
		<pubDate>Wed, 14 Nov 2007 17:34:40 +0000</pubDate>
		<dc:creator>Boliboop</dc:creator>
				<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.troise.net/boliboop/assistenza-tecnica-report-on-line/</guid>
		<description><![CDATA[Dopo un po&#8217; di studio e di lavoro con PHP e con le API di Filemaker, ho realizzato per il sito di Computime un&#8217;interfaccia web che permette di verificare velocemente se è pronto un Mac o un iPod (o qualsiasi altro prodotto) che avete portato a riparare (qui la pagina dell&#8217;Assistenza se volete dare un&#8217;occhiata). [...]]]></description>
			<content:encoded><![CDATA[<p>Dopo un po&#8217; di studio e di lavoro con PHP e con le API di Filemaker, ho realizzato per <a href="http://www.computime.it">il sito di Computime</a> un&#8217;interfaccia web che permette di verificare velocemente se è pronto un Mac o un iPod (o qualsiasi altro prodotto) che avete portato a riparare (<a href="http://www.computime.it/interne/index.php?paginaDaCaricare=assistenza.html">qui la pagina dell&#8217;Assistenza</a> se volete dare un&#8217;occhiata). Un piccolo script che permette di velocizzare lo scambio di informazioni tra Assistenza tecnica e clienti. Una piccola soddisfazione personale <img src='http://www.troise.net/boliboop/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  </p>
<p class="akst_link"><a href="http://www.troise.net/boliboop/?p=767&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_767" class="akst_share_link">Condividi</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.troise.net/boliboop/assistenza-tecnica-report-on-line/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GoOSe e gOS: sistemi operativi con la G</title>
		<link>http://www.troise.net/boliboop/goose-e-gos-sistemi-operativi-con-la-g/</link>
		<comments>http://www.troise.net/boliboop/goose-e-gos-sistemi-operativi-con-la-g/#comments</comments>
		<pubDate>Wed, 07 Nov 2007 05:26:52 +0000</pubDate>
		<dc:creator>Boliboop</dc:creator>
				<category><![CDATA[Informatica]]></category>

		<guid isPermaLink="false">http://www.troise.net/boliboop/goose-e-gos-sistemi-operativi-con-la-g/</guid>
		<description><![CDATA[
Tempo fa vi parlare delle voci su GoOSe, acronimo di “Google Operating System Environment”, il quale più che un sistema operativo vero e proprio doveva essere un “ambiente” Web capace di sfruttare tutte le varie applicazioni in Ajax sviluppate da Google. In realtà si è scoperto che questo Google OS, era semplicemente una distribuzione Linux [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.troise.net/boliboop/wp-content/uploads/2007/11/greenpc_googleos.jpg" rel="lightbox" title="gOS"><img src="http://www.troise.net/boliboop/wp-content/uploads/2007/11/greenpc_googleos.jpg" width="440" height="294" alt="gOS" class="imageframe" style="margin-left:auto; margin-right:auto;" /></a></p>
<p>Tempo fa vi parlare delle voci su <a href="http://www.troise.net/boliboop/google-drive-e-goose/">GoOSe</a>, acronimo di “Google Operating System Environment”, il quale più che un sistema operativo vero e proprio doveva essere un “ambiente” Web capace di sfruttare tutte le varie applicazioni in Ajax sviluppate da Google. In realtà si è scoperto che questo Google OS, era semplicemente una distribuzione Linux usata dagli sviluppatori Google con tutti i propri strumenti ed applicazioni utili.</p>
<p>Come riferisce <a href="http://www.downloadblog.it/post/5010/green-os-o-google-os-prova-il-live-cd-sul-tuo-computer">downloadblog</a>, invece, pare che sia stato distribuito un gPC (la g sta per green, non Google) che monta una distribuzione verde di Ubuntu:</p>
<blockquote><p>si tratta del primo sistema operativo che esce con le applicazioni di Google come scelta primaria (è presente anche una installazione di OpenOffice).<br />
Nella barra delle applicazioni OSX-style troviamo infatti oltre alle applicazioni di Docs &#038; Spreadsheets, link a YouTube, Blogger, Google Maps ma anche a Facebook e Wikipedia.</p></blockquote>
<p>Si può scaricare l&#8217;immagine del Live CD per provarla senza installarla. Si tratta però di un immagine più grande di un CD e va quindi masterizzata su un DVD. Il file torrent si trova <a href="http://linuxtracker.org/torrents-details.php?id=4822">qui</a>.</p>
<p class="akst_link"><a href="http://www.troise.net/boliboop/?p=764&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_764" class="akst_share_link">Condividi</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.troise.net/boliboop/goose-e-gos-sistemi-operativi-con-la-g/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>One Laptop per Child: le impressioni di Paolo Attivissimo</title>
		<link>http://www.troise.net/boliboop/one-laptop-per-child-le-impressioni-di-paolo-attivissimo/</link>
		<comments>http://www.troise.net/boliboop/one-laptop-per-child-le-impressioni-di-paolo-attivissimo/#comments</comments>
		<pubDate>Mon, 05 Nov 2007 05:51:59 +0000</pubDate>
		<dc:creator>Boliboop</dc:creator>
				<category><![CDATA[Generale]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Società]]></category>

		<guid isPermaLink="false">http://www.troise.net/boliboop/one-laptop-per-child-le-impressioni-di-paolo-attivissimo/</guid>
		<description><![CDATA[
Dimensioni ridottissime, carrozzeria giocattolosa ma robusta, ideale per i bambini, nessuno spigolo tagliente, una tastiera impermeabile con tasti piccoli per dita piccole, uno schermo che si vede benissimo in piena luce, Wifi integrato&#8230; questo è un laptop che farà gola anche a molti utenti del Primo Mondo. E&#8217; quindi validissima la formula &#8220;con 399 dollari [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.troise.net/boliboop/wp-content/uploads/2007/11/olpc-su-tavolo-c.jpg" rel="lightbox" title="OLPC"><img src="http://www.troise.net/boliboop/wp-content/uploads/2007/11/olpc-su-tavolo-c.jpg" width="308" height="400" alt="OLPC" class="imageframe" style="margin-left:auto; margin-right:auto;" /></a></p>
<blockquote><p>Dimensioni ridottissime, carrozzeria giocattolosa ma robusta, ideale per i bambini, nessuno spigolo tagliente, una tastiera impermeabile con tasti piccoli per dita piccole, uno schermo che si vede benissimo in piena luce, Wifi integrato&#8230; questo è un laptop che farà gola anche a molti utenti del Primo Mondo. E&#8217; quindi validissima la formula &#8220;con 399 dollari ne paghi due, ne prendi uno, e l&#8217;altro lo doni ai bambini&#8221; [...] ha una webcam incorporata. E lo schermo è girevole per trasformare l&#8217;OLPC in un libro elettronico. Niente HD; solo memoria Flash, più che sufficiente per foto e testi. E ci gira su Linux.</p></blockquote>
<p>questa la descrizione dell&#8217;OLPC, presentato al Linuxday di Cinisello Balsamo di pochi giorni fa, scritta da Paolo Attivissimo in <a href="http://attivissimo.blogspot.com/2007/10/olpc-al-linuxday.html">questo post</a>. Decisamente interessante.</p>
<p class="akst_link"><a href="http://www.troise.net/boliboop/?p=762&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_762" class="akst_share_link">Condividi</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.troise.net/boliboop/one-laptop-per-child-le-impressioni-di-paolo-attivissimo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

