<?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>Logicaprogrammabile.it - Esperimenti con Arduino e Netduino</title>
	<atom:link href="http://www.logicaprogrammabile.it/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.logicaprogrammabile.it</link>
	<description>Esperimenti con Netduino e Arduino</description>
	<lastBuildDate>Thu, 23 May 2013 12:11:25 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Open Day Arduino e stampanti 3D</title>
		<link>http://www.logicaprogrammabile.it/open-day-arduino-stampanti-3d/</link>
		<comments>http://www.logicaprogrammabile.it/open-day-arduino-stampanti-3d/#comments</comments>
		<pubDate>Wed, 15 May 2013 07:10:26 +0000</pubDate>
		<dc:creator>Marco</dc:creator>
				<category><![CDATA[CorsoArduino]]></category>
		<category><![CDATA[Off Topics]]></category>
		<category><![CDATA[Corsi]]></category>
		<category><![CDATA[Eventi]]></category>
		<category><![CDATA[Formazione]]></category>

		<guid isPermaLink="false">http://www.logicaprogrammabile.it/?p=3621</guid>
		<description><![CDATA[Il 5 Luglio 2013, Campus Camilla organizza una giornata di formazione gratuita dedicata alla programmazione con Arduino e alle stampanti 3D. Di seguito il programma della open day: Ore 9:30 Presentazione della giornata Ore 10:00 Logo 3DItaly Introduzione alla Filosofia Makers la nuova rivoluzione industriale fabbricazione digitale fra bit e atomi accesso alle tecnologie i [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/05/CampusCamilla.png"><img class="aligncenter size-full wp-image-3622" alt="Open day campus camilla" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/05/CampusCamilla.png" width="132" height="66" /></a></p>
<p>Il 5 Luglio 2013, <a href="http://www.internetdeglioggetti.it/" target="_blank"><strong>Campus Camilla</strong></a> organizza una giornata di formazione gratuita dedicata alla programmazione con Arduino e alle stampanti 3D.</p>
<p>Di seguito il programma della open day:</p>
<p><strong>Ore 9:30</strong></p>
<p style="padding-left: 30px;">Presentazione della giornata</p>
<p><strong>Ore 10:00</strong></p>
<p style="padding-left: 30px;">Logo 3DItaly</p>
<p style="padding-left: 30px;"><strong>Introduzione alla Filosofia Makers</strong></p>
<ul>
<li>la nuova rivoluzione industriale</li>
<li>fabbricazione digitale fra bit e atomi</li>
<li>accesso alle tecnologie</li>
<li>i Fablab per le comunità</li>
<li>l’esperienza dell’artigianato</li>
<li>condivisione open</li>
<li>dal prototipo al prodotto finito</li>
<li>una nuova forma per il mondo industriale</li>
</ul>
<p style="padding-left: 30px;"><strong>3D printing: Introduzione alla stampa, alle risorse ed alle applicazioni</strong></p>
<ul>
<li>una guida pratica per la prima stampa 3D</li>
<li>open source software e hardware</li>
<li>i modelli open e le risorse disponibili online</li>
<li>i vari modelli di stampanti ed i materiali di stampa</li>
<li>le applicazioni ed i vari campi d’impiego</li>
<li>la stampa 3D per l’educazione e per il futuro del pianeta</li>
</ul>
<p><strong>Ore 11:30</strong></p>
<p style="padding-left: 30px;">Elettronica In: La nostra filosofia sulle stampanti 3D</p>
<p><strong>Ore 12:30</strong></p>
<p style="padding-left: 30px;">Scaldiamo i motori!<br />
Stampanti 3D in azione!</p>
<p><em><strong>Buffet gratuito</strong></em></p>
<p><strong>Ore 14:30 – Corso gratuito su Arduino</strong></p>
<p style="padding-left: 30px;">Obiettivi del corso, cosa avrai imparato al termine del corso:</p>
<ul>
<li>conoscere e aver installato l’IDE Arduino</li>
<li>conoscere le differenze tra Arduino Uno, Mini, Mega, Due;</li>
<li>conoscere le differenze tra segnale analogico e digitale</li>
<li>riconoscere un pin di aduino se analogico o digitale</li>
<li>conoscere l’ADC e i livelli di segnali convertiti</li>
<li>saper usare le principali librerie</li>
<li>riconoscere un motore, un led, un relé</li>
<li>riconoscere i sensori compatibili Arduino</li>
<li>conoscere le principali shield disponibili e la loro funzione</li>
<li>aver già realizzato almeno un proprio progetto</li>
<li>aver chiaro come si affronta un progetto con Arduino</li>
</ul>
<p style="padding-left: 30px;"><strong>Nello specifico, il corso tratterà i seguenti argomenti tecnici:</strong></p>
<ul>
<li>riconoscere e provare i pin di arduino</li>
<li>differenza tra pin digitali, analogici e PWM</li>
<li>basi di elettronica: led, motori cc, motori passo-passo</li>
<li>collegare attuatori ( led, motori, relè )</li>
<li>collegare sensori (pulsanti, potenziometri, ecc..)</li>
<li>leggere i sensori per interagire con l’ambiente</li>
<li>controllare velocità e verso dei motori alcune shield disponibili con Arduino</li>
</ul>
<p>Tutte le info per poter partecipare al corso le trovate sulla pagina <a href="http://www.internetdeglioggetti.it/openday/" target="_blank">http://www.internetdeglioggetti.it/openday/</a> un evento interessante che vi consiglio di non perdere.</p>
<fb:like href='http://www.logicaprogrammabile.it/open-day-arduino-stampanti-3d/' send='false' layout='button_count' show_faces='true' width='450' height='65' action='like' colorscheme='light' font='lucida grande'></fb:like>]]></content:encoded>
			<wfw:commentRss>http://www.logicaprogrammabile.it/open-day-arduino-stampanti-3d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flyport Ethernet, conoscere i pin digitali</title>
		<link>http://www.logicaprogrammabile.it/flyport-ethernet-pin-digitali/</link>
		<comments>http://www.logicaprogrammabile.it/flyport-ethernet-pin-digitali/#comments</comments>
		<pubDate>Mon, 13 May 2013 09:22:15 +0000</pubDate>
		<dc:creator>Marco</dc:creator>
				<category><![CDATA[OpenPicus]]></category>
		<category><![CDATA[Flyport]]></category>
		<category><![CDATA[GPIO]]></category>
		<category><![CDATA[Ingressi Analogici]]></category>

		<guid isPermaLink="false">http://www.logicaprogrammabile.it/?p=3582</guid>
		<description><![CDATA[Come configurare ed utilizzare i pin digitali del Flyport Ethernet L&#8217;utilizzo dei pin digitali rientra tra le nozioni basilari da comprendere per poter iniziare ad interagire con  i dispositivi ed i componenti esterni che permettono al modulo Flyport Ethernet di far parte di un sistema complesso. Il modulo Flyport Ethernet è composto da due connettori, [...]]]></description>
				<content:encoded><![CDATA[<h3>Come configurare ed utilizzare i pin digitali del Flyport Ethernet</h3>
<p>L&#8217;utilizzo dei pin digitali rientra tra le nozioni basilari da comprendere per poter iniziare ad interagire con  i dispositivi ed i componenti esterni che permettono al modulo <a href="http://wiki.openpicus.com/index.php/Flyport_Ethernet" target="_blank"><strong>Flyport Ethernet</strong></a> di far parte di un sistema complesso.<br />
Il modulo <strong>Flyport Ethernet</strong> è composto da due <strong>connettori, J1 e J2</strong>; essi sono collegati direttamente ai pin del microcontrollore <strong>Pic24F</strong> ed al controller Ethernet <strong>ENC424J600</strong>.</p>
<p>Tramite questi connettori possiamo collegarlo al modulo <strong>NEST Proto</strong> o ad un nostro circuito host dedicato.<br />
Nel mio caso utilizzerò il <a href="http://wiki.openpicus.com/index.php/Proto_NEST" target="_blank">Nest Proto</a> per motivi di semplicità e di uniformità dei tutorial.</p>
<p>Nel Nest Proto è presente un connettore femmina collegato direttamente al connettore J1 del Flyport Ethernet, che permette di utilizzare dei fili elettrici pint-to-pin per realizzare velocemente prototipi ed esperimenti. Tralasciamo, per ora, il connettore J2 che viene impiegato per la comunicazione ethernet (tramite una porta RJ45 da saldare sul NEST Proto), e per offrire altri 8 pin IO.</p>
<p><span id="more-3582"></span></p>
<p>Il connettore <strong>J1</strong> è composto da <strong>26 pin</strong>, ad ognuno è associata una funzione specifica. La tabella seguente mostra la pin-function del connettore:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/05/Flyport-J1-Port.png"><img class="aligncenter size-full wp-image-3585" alt="Flyport Ethernet J1 Port mapping" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/05/Flyport-J1-Port.png" width="564" height="546" /></a></p>
<h4>Configurare pin GPIO come uscita</h4>
<p>I pin contrassegnati come <strong>GPIO</strong> possono funzionare sia come<strong> ingressi</strong> sia come<strong> uscite</strong> digitali. La colonna <strong>Remappable</strong> indica invece se al pin può essere associata una funzione speciale, ad esempio i pin <strong>p1</strong> e <strong>p3</strong> NON sono rimappabili e quindi possono essere configurati o come GPIO o come bus I2C. Un pin rimappabile può funzionare sia come GPIO ed è possibile associarli anche una funzionalità aggiuntiva come PWM, UART o SPI. Questa peculiarità permette di avere un sistema molto flessibile, configurabile per ogni esigenza progettuale.<br />
La colonna, <strong>5V Tollerant</strong>, indica se il pin può sopportare tensioni di 5 Volt (Logica TTL), ad esempio il pin p17 non è 5V tollerant e quindi dobbiamo stare <strong>molto attenti</strong> a non collegare tensioni superiori ai 3.3V, causa possibile danneggiamento del microcontrollore.</p>
<p>Utilizziamo il circuito in figura per scrivere un piccolo programma che utilizzerà le istruzioni per definire il <strong>pin p2</strong> come uscita digitale:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/05/TestIO.png"><img class="aligncenter size-full wp-image-3607" alt="Flyport Ethernet Led blink" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/05/TestIO.png" width="429" height="304" /></a></p>
<p>al pin <strong>p2</strong>, ho collegato una resistenza da 330 ohm ed un diodo led. Da notare che i numeri dei pin sono disposti utilizzando la prima riga, del connettore J1, per i numeri dispari e la seconda riga per i numeri pari.</p>
<p>Il codice seguente accende e spegne il led ogni 500ms:</p>
<pre class="brush: cpp; title: Codice di esempio: ; notranslate">
#include &quot;taskFlyport.h&quot;

void FlyportTask()
{
  //il pin p2 viene configurato
  //come uscita digitale
  IOInit(p2, out);

  //ciclo infinito
  while(1)
  {
    //commuto il pin p2 a livello
    //logico alto
    IOPut(p2, on);
    //creo un ritardo di 500ms
    DelayMs(500);
    //commuto il pin p2 a livello
    //logico basso
    IOPut(p2, off);
    //creo un ritardo di 500ms
    DelayMs(500);
  }
}
</pre>
<p>L&#8217;istruzione che permette di definire un pin come uscita o come ingresso è la <strong>IOInit()</strong>. I parametri da passare sono il numero del pin, espresso nella forma <strong>px</strong> (dove x è il numero del pin) ed il flag per specificare un uscita <strong>out</strong> o un ingresso <strong>in</strong>.<br />
In questo caso il pin <strong>p2</strong> viene usato come uscita (<strong>out</strong>). Per poter commutare il suo stato logico utilizziamo la funzione <strong>IOPut()</strong>. Questa funzione accetta due parametri, il primo è il numero del pin, definito nella <strong>IOInit</strong>, e il secondo specifica se metterlo a livello logico alto (<strong>on</strong>) o al livello basso(<strong>off</strong>).</p>
<h4>Configurare pin GPIO come ingresso</h4>
<p>Il pin <strong>p2</strong> viene ora impiegato come <strong>ingresso digitale</strong>. Lo schema elettrico è il seguente:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/05/TestIO_input.png"><img class="aligncenter size-full wp-image-3610" alt="Flyport ethernet input port" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/05/TestIO_input.png" width="494" height="361" /></a></p>
<p>la resistenza R1 serve per avere un livello logico basso sul pin p2 quando il pulsante è aperto. Sul pin <strong>p4</strong> ho collegato un diodo led in modo da poterlo accendere quando premo sul pulsante.<br />
Questo è il codice del firmware da caricare sul Flyport:</p>
<pre class="brush: cpp; title: Codice di esempio: ; notranslate">
#include &quot;taskFlyport.h&quot;

void FlyportTask()
{
  //il pin p2 viene configurato
  //come Ingresso digitale
  IOInit(p2, in);

  //il pin p4 viene configurato
  //come Uscita digitale
  IOInit(p4, out);

  //ciclo infinito
  while(1)
  {
    //verifico lo stato del pin p2
    //Alto o basso
    if(IOGet(p2) == 1)
      //sel il pin è a livello
      //logico alto, accendo il led
      IOPut(p4, on);
    else
      //altrimenti
      //spegni il led
      IOPut(p4, off);

    DelayMs(20);
  }
}
</pre>
<p>Ho usato due istruzioni <strong>IOInit</strong> per definire il pin<strong> p2 come ingresso</strong> e il pin <strong>p4 come uscita</strong>. Nel blocco <strong>while</strong>, controllo, con l&#8217;istruzione <strong>IOGet</strong>, se il livello logico sul pin <strong>p2</strong> è alto. In caso affermativo, utilizzo il pin <strong>p4</strong>, per accendere o spegnere il diodo led.</p>
<p>Nei prossimi tutorial vedremo come attivare la resistenza interna di pull-up e di pull-down per gli ingressi digitali del Flyport Ethernet.</p>
<fb:like href='http://www.logicaprogrammabile.it/flyport-ethernet-pin-digitali/' send='false' layout='button_count' show_faces='true' width='450' height='65' action='like' colorscheme='light' font='lucida grande'></fb:like>]]></content:encoded>
			<wfw:commentRss>http://www.logicaprogrammabile.it/flyport-ethernet-pin-digitali/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Caratteristiche tecniche del Flyport Ethernet</title>
		<link>http://www.logicaprogrammabile.it/caratteristiche-tecniche-del-flyport-ethernet/</link>
		<comments>http://www.logicaprogrammabile.it/caratteristiche-tecniche-del-flyport-ethernet/#comments</comments>
		<pubDate>Mon, 15 Apr 2013 07:59:34 +0000</pubDate>
		<dc:creator>Marco</dc:creator>
				<category><![CDATA[OpenPicus]]></category>
		<category><![CDATA[Flyport]]></category>
		<category><![CDATA[Internet delle cose]]></category>

		<guid isPermaLink="false">http://www.logicaprogrammabile.it/?p=3530</guid>
		<description><![CDATA[Informazioni dettagliate sul modulo Flyport Ethernet Con i precedenti tutorial abbiamo visto tutti i passaggi per configurare l&#8217;ambiente di sviluppo e come caricare il nostro primo programma sul modulo Flyport ethernet senza però conoscere il modulo stesso. In questo articolo verrei analizzare le potenzialità di questo dispositivo, informazioni utili per poter sceglierlo nei nostri progetti. [...]]]></description>
				<content:encoded><![CDATA[<h3>Informazioni dettagliate sul modulo Flyport Ethernet</h3>
<p>Con i precedenti tutorial abbiamo visto tutti i passaggi per configurare l&#8217;ambiente di sviluppo e come caricare il nostro primo programma sul modulo <strong>Flyport ethernet</strong> senza però conoscere il modulo stesso. In questo articolo verrei analizzare le potenzialità di questo dispositivo, informazioni utili per poter sceglierlo nei nostri progetti.</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Flyport_Ethernet.png"><img class="aligncenter size-full wp-image-3532" alt="Flyport Ethernet" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Flyport_Ethernet.png" width="300" height="182" /></a></p>
<p>Le sue <strong>dimensioni</strong> sono di <strong>5 cm x 3.5 cm</strong>, caratteristica sempre apprezzata nelle installazioni dove le dimensioni contenute sono un fattore richiesto.</p>
<p><span id="more-3530"></span><br />
Il <strong>microprocessore</strong> che governa il modulo è il modello della serie PIC24F (<strong>PIC24FJ256</strong>) prodotto dalla <strong>Microchip</strong>, troviamo inoltre il controller <strong>ethernet ENC424j600</strong>, sempre prodotto da <strong>Microchip</strong>. Il processore opera a <strong>16bit</strong> capace di eseguire, con i suoi <strong>32MHz di clock</strong>, 16 milioni di istruzioni al secondo, possiede <strong>256 KByte di Flash</strong> e <strong>16KB di RAM</strong>. L&#8217;interfaccia di rete è una <strong>10/100 Base-T</strong>.<br />
Troviamo collegato sul pcb anche un quarzo da <strong>32.768Mhz</strong> necessario al modulo <strong>RTCC</strong> (Real Time Clock and Calendar) implementato nel microprocessore PIC24F.</p>
<p>Le <strong>porte digitali sono 18</strong>, di cui 14 rimappabili (possibilità di configurarle come ingressi o come uscite), le <strong>porte analogiche sono 4</strong> con una risoluzione di <strong>10bit</strong> (valori da 0 a 1023). Inoltre possiamo configurare <strong>4 porte UART</strong>, <strong>9 canali PWM</strong>, una porta <strong>SPI</strong> e una porta <strong>I2C</strong>.</p>
<p>Il modulo ospita una<strong> memoria flash</strong> seriale da ben <strong>16Mbit</strong> (SST25VF016Bb), utile per memorizzare le pagine html che poi verranno impiegate ad esempio dal webserver interno.</p>
<p>Il <strong>Flyport Ethernet</strong> può essere <strong>alimentato</strong> sia a <strong>5Vdc</strong> sia a <strong>3.3Vdc</strong>.</p>
<p>L&#8217;intervallo di temperature in cui il modulo può operare va da <strong>-20°C a +85°C.</strong> Questi valori sono veramente interessanti permettendo l&#8217;installazione in ambienti anche estremi.</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyportBlock.png"><img class="aligncenter size-full wp-image-3541" alt="Flyport DIagramma a blocchi" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyportBlock.png" width="586" height="353" /></a></p>
<h4>Flyport framework</h4>
<p>All&#8217;interno del microprocessore troviamo, il <strong>bootloader</strong>, un sistema operativo real-time (<strong>freeRTOS</strong>), lo <strong>stack TCP/IP</strong> e l&#8217;<strong>Openpicus Framework</strong>.<br />
Il bootloader è un piccolo software che risiede nella flash del microcontrollore <strong>PIC24F</strong>. Questo software permette di caricare il programma scritto con l&#8217;<strong>Openpicus IDE</strong> dentro la flash del microcontrollore, tramite la porta seriale UART. Inoltre permette di avviare il programma o di resettarlo. Questa scelta permette di usare solamente il convertitore usb seriale piuttosto che impiegare un programmatore esterno più complesso per tutte le fasi di programmazione e di debug.<br />
Il sistema operativo real time è basato su FreeRTOS, realizzato per girare su diversi dispositivi embedded. L&#8217;Openpicus framework integra lo stack TCP/IP tramite questo sistema operativo e permette così di facilitare la gestione di TCP/IP. Nonostante questa semplificazione è comunque richiesta una minima esperienza nell&#8217;uso delle reti e della loro configurazione.</p>
<p>Il modulo, o per meglio dire il sistema Openpicus, si dimostra utile in moltissime applicazioni, da quelle puramente hobbistiche a quelle industriali. Credo che conoscerne il funzionamento e la sua programmazione si davvero utile per arricchire le nostre competenze e per avere dalla nostra un utile strumento da utilizzare anche in campo lavorativo.</p>
<p>E poi è <strong>made in Italy</strong>!</p>
<fb:like href='http://www.logicaprogrammabile.it/caratteristiche-tecniche-del-flyport-ethernet/' send='false' layout='button_count' show_faces='true' width='450' height='65' action='like' colorscheme='light' font='lucida grande'></fb:like>]]></content:encoded>
			<wfw:commentRss>http://www.logicaprogrammabile.it/caratteristiche-tecniche-del-flyport-ethernet/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Flyport Ethernet scrivere il primo programma</title>
		<link>http://www.logicaprogrammabile.it/flyport-ethernet-scrivere-programma/</link>
		<comments>http://www.logicaprogrammabile.it/flyport-ethernet-scrivere-programma/#comments</comments>
		<pubDate>Thu, 11 Apr 2013 14:25:07 +0000</pubDate>
		<dc:creator>Marco</dc:creator>
				<category><![CDATA[OpenPicus]]></category>
		<category><![CDATA[Flyport]]></category>

		<guid isPermaLink="false">http://www.logicaprogrammabile.it/?p=3503</guid>
		<description><![CDATA[Come utilizzare il Flyport IDE per caricare il primo programma Dopo aver visto come installare il software necessario alla scrittura dei programmi e dopo aver installato i driver del programmatore miniUSB Prog, passiamo alla pratica creando un piccolo progetto che ci permetterà di far lampeggiare il led onboard del Flyport ethernet. Avviamo l&#8217;OpenPicus Flyport IDE. [...]]]></description>
				<content:encoded><![CDATA[<h3>Come utilizzare il Flyport IDE per caricare il primo programma</h3>
<p>Dopo aver visto come installare il software necessario alla scrittura dei programmi e dopo aver installato i driver del programmatore <strong>miniUSB Prog</strong>, passiamo alla pratica creando un piccolo progetto che ci permetterà di far lampeggiare il led onboard del <strong>Flyport ethernet</strong>.</p>
<p>Avviamo l&#8217;<strong>OpenPicus Flyport IDE</strong>.<br />
L&#8217;interfaccia grafica è ben organizzata, molto intuitiva e snella.</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyporFirstApp.png"><img class="aligncenter size-full wp-image-3504" alt="FlyporFirstApp" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyporFirstApp.png" width="703" height="586" /></a></p>
<p><span id="more-3503"></span></p>
<p>Creiamo il nostro progetto cliccando sull&#8217;icona <strong>New Project -&gt; Ethernet -&gt;Ethernet 2.3 Basic no webserver</strong>, come rappresentato nella figura seguente:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyporFirstApp1.png"><img class="aligncenter size-full wp-image-3506" alt="flyport tutorial first project" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyporFirstApp1.png" width="529" height="382" /></a></p>
<p>Nella finestra andremmo ad inserire il nome del progetto e la cartella dove verrà salvato, confermiamo cliccando sul pulsante <strong>Create&gt;&gt;</strong>:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyporFirstApp01.png"><img class="aligncenter size-full wp-image-3509" alt="Openpicus" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyporFirstApp01.png" width="672" height="217" /></a></p>
<p>La configurazione dell&#8217;IDE è immediata. L&#8217;interfaccia grafica viene suddivisa in tre blocchi principali, il <strong>pannello progetto</strong> mostra i file sorgente e le eventuali librerie che utilizzeremmo durante lo sviluppo, il <strong>pannello editor codice</strong> è la parte dove andremmo a scrivere le istruzioni che saranno poi compilate e caricate sul <strong>Flyport Ethernet,</strong> infine il <strong>pannello output</strong> mostra tutte le informazioni di compilazione e gli eventuali messaggi di errore.</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyporFirstApp02.png"><img class="aligncenter size-full wp-image-3510" alt="Flyport IDE 2.3" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyporFirstApp02.png" width="697" height="663" /></a></p>
<p>Sul <strong>pannello Editor Codice</strong> viene caricato un template standard. Andremo a modificarlo per poter far lampeggiare il led onboard del nostro <strong>Flyport Ethernet</strong> scrivendo le seguenti istruzioni:</p>
<pre class="brush: cpp; title: Codice di esempio: ; notranslate">
#include &quot;taskFlyport.h&quot;

void FlyportTask()
{
  //blink onboard led D1
  while(1)
  {
    //comuto l'uscita p21 alta
    IOPut(p21,on);
    //attendo 1/2 secondo
    DelayMs(500);
    //commuto l'uscita p21 bassa
    IOPut(p21,off);
    //attendo 1/2 secondo
    DelayMs(500);
  }
}
</pre>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyporFirstApp03.png"><img class="aligncenter size-full wp-image-3517" alt="Editor codice" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyporFirstApp03.png" width="696" height="653" /></a></p>
<p>L&#8217;azione successiva è quella di &#8220;trasformare&#8221;, tramite la compilazione, le nostre istruzioni in un linguaggio comprensibile per il microcontrollore.<br />
Clicchiamo sul pulsante <strong>Compile Project -&gt; Compile</strong>, per avviarla.</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyporFirstApp04.png"><img class="aligncenter size-full wp-image-3518" alt="FlyporFirstApp04" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyporFirstApp04.png" width="256" height="225" /></a></p>
<p>I vari passaggi sono rappresentati nel <strong>pannello Output</strong>. Dopo poco tempo la compilazione termina con successo:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyporFirstApp05.png"><img class="aligncenter size-full wp-image-3519" alt="openpicus flyport compilazione tutorial" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyporFirstApp05.png" width="696" height="653" /></a></p>
<p>Ci siamo quasi, ora che abbiamo il file compilato possiamo caricarlo sul modulo <strong>Flyport</strong> utilizzando il tool <strong>Download firmware</strong>:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyporFirstApp06.png"><img class="aligncenter size-full wp-image-3520" alt="Download firmware flyport" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyporFirstApp06.png" width="235" height="206" /> </a></p>
<p>se non l&#8217;abbiamo fatto colleghiamo il <strong>Flyport Ethernet</strong> e il programmatore <strong>miniUSB Prog</strong> sul modulo <strong>NEST Proto</strong>. Colleghiamo il cavo usb al PC e nella finestra <strong>Openpicus &#8211; Flyport Bootloader</strong> clicchiamo il pulsante <strong>Refresh ports</strong> per aggiornare la lista dei dispositivi COM collegati al PC.<br />
Selezioniamo la porta COM dove è collegato il <strong>miniUSB Prog</strong> (nel mio caso la porta <strong>COM21</strong>, <a title="Openpicus come programmare il Flyport Ethernet" href="http://www.logicaprogrammabile.it/openpicus-programmare-flyport-ethernet/">vedi precedente articolo</a>) e avviamo il download del firmware cliccando sul relativo pulsante <strong>Download</strong>:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyporFirstApp09.png"><img class="aligncenter size-full wp-image-3522" alt="flyport" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyporFirstApp09.png" width="335" height="346" /></a></p>
<p>la barra di avanzamento e la finestra di log mostreranno le fasi di scrittura:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyporFirstApp07.png"><img class="aligncenter size-full wp-image-3523" alt="FlyporFirstApp07" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyporFirstApp07.png" width="333" height="344" /></a></p>
<p>Un popup di conferma ci indicherà che l&#8217;operazione è avvenuta con successo clicchiamo sul pulsante <strong>OK</strong> per chiudere la finestra:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyporFirstApp08.png"><img class="aligncenter size-full wp-image-3524" alt="FlyporFirstApp08" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyporFirstApp08.png" width="335" height="346" /></a></p>
<p>osserviamo il led <strong>D1</strong> posto sul pcb del <strong>Flyport Ethernet</strong> che inizierà a lampeggiare con una cadenza di 1/2 secondo.</p>
<p>Questo tutorial conclude una serie di articoli che permettono, a chi ha poca esperienza, di poter iniziare a smanettare con i moduli <strong>Flyport</strong>. Abbiamo visto infatti come installare l&#8217;ambiente di sviluppo, come installare i driver del programmatore ed infine come eseguire la compilazione e la scrittura del firmware sul modulo Flyport ethernet.</p>
<fb:like href='http://www.logicaprogrammabile.it/flyport-ethernet-scrivere-programma/' send='false' layout='button_count' show_faces='true' width='450' height='65' action='like' colorscheme='light' font='lucida grande'></fb:like>]]></content:encoded>
			<wfw:commentRss>http://www.logicaprogrammabile.it/flyport-ethernet-scrivere-programma/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Openpicus come programmare il Flyport Ethernet</title>
		<link>http://www.logicaprogrammabile.it/openpicus-programmare-flyport-ethernet/</link>
		<comments>http://www.logicaprogrammabile.it/openpicus-programmare-flyport-ethernet/#comments</comments>
		<pubDate>Wed, 10 Apr 2013 10:29:33 +0000</pubDate>
		<dc:creator>Marco</dc:creator>
				<category><![CDATA[OpenPicus]]></category>
		<category><![CDATA[Flyport]]></category>
		<category><![CDATA[Installazione]]></category>

		<guid isPermaLink="false">http://www.logicaprogrammabile.it/?p=3479</guid>
		<description><![CDATA[Installare il miniUSB Prog per caricare il primo programma sul Flyport Ethernet Nel precedente articolo abbiamo visto come installare l&#8217;ambiente di sviluppo che ci permetterà di scrivere i programmi per la piattaforma Openpicus. Ora passeremmo alla pratica utilizzando il Flyport Ethernet Makerkit. Questo starter kit comprende un modulo Flyport Ethernet, il miniUSB Prog ed il [...]]]></description>
				<content:encoded><![CDATA[<h3>Installare il miniUSB Prog per caricare il primo programma sul Flyport Ethernet</h3>
<p>Nel<a title="OpenPicus, prima installazione dell’ambiente di sviluppo" href="http://www.logicaprogrammabile.it/openpicus-installazione-ide/"> precedente articolo</a> abbiamo visto come installare l&#8217;ambiente di sviluppo che ci permetterà di scrivere i programmi per la piattaforma <strong>Openpicus</strong>. Ora passeremmo alla pratica utilizzando il <strong><a href="http://store.openpicus.com/openpicus/prodotti.aspx?cprod=OP015367" target="_blank">Flyport Ethernet Makerkit.</a></strong> Questo starter kit comprende un modulo <strong><a href="http://store.openpicus.com/openpicus/prodotti.aspx?cprod=OP015356" target="_blank">Flyport Ethernet</a></strong>, il <strong><a href="http://store.openpicus.com/openpicus/prodotti.aspx?cprod=OP015371" target="_blank">miniUSB Prog</a></strong> ed il <strong><a href="http://store.openpicus.com/openpicus/prodotti.aspx?cprod=OP015376" target="_blank">Proto Nest</a></strong>.</p>
<p>Il <strong>Proto Nest</strong> permette di ospitare il modulo <strong>Flyport</strong> e il modulo <strong>miniUSB Prog</strong>. Il modulo <strong>Flyport</strong> deve essere inserito nel giusto verso, vi consiglio di inserire prima il modulo miniUSB Prog (anche questo da inserire correttamente confrontando il simbolo <strong>&gt;</strong> serigrafato nel PCB) poichè la sua posizione verticale va ad interferire con il connettore RJ45, rendendo difficoltoso il posizionamento del modulo Flyport.<br />
L&#8217;immagine seguente mostra il corretto posizionamento:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Makerkit.jpg"><img class="aligncenter size-full wp-image-3499" alt="Flyport openpicus makerkit" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Makerkit.jpg" width="310" height="184" /></a></p>
<p>Il modulo miniUSB Prog è un convertitore USB seriale basato sul chip <strong>FTDI FT232</strong>. Le istruzioni seguenti mostrano come installare il dispositivo su Windows 7.</p>
<p><span id="more-3479"></span><br />
La prima operazione da eseguire è il download dei <a href="http://www.ftdichip.com/Drivers/VCP.htm" target="_blank">driver dal sito FTDIchip</a>. Personalmente ho scaricato la versione eseguibile:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Ftdi0.png"><img class="aligncenter size-full wp-image-3494" alt="Ftdi0" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Ftdi0.png" width="391" height="59" /></a></p>
<p>Colleghiamo il miniUSB Prog al computer, dopo qualche istante Windows avvierà la procedura automatica di installazione dei driver:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Ftdi01.png"><img class="aligncenter size-full wp-image-3484" alt="miniUSB Prog" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Ftdi01.png" width="535" height="210" /></a></p>
<p>annulliamo la procedura automatica cliccando sul link &#8220;<strong>Ignora download di driver da Windows Update</strong>&#8220;, confermiamo la nostra scelta cliccando il pulsante <strong>Si</strong> nella seguente finestra:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Ftdi02.png"><img class="aligncenter size-full wp-image-3485" alt="Ftdi02" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Ftdi02.png" width="538" height="253" /></a></p>
<p>l&#8217;installazione viene annullata:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Ftdi03.png"><img class="aligncenter size-full wp-image-3486" alt="Ftdi03" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Ftdi03.png" width="536" height="216" /></a></p>
<p>Nella finestra Gestione Dispositivi (Pannello di controllo -&gt; Sistema e sicurezza) potremmo osservare la presenza del dispositivo <strong>USB Serial Port</strong>:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Ftdi10.png"><img class="aligncenter size-full wp-image-3492" alt="Ftdi10" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Ftdi10.png" width="393" height="503" /></a></p>
<p>Avviamo l&#8217;installazione dei driver tramite il pacchetto <strong>CDM20828_Setup.exe</strong>:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Ftdi00.png"><img class="aligncenter size-full wp-image-3483" alt="Ftdi00" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Ftdi00.png" width="180" height="193" /></a></p>
<p>Clicchiamo sul pulsante <strong>Extract</strong> della seguente finestra:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Ftdi04.png"><img class="aligncenter size-full wp-image-3487" alt="Ftdi04" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Ftdi04.png" width="503" height="389" /></a></p>
<p>Il programma di installazione estrarrà i file necessari ed avvierà automaticamente la procedura guidata:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Ftdi05.png"><img class="aligncenter size-full wp-image-3488" alt="Ftdi05" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Ftdi05.png" width="503" height="389" /></a></p>
<p>Clicchiamo sul pulsante <strong>Avanti</strong> nella prima finestra della procedura guidata:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Ftdi06.png"><img class="aligncenter size-full wp-image-3489" alt="Ftdi06" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Ftdi06.png" width="505" height="388" /></a></p>
<p>i driver saranno copiati sul sistema, questa operazione può durare <span style="text-decoration: underline;">anche diversi minuti</span>, non interrompiamo la procedura e lasciamo collegato il <strong>miniUSB Prog</strong> alla porta usb del PC:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Ftdi07.png"><img class="aligncenter size-full wp-image-3490" alt="Ftdi07" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Ftdi07.png" width="504" height="390" /></a></p>
<p>dopo un po di pazienza l&#8217;installazione termina correttamente, clicchiamo sul pulsante <strong>Fine</strong>:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Ftdi08.png"><img class="aligncenter size-full wp-image-3491" alt="Ftdi08" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Ftdi08.png" width="504" height="387" /></a></p>
<p>Verifichiamo la corretta installazione del convertitore USB seriale anche tramite il pannello <strong>Gestione Dispositivi</strong>:</p>
<p style="text-align: center;"><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Ftdi11.png"><img class="aligncenter size-full wp-image-3493" alt="flyport" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Ftdi11.png" width="511" height="574" /></a></p>
<p>Annottiamo il numero di porta seriale assegnato dal sistema, nel mio caso la <strong>COM21</strong>, questo ci permetterà di selezionare la giusta <strong>COM</strong> in fase di caricamento del firmware sul modulo Flyport.</p>
<fb:like href='http://www.logicaprogrammabile.it/openpicus-programmare-flyport-ethernet/' send='false' layout='button_count' show_faces='true' width='450' height='65' action='like' colorscheme='light' font='lucida grande'></fb:like>]]></content:encoded>
			<wfw:commentRss>http://www.logicaprogrammabile.it/openpicus-programmare-flyport-ethernet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenPicus, prima installazione dell&#8217;ambiente di sviluppo</title>
		<link>http://www.logicaprogrammabile.it/openpicus-installazione-ide/</link>
		<comments>http://www.logicaprogrammabile.it/openpicus-installazione-ide/#comments</comments>
		<pubDate>Tue, 09 Apr 2013 14:30:18 +0000</pubDate>
		<dc:creator>Marco</dc:creator>
				<category><![CDATA[OpenPicus]]></category>
		<category><![CDATA[Flyport]]></category>
		<category><![CDATA[PicMicro]]></category>

		<guid isPermaLink="false">http://www.logicaprogrammabile.it/?p=3437</guid>
		<description><![CDATA[Openpicus: installare il FlyPort IDE ed il compilatore GCC Openpicus è un progetto tutto italiano nato nel 2010, basato sulla filosofia open hardware che permette di realizzare applicazioni dove la connettività è il fattore chiave. Attualmente esistono tre moduli programmabili, il Flyport Ethernet, il Flyport Wi-Fi e il Flyport Gprs. I moduli Flyport sono gestiti [...]]]></description>
				<content:encoded><![CDATA[<h3>Openpicus: installare il FlyPort IDE ed il compilatore GCC</h3>
<p><strong>Openpicus</strong> è un progetto tutto italiano nato nel 2010, basato sulla filosofia open hardware che permette di realizzare applicazioni dove la connettività è il fattore chiave. Attualmente esistono tre moduli programmabili, il <strong>Flyport Ethernet</strong>, il <strong>Flyport Wi-Fi</strong> e il <strong>Flyport Gprs</strong>. I moduli <strong>Flyport</strong> sono gestiti dal microcontrollore <strong>Microchip Pic 24FJ256</strong>(16 bit) operante a 32MHz.</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyportModule.png"><img class="aligncenter size-full wp-image-3439" alt="Moduli Flyport" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyportModule.png" width="590" height="125" /></a></p>
<p>Analizzeremmo meglio le caratteristiche dei moduli <strong>Flyport</strong> nei seguenti tutorial.<br />
Vediamo nel dettaglio come installare l&#8217;ambiente di sviluppo che ci permetterà di scrivere i programmi, di compilarli e caricarli nel modulo <strong>Flyport</strong>.</p>
<p><span id="more-3437"></span></p>
<p>La prima operazione è quella di scaricare il file di setup relativo all&#8217;IDE e al compilatore Microchip C30 seguendo questo link<a href="http://wiki.openpicus.com/index.php?title=Getting_Started" target="_blank"> http://wiki.openpicus.com/index.php?title=Getting_Started</a>.</p>
<p>Partiamo con l&#8217;installazione dell&#8217;IDE (attualmente giunto alla versione 2.3).</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Setup01.png"><img class="aligncenter size-full wp-image-3442" alt="Flyport Setup" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Setup01.png" width="124" height="145" /></a></p>
<p>Eseguiamo il file FlyPort IDE-2.3-Setup.exe e accettiamo di eseguire l&#8217;installazione (Controllo account utente). Selezioniamo la lingua dell&#8217;ide che preferiamo, nel mio caso Italian:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Setup02.png"><img class="aligncenter size-full wp-image-3443" alt="Select Lenguage" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Setup02.png" width="201" height="135" /></a></p>
<p>Clicchiamo sul pulsante ok. Il prossimo popup ci avvisa che l&#8217;IDE sarà installato sul sistema, proseguiamo cliccando sul pulsante &#8216;Si&#8217;.</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Setup03.png"><img class="aligncenter size-full wp-image-3444" alt="Install Flyport" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Setup03.png" width="335" height="125" /></a></p>
<p>La prossima schermata mostra il Contratto di Licenza. Dopo averlo letto Accettiamo e clicchiamo sul pulsante Avanti:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Setup04.png"><img class="aligncenter size-full wp-image-3445" alt="Contratto" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Setup04.png" width="507" height="395" /></a></p>
<p>Continuiamo l&#8217;installazione cliccando nuovamente sul pulsante Avanti:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Setup05.png"><img class="aligncenter size-full wp-image-3446" alt="Flyport Setup" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Setup05.png" width="508" height="393" /></a></p>
<p>La finestra seguente indica in quale percorso desideriamo installare l&#8217;IDE, nel mio caso ho lasciato il percorso di default sotto la cartella Programmi nell&#8217;unita C:, continuamo cliccando sul pulsante Avanti:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Setup06.png"><img class="aligncenter size-full wp-image-3447" alt="Setup06" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Setup06.png" width="506" height="393" /></a></p>
<p>la schermata seguente riepiloga le scelte effettuate. Avviamo l&#8217;installazione dei file cliccando sul pulsante Avanti:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Setup07.png"><img class="aligncenter size-full wp-image-3448" alt="Openpicus setup" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Setup07.png" width="507" height="393" /></a></p>
<p>la barra di avanzamento indica lo stato della copia dei file:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Setup08.png"><img class="aligncenter size-full wp-image-3449" alt="Openpicus setup" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Setup08.png" width="507" height="394" /></a></p>
<p>dopo qualche istante l&#8217;installazione viene completata. Lasciamo i tre simboli di spunta selezionati e clicchiamo sul pulsante Fine:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Setup09.png"><img class="aligncenter size-full wp-image-3450" alt="Flyport setup" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Setup09.png" width="507" height="395" /></a></p>
<p>A questo punto verrà avviato il<strong> FlyPort IDE.</strong> La finestra popup avvisa che non è stato trovato il compilatore GCC. Clicchiamo sul pulsante NO:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Errore01.png"><img class="aligncenter size-full wp-image-3452" alt="Errore01" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Errore01.png" width="456" height="162" /></a></p>
<p>Il programma ci avviserà che non è stato possibile trovare il compilatore. Clicchiamo sul pulsante OK:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Errore03.png"><img class="aligncenter size-full wp-image-3454" alt="Errore03" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Errore03.png" width="214" height="161" /></a></p>
<p>A questo punto il FlyPort IDE viene avviato ma non è possibile utilizzarlo. Chiudiamo il programma.</p>
<p>Per risolvere il problema avviamo l&#8217;installazione del compilatore Microchip C30 tramite il file <strong>MPLABC30Combo_v3_24Lite.exe</strong>:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/MPlab01.png"><img class="aligncenter size-full wp-image-3456" alt="MPlab Setup" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/MPlab01.png" width="130" height="137" /></a></p>
<p>dopo avver confermato, nella finestra account utente, l&#8217;intenzione di installare il programma, verrà avviata la finestra di benvenuto, clicchiamo sul pulsante Avanti:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/MPlab02.png"><img class="aligncenter size-full wp-image-3457" alt="MPlab02" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/MPlab02.png" width="720" height="504" /></a></p>
<p>accettiamo il contratto e clicchiamo sul pulsante Avanti:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/MPlab03.png"><img class="aligncenter size-full wp-image-3458" alt="MPlab03" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/MPlab03.png" width="720" height="503" /></a></p>
<p>il popup seguente ci permette di scegliere se l&#8217;installazione del programma deve avvenire per tutti gli utenti o solo per l&#8217;utente corrente, clicchiamo sul pulsante SI:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/MPlab04.png"><img class="aligncenter size-full wp-image-3459" alt="C30 setup" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/MPlab04.png" width="720" height="503" /></a></p>
<p>selezioniamo l&#8217;installazione Completa:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/MPlab05.png"><img class="aligncenter size-full wp-image-3460" alt="MPlab05" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/MPlab05.png" width="720" height="503" /></a></p>
<p>scegliamo la cartella di installazione. Se non avete particolari esigenze, consiglio di tenere il percorso prestabilito:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/MPlab06.png"><img class="aligncenter size-full wp-image-3461" alt="MPlab06" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/MPlab06.png" width="720" height="503" /></a></p>
<p>La finestra popup successiva vi indicherà che verrà aggiunta una voce alla sezione PATH Enviroment del sistema operativo, accettiamo cliccando sul pulsante Si:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/MPlab07.png"><img class="aligncenter size-full wp-image-3462" alt="MPlad C30 setup" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/MPlab07.png" width="720" height="503" /></a></p>
<p>la successiva finestra popup, vi chiederà se volete modificare il registro in modo che l&#8217;MPLAB IDE possa usare il compilatore GCC. Nel mio caso ho scelto cliccando il pulsante SI, se voi non avete installato l&#8217;MPlAB IDE potete anche cliccare sul pulsante NO:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/MPlab08.png"><img class="aligncenter size-full wp-image-3463" alt="Openpicus" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/MPlab08.png" width="720" height="503" /></a></p>
<p>La finestra successiva riepiloga le varie opzioni scelte, avviamo l&#8217;installazione cliccando sul pulsante Avanti:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/MPlab09.png"><img class="aligncenter size-full wp-image-3464" alt="MPlab09" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/MPlab09.png" width="721" height="503" /></a></p>
<p>una barra di avanzamento mostrerà lo stato dell&#8217;installazione:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/MPlab10.png"><img class="aligncenter size-full wp-image-3465" alt="MPlab10" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/MPlab10.png" width="720" height="503" /></a></p>
<p>dopo un po di attesa l&#8217;installazione si concluderà con una finestra di conferma. Clicchiamo sul pulsante Finish.</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/MPlab11.png"><img class="aligncenter size-full wp-image-3466" alt="flyport" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/MPlab11.png" width="720" height="503" /></a></p>
<p>L&#8217;installazione dell&#8217;IDE  e del compilatore sono concluse.<br />
Avviamo nuovamente il FlyPort IDE per assicurarci che il compilatore GCC sia stato riconosciuto.</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyPortIde.png"><img class="aligncenter size-full wp-image-3469" alt="Flyport IDE" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/FlyPortIde.png" width="138" height="136" /></a></p>
<p>se non ci sono problemi, le finestre popup di errore visualizzate precedentemente, non verranno visualizzate e l&#8217;ide sarà avviato senza nessun messaggio.<br />
Clicchiamo sulla scheda View e poi sul pulsante Compiler Settings:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Setting01.png"><img class="aligncenter size-full wp-image-3471" alt="Setting01" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Setting01.png" width="448" height="184" /></a></p>
<p>la finestra che verrà avviata mostra l&#8217;indirizzo di installazione del compilatore Microchip GCC come definito nella sezione PATH enviroment:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Setting02.png"><img class="aligncenter size-full wp-image-3472" alt="Setting02" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/04/Setting02.png" width="527" height="162" /></a></p>
<p>Nei prossimi tutorial vedremmo come installare il modulo <strong>FlyPort Ethernet</strong>  e come caricare il primo programma.</p>
<p>Per maggiori dettagli visitate il sito <a href="http://www.openpicus.com/" target="_blank">http://www.openpicus.com/</a><br />
Altre info su <a href="http://wiki.openpicus.com/index.php/Main_Page" target="_blank">http://wiki.openpicus.com/index.php/Main_Page</a></p>
<fb:like href='http://www.logicaprogrammabile.it/openpicus-installazione-ide/' send='false' layout='button_count' show_faces='true' width='450' height='65' action='like' colorscheme='light' font='lucida grande'></fb:like>]]></content:encoded>
			<wfw:commentRss>http://www.logicaprogrammabile.it/openpicus-installazione-ide/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Webduino Based Authentication. Accedere ad una pagina privata</title>
		<link>http://www.logicaprogrammabile.it/based-authentication-webduino-accedere-pagina-protetta/</link>
		<comments>http://www.logicaprogrammabile.it/based-authentication-webduino-accedere-pagina-protetta/#comments</comments>
		<pubDate>Mon, 25 Mar 2013 10:13:11 +0000</pubDate>
		<dc:creator>Marco</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[autenticazione]]></category>
		<category><![CDATA[Base64]]></category>
		<category><![CDATA[webduino]]></category>

		<guid isPermaLink="false">http://www.logicaprogrammabile.it/?p=3417</guid>
		<description><![CDATA[Come utilizzare la Based Authentication per accedere a una pagina protetta La libreria Webduino implementa una semplice autenticazione basata sul protocollo http. Certamente non offre un livello di sicurezza impenetrabile ma può comunque essere utile utilizzare questa funzione per le nostre applicazioni. Nell&#8217;esempio, viene caricata la pagina index.htm dove è presente un link che punta [...]]]></description>
				<content:encoded><![CDATA[<h3>Come utilizzare la Based Authentication per accedere a una pagina protetta</h3>
<p>La libreria <strong>Webduino</strong> implementa una semplice autenticazione basata sul protocollo http. Certamente non offre un livello di sicurezza impenetrabile ma può comunque essere utile utilizzare questa funzione per le nostre applicazioni.</p>
<p>Nell&#8217;esempio, viene caricata la pagina index.htm dove è presente un link che punta a una pagina protetta. per poter visualizzarne il contenuto è necessario inserire nome utente e password.</p>
<p>La <strong>based authentication</strong> si basa sulla codifica <strong>Base64</strong>. Il nume utente e la password, nella forma <strong>numeutente:password</strong>, vengono convertiti in un unica stringa  di caratteri.  Per la conversione<strong></strong>, potete utilizzare diversi servizi online oppure scaricare la mia app <a href="http://www.logicaprogrammabile.it/wp-content/uploads/2011/11/ConvertBase64.zip">ConvertBase64</a>.</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/03/Base64Conv.png"><img class="aligncenter size-full wp-image-3430" alt="based authentication" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/03/Base64Conv.png" width="330" height="237" /></a></p>
<p><span id="more-3417"></span></p>
<p>Il codice seguente è pronto all&#8217;uso, dovete cambiare solamente l&#8217;indirizzo ip, adattando lo alla vostra rete locale.</p>
<pre class="brush: cpp; title: Codice di esempio: ; notranslate">
#include &quot;SPI.h&quot;
#include &quot;Ethernet.h&quot;
#include &quot;WebServer.h&quot;

//definisco mac address e indirizzo ip
static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
static uint8_t ip[] = { 192, 168, 1, 10};

//creo un oggetto webduino
WebServer webserver(&quot;&quot;, 80);

//funzione che crea la pagina principale del sito
void defaultCmd(WebServer &amp;server, WebServer::ConnectionType type, char *, bool)
{
  server.httpSuccess();
  if (type != WebServer::HEAD)
  {
    //invio al browser la pagina principale
    P(helloMsg) = &quot;&lt;h4&gt;Accedi:&lt;/h4&gt;&lt;a href=\&quot;private.html\&quot;&gt;Pagina Privata&lt;/a&gt;&quot;;
    server.printP(helloMsg);
  }
}

//questa funzione permette di verificare il nome utente e la password
//e in caso di successo di visualizzare la pagina privata
void privateCmd(WebServer &amp;server, WebServer::ConnectionType type, char *, bool)
{
  //user= admin
  //password= admin

  //verifico nome utente e password
  if (server.checkCredentials(&quot;YWRtaW46YWRtaW4=&quot;))
  {
    //in caso affermativo...
    server.httpSuccess();
    if (type != WebServer::HEAD)
    {
      //invio al browser la pagina privata
      P(helloMsg) = &quot;&lt;h3&gt;Buongiorno Admin!&lt;/h3&gt;&quot;;
      server.printP(helloMsg);
    }
  }
  else
  {
    //creo una risposta http
    //nel caso in cui si tenta un accesso
    //no autorizzato
    server.httpUnauthorized();
  }
}

void setup()
{
  //inizializzo la ethernet shield
  Ethernet.begin(mac, ip);
  //definisco funzione che gestisce
  //la pagina principale del sito
  webserver.setDefaultCommand(&amp;defaultCmd);
  webserver.addCommand(&quot;index.html&quot;, &amp;defaultCmd);
  //definisco la funzione che gestisce la pagina privata
  webserver.addCommand(&quot;private.html&quot;, &amp;privateCmd);

  //inizializzo la libreria webduino
  webserver.begin();
}

void loop()
{
  char buff[64];
  int len = 64;

  webserver.processConnection(buff, &amp;len);
}
</pre>
<p>La libreria Webduino è molto flessibile e permette di realizzare applicazioni interessanti in modo molto veloce.</p>
<fb:like href='http://www.logicaprogrammabile.it/based-authentication-webduino-accedere-pagina-protetta/' send='false' layout='button_count' show_faces='true' width='450' height='65' action='like' colorscheme='light' font='lucida grande'></fb:like>]]></content:encoded>
			<wfw:commentRss>http://www.logicaprogrammabile.it/based-authentication-webduino-accedere-pagina-protetta/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Pilotare LED RGB</title>
		<link>http://www.logicaprogrammabile.it/pilotare-led-rgb-arduino/</link>
		<comments>http://www.logicaprogrammabile.it/pilotare-led-rgb-arduino/#comments</comments>
		<pubDate>Fri, 01 Mar 2013 12:03:34 +0000</pubDate>
		<dc:creator>Marco</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Domotica]]></category>
		<category><![CDATA[Led]]></category>
		<category><![CDATA[PWM]]></category>

		<guid isPermaLink="false">http://www.logicaprogrammabile.it/?p=3390</guid>
		<description><![CDATA[Come usare Arduino per pilotare strip led RGB La tecnologia led si è ormai evoluta ed inizia ad essere presente in modo pronunciato in molti ambienti, dalla casa agli uffici fino ad arrivare all&#8217;illuminazione pubblica. I vantaggi in termini di risparmio energetico sono enormi e la qualità della luce emessa sta raggiungendo un comfort visivo [...]]]></description>
				<content:encoded><![CDATA[<h3>Come usare Arduino per pilotare strip led RGB</h3>
<p>La tecnologia led si è ormai evoluta ed inizia ad essere presente in modo pronunciato in molti ambienti, dalla casa agli uffici fino ad arrivare all&#8217;illuminazione pubblica. I vantaggi in termini di risparmio energetico sono enormi e la qualità della luce emessa sta raggiungendo un comfort visivo soddisfacente.</p>
<p>Anche nell&#8217;arredamento troviamo soluzioni carine che vanno dalla lampada da salotto multicolore alle luci di cortesia nei piani cottura oppure alle barre led impermeabili poste nel box doccia.</p>
<p>Vista la nostra passione per l&#8217;auto-costruzione possiamo realizzare un dispositivo basato su Arduino per pilotare una barra led RGB. Per questo tutorial ho usato una Arduino Leonardo e uno spezzone di <a href="http://www.pieterfloris.nl/shop/product.php?id_product=124" target="_blank">10 cm di una strip led RGB da un metro</a>. Questo modello viene alimentato a 12Vdc e un modulo assorbe, con tutti i led accesi circa 55mA. (quindi un metro assorbe circa 550mA).</p>
<p>Un elemento RGB è composto da 3 LED distinti (Rosso, Verde, Blu) disposti in modo da poter interagire tra loro per formare diversi colori complementari.</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/Strip_LED.png"><img class="aligncenter size-full wp-image-3398" alt="Stril Led RGB da 10 cm" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/Strip_LED.png" width="527" height="138" /></a></p>
<p><span id="more-3390"></span></p>
<p>Il modo più semplice per accendere i led è di collegare uno dei pin (B,R,G) verso massa; non è necessario utilizzare delle resistenze per limitare la corrente.</p>
<p>Vediamo ora come usare Arduino per accendere e spegnere singolarmente i vari led. Il circuito da realizzare è il seguente e si basa su tre transistor PNP tipo BC337.</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/Arduino_Leonardo_Strip_LED_RGB.png"><img class="aligncenter size-full wp-image-3402" alt="Controllo strip led rbg" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/Arduino_Leonardo_Strip_LED_RGB.png" width="563" height="539" /></a></p>
<p>Le basi dei tre transistors sono collegate ai pin 3, 5 e 6 non a caso poiché su questi pin è disponibile anche il segnale PWM che utilizzeremo per andare a pilotare i led RGB in modo migliore.</p>
<pre class="brush: cpp; title: Codice di esempio: ; notranslate">

void setup()
{
  //led Rosso
  pinMode(5, OUTPUT);
  //led verde
  pinMode(6, OUTPUT);
  //led blu
  pinMode(3, OUTPUT);

  //init seriale
  Serial.begin(9600);
}

void loop() {
  //se arrivano dati...
  if (Serial.available())
  {
    //leggi il carattere in arrivo
    byte data = Serial.read();

    if(data == 'q') //accende il led blu
      digitalWrite(3, HIGH);
    else if (data == 'w') //spegne il led blu
      digitalWrite(3, LOW);

    if(data == 'a') //accende il led verde
      digitalWrite(5, HIGH);
    else if (data == 's') //spegne il led verde
      digitalWrite(5, LOW);

    if(data == 'z') //accende il led rosso
      digitalWrite(6, HIGH);
    else if (data == 'x') //spegne il led rosso
      digitalWrite(6, LOW);
  }
}
</pre>
<p>Il codice precedente permette di accendere o spegnere i led inviando tramite serial monitor i caratteri corrispondenti.</p>
<p>Per un maggior controllo dei led RGB possiamo utilizzare il segnale PWM. In questo modo abbiamo la possibilità di creare dissolvenze per creare combinazioni di colori visivamente più interessanti.<br />
Ad esempio il codice seguente permette di accendere e spegnere il led BLU in modo graduale tramite una dissolvenza</p>
<pre class="brush: cpp; title: Codice di esempio: ; notranslate">

void setup()
{
  //led Rosso
  pinMode(5, OUTPUT);
  //led verde
  pinMode(6, OUTPUT);
  //led blu
  pinMode(3, OUTPUT);

  //init seriale
  Serial.begin(9600);
}

void loop()
{
  //Aumenta il duty cycle da 100% a 0%
  for(byte sfuma = 0; sfuma &lt; 255; sfuma++)
  {
    analogWrite(3, sfuma);
    delay(40);
  }

//diminuisci il duty cycle da 100% a 0%
 for(byte sfuma = 255; sfuma &gt; 0; sfuma--)
 {
   analogWrite(3, sfuma);
   delay(40);
 }
}
</pre>
<p>Se volessi miscelare i colori potrei scrivere qualcosa del genere</p>
<pre class="brush: cpp; title: Codice di esempio: ; notranslate">

void setup()
{
  //led Rosso
  pinMode(5, OUTPUT);
  //led verde
  pinMode(6, OUTPUT);
  //led blu
  pinMode(3, OUTPUT);

  //init seriale
  Serial.begin(9600);
}

void loop()
{
  //accendo il led rosso
  digitalWrite(6, HIGH);

  //Aumenta il duty cycle da 100% a 0%
  for(byte sfuma = 0; sfuma &lt; 255; sfuma++)
  {
    analogWrite(3, sfuma);
    delay(40);
  }

  //spengo il rosso
  digitalWrite(6, LOW);
  //accendo il verde
digitalWrite(5, HIGH);

  //diminuisci il duty cycle da 100% a 0%
  for(byte sfuma = 255; sfuma &gt; 0; sfuma--)
  {
    analogWrite(3, sfuma);
    delay(40);
  }
}
</pre>
<p>Le combinazioni che possiamo creare sono innumerevoli, potete provare a sperimentare creando effetti luminosi che possono abbellire i vostri ambienti.</p>
<fb:like href='http://www.logicaprogrammabile.it/pilotare-led-rgb-arduino/' send='false' layout='button_count' show_faces='true' width='450' height='65' action='like' colorscheme='light' font='lucida grande'></fb:like>]]></content:encoded>
			<wfw:commentRss>http://www.logicaprogrammabile.it/pilotare-led-rgb-arduino/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Usare il potenziometro digitale MCP4131-103</title>
		<link>http://www.logicaprogrammabile.it/usare-potenziometro-digitale-mcp4131/</link>
		<comments>http://www.logicaprogrammabile.it/usare-potenziometro-digitale-mcp4131/#comments</comments>
		<pubDate>Mon, 18 Feb 2013 14:04:27 +0000</pubDate>
		<dc:creator>Marco</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Elettronica]]></category>
		<category><![CDATA[componenti]]></category>
		<category><![CDATA[SPI]]></category>

		<guid isPermaLink="false">http://www.logicaprogrammabile.it/?p=3346</guid>
		<description><![CDATA[Come usare Arduino per pilotare un potenziometro digitale Molte applicazioni richiedono la variazione continua di alcuni parametri, come ad esempio un alimentatore, un amplificatore audio, un termostato o un varilight che solitamente impiegano un potenziometro analogico e l&#8217;intervento manuale di una persona per effettuare queste variazioni. Possiamo digitalizzare questi sistemi impiegando lo stesso principio di [...]]]></description>
				<content:encoded><![CDATA[<h3>Come usare Arduino per pilotare un potenziometro digitale</h3>
<p>Molte applicazioni richiedono la variazione continua di alcuni parametri, come ad esempio un alimentatore, un amplificatore audio, un termostato o un varilight che solitamente impiegano un potenziometro analogico e l&#8217;intervento manuale di una persona per effettuare queste variazioni.<br />
Possiamo digitalizzare questi sistemi impiegando lo stesso principio di regolazione basato su potenziometro ma invece di agire fisicamente sulla manopola di regolazione possiamo utilizzare dei comandi software per incrementare decrementare il valore resistivo del potenziometro.</p>
<p>Il componente che andremmo ad usare è l&#8217;integrato <a href="http://ww1.microchip.com/downloads/en/DeviceDoc/22060b.pdf" target="_blank">MCP4131-103 prodotto dalla Microchip</a>. E&#8217; un integrato a 8 pin che possiamo comandare tramite il protocollo seriale SPI.<br />
Al suo interno troviamo un potenziometro da 10Kohm.</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/MCP4131_BlockDiagram.png"><img class="aligncenter size-full wp-image-3349" alt="Diagramma interno MCP4131 103" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/MCP4131_BlockDiagram.png" width="229" height="177" /></a></p>
<p><span id="more-3346"></span></p>
<p>Il potenziometro è composto da una rete resistiva composta da 128 elementi  il cui valore totale è, nel nostro modello, di 10Kohm. Tramite software possiamo spostare la posizione dello <strong>Wiper</strong>, che corrisponde al contatto strisciante di un potenziometro meccanico. Gli spostamenti dello <strong>Wiper</strong> vengono definiti <strong>steps</strong> e vanno dalla posizione <strong>00H (Wiper collegato al pin P0A)</strong> alla posizione <strong>80H(Wiper collegato al pin P0B)</strong>.<br />
Il potenziometro digitale <strong>MCP4131</strong> permette un massimo di <strong>129 steps</strong>.</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/MCP4131_InternalPot.png"><img class="aligncenter size-full wp-image-3372" alt="MCP4131 Internal potentiometer diagram" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/MCP4131_InternalPot.png" width="286" height="456" /></a></p>
<p>Il datasheet è comune a diversi potenziometri digitali quindi per poter capire quale siano i comandi corretti per pilotare il nostro modello dobbiamo esaminare le parti che ci interessano. La prima sezione riguarda le <strong>Caratteristiche del dispositivo</strong> (Device Features)</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/MCP4131_DeviceFeatures.png"><img class="aligncenter size-full wp-image-3351" alt="Caratteristiche del dispositivo MCP4131-103" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/MCP4131_DeviceFeatures.png" width="732" height="259" /></a></p>
<p>Da questa tabella deduciamo che il dispositivo ha un <span style="text-decoration: underline;">singolo potenziometro</span>, che i valori della posizione dello Wiper sono <strong>memorizzati in RAM</strong> (piuttosto che sulla EEPROM). L&#8217;interfaccia di comunicazione è <strong>SPI</strong>, i numeri di<strong> Steps sono 129</strong> e il range con cui possiamo alimentare l&#8217;integrato va da 1.8Vdc a 5.5Vdc.</p>
<p>L&#8217;<strong>MCP4131</strong> supporta comandi a<strong> 8 bit e a 16 bit</strong>. Il comando a 8 bit permette di incrementare o decrementare il valore dello Wiper di uno steps per volta mentre il comando a 16 bit permette di scrivere direttamente sulla RAM il valore della posizione dello Wiper.</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/MCP4131_CommandType.png"><img class="aligncenter size-full wp-image-3353" alt="MCP4131command format" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/MCP4131_CommandType.png" width="569" height="236" /></a></p>
<p>Nella figura il comando a 8 bit è composto da 2 bit di dati (che non vengono utilizzati), 2 bit di comando (incremento &#8211; decremento)  e 4 bit che definiscono l&#8217;indirizzo di memoria che vogliamo usare (indirizzo dello Wiper 00h).<br />
Nella figura del comando a 16 bit la prima parte è identica a quella a 8 bit con la differenza che nei 2 bit di comando possiamo specificare se scrivere o leggere dall&#8217;area di memoria del dispositivo, i restanti 8 bit compongono il Data Byte che ci permette di indicare direttamente il valore dello <strong>Wiper</strong>.</p>
<p>Gli indirizzi di memoria disponibili sono i seguenti:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/MCP4131_MemoryMAP.gif"><img class="aligncenter size-full wp-image-3359" alt="MCP4131 Memory Map" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/MCP4131_MemoryMAP.gif" width="364" height="204" /></a>nel nostro caso <strong>utilizzeremmo l&#8217;indirizzo 00h</strong>, che corrisponde all&#8217;unico Wiper disponibile all&#8217;interno del nostro chip.</p>
<p>I bit di commando invece sono i seguenti:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/MCP4131_Command_Bit.png"><img class="aligncenter size-full wp-image-3360" alt="MCP4131 Command Bits" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/MCP4131_Command_Bit.png" width="364" height="187" /></a></p>
<p>Passando alla pratica, se volessi inviare un comando di incremento al Wiper dell&#8217;MCP4131, usando la modalità a 8bit, invierei tramite SPI il valore decimale 4</p>
<p style="text-align: center;"><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/Comando_4dec.png"><img class="aligncenter size-full wp-image-3367" alt="Arduino Leonardo MCP4131" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/Comando_4dec.png" width="461" height="234" /></a></p>
<p style="text-align: left;">Per decrementare il valore corrente dello Wiper bisogna spedire via SPI il valore decimale 8:</p>
<p style="text-align: center;"><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/Comando_8dec.png"><img class="aligncenter size-full wp-image-3368" alt="Arduino Leonardo MCP4131" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/Comando_8dec.png" width="461" height="234" /></a></p>
<p style="text-align: left;">Se volessi spostare il Wiper al centro della sua corsa, utilizzerei la modalità a 16 bit, inviando per primo il dato contenente l&#8217;indirizzo di memoria che vogliamo usare e il comando di scrittura</p>
<p style="text-align: center;"><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/Comando_0dec.png"><img class="aligncenter size-full wp-image-3369" alt="Leonardo mcp4131-103" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/Comando_0dec.png" width="461" height="234" /></a></p>
<p style="text-align: left;">Seguito dal valore della posizione dove vogliamo spostare lo Wiper, in questo esempio il valore 64 decimale (128/2) corrisponde a metà corsa.</p>
<p style="text-align: center;"><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/Dati.png"><img class="aligncenter size-full wp-image-3370" alt="Leonardo" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/Dati.png" width="461" height="178" /></a></p>
<p>Ora che conosciamo come utilizzare il chip possiamo passare alla pratica collegando la porta SPI dell&#8217;Arduino all&#8217;MCP4131. Nel mio caso ho utilizzato un <strong>Arduino Leonardo</strong> (<span style="text-decoration: underline;">la porta SPI è disponibile sui pin dell&#8217;header ICSP</span>). Lo schema è il seguente:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/Arduino_Leonardo_MCP4131.gif"><img class="aligncenter size-full wp-image-3374" alt="Arduino Leonardo collegamento MCP4131-103" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/Arduino_Leonardo_MCP4131.gif" width="299" height="260" /></a></p>
<p>L&#8217;uscita <strong>W</strong> è collegata all&#8217;ingresso analogico<strong> A0</strong> della Leonardo, in questo modo posso misurare il valore di tensione disponibile su tale piedino.<br />
Il <strong>Pin B</strong> dell&#8217;MCP4131, corrispondente alla posizione 00H <strong>è collegato a massa</strong> mentre il<strong> pin A</strong> corrispondente alla posizione 80H è <strong>collegato alla 5Vdc</strong>.<br />
Il codice seguente posiziona lo Wiper nella posizione 00H, ottenendo cosi una tensione pressochè nulla sul <strong>pin W</strong> (poiche internamente il pin W è collegato con il pin B).</p>
<pre class="brush: cpp; title: Codice di esempio: ; notranslate">
#include &lt;SPI.h&gt;

void setup()
{
  //Definisco il pin come uscita
  //il pin 2 viene usato per selezionare il
  //chip all'interno di un collegamento SPI
  pinMode (2, OUTPUT);

  //Inizializzo la libreria SPI
  SPI.begin();

  //Inizializzo la porta seriale
  Serial.begin(9600);

  //metto alta la linea CS per
  //deselezionare il chip MCP4131
  digitalWrite(2, HIGH);

}

void loop()
{
  //Inizializzo la posizione dello Wiper
  byte Posizione = 0;

  //Per selezionare l'MCP4131
  //metto basso la linea CS del
  //potenziometro digitale
  digitalWrite(2, LOW);

  //Invio il primo byte per eseguire una scrittura
  //sul registro Wiper
  SPI.transfer(0);
  //Invio il valore della posizione dello Wiper
  //valori da 00H a 80H (0-128 in decimale)
  SPI.transfer(Posizione);

  //metto alta la linea CS per
  //deselezionare il chip MCP4131
  digitalWrite(2, HIGH);

  //eseguo la lettura sul pin analogico A0
  //in questo pin è collegato il pin Wiper
  //del potenziometro digitale
  int Data = analogRead(0);

  //spedisco il dato letto al serial Monitor
  //Valori da 0 a 1023
  Serial.println(Data);

  //ritardo di mezzo secondo
  delay(500);
}
</pre>
<p>Aprendo il serial monitor otterremmo dei valori prossimi allo zero poichè la tensione in ingresso del pin A0 sarà nulla. Questo è ciò che avviene all&#8217;interno dell&#8217;MCP4131:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/MCP4131_Wip_Gnd.png"><img class="aligncenter size-full wp-image-3381" alt="Wiper to GND" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/MCP4131_Wip_Gnd.png" width="286" height="456" /></a></p>
<p>Per posizionare lo Wiper verso il<strong> pin A</strong>, collegato alla 5Vdc, dobbiamo scrivere sull&#8217;indirizzo 00H il valore 80H, come descritto nel codice seguente:</p>
<pre class="brush: cpp; title: Codice di esempio: ; notranslate">
#include &lt;SPI.h&gt;

void setup()
{
  //Definisco il pin come uscita
  //il pin 2 viene usato per selezionare il
  //chip all'interno di un collegamento SPI
  pinMode (2, OUTPUT);

  //Inizializzo la libreria SPI
  SPI.begin();

  //Inizializzo la porta seriale
  Serial.begin(9600);

  //metto alta la linea CS per
  //deselezionare il chip MCP4131
  digitalWrite(2, HIGH);

}

void loop()
{
  //Inizializzo la posizione dello Wiper
  byte Posizione = 128;

  //Per selezionare l'MCP4131
  //metto basso la linea CS del
  //potenziometro digitale
  digitalWrite(2, LOW);

  //Invio il primo byte per eseguire una scrittura
  //sul registro Wiper
  SPI.transfer(0);
  //Invio il valore della posizione dello Wiper
  //valori da 00H a 80H (0-128 in decimale)
  SPI.transfer(Posizione);

  //metto alta la linea CS per
  //deselezionare il chip MCP4131
  digitalWrite(2, HIGH);

  //eseguo la lettura sul pin analogico A0
  //in questo pin è collegato il pin Wiper
  //del potenziometro digitale
  int Data = analogRead(0);

  //spedisco il dato letto al serial Monitor
  //Valori da 0 a 1023
  Serial.println(Data);

  //ritardo di mezzo secondo
  delay(500);
}
</pre>
<p>In questo caso aprendo il <strong>serial monitor</strong> leggeremmo dei valori prossimi a 1023 in quanto sul pin analogico A0 sarà presente la tensione di 5Vdc.<br />
Internamente otterremo questo risultato:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/MCP4131_Wip_Vcc.png"><img class="aligncenter size-full wp-image-3383" alt="wiper to vcc" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/MCP4131_Wip_Vcc.png" width="286" height="456" /></a></p>
<p>Di conseguenza per avere tutti gli altri valori intermedi potremmo cambiare il valore della variabile Posizione assegnandole <strong>valori tra 0 e 128</strong>.</p>
<fb:like href='http://www.logicaprogrammabile.it/usare-potenziometro-digitale-mcp4131/' send='false' layout='button_count' show_faces='true' width='450' height='65' action='like' colorscheme='light' font='lucida grande'></fb:like>]]></content:encoded>
			<wfw:commentRss>http://www.logicaprogrammabile.it/usare-potenziometro-digitale-mcp4131/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilizzare lo Spectrum Shield con Arduino</title>
		<link>http://www.logicaprogrammabile.it/utilizzare-spectrum-shield-arduino/</link>
		<comments>http://www.logicaprogrammabile.it/utilizzare-spectrum-shield-arduino/#comments</comments>
		<pubDate>Mon, 11 Feb 2013 11:17:10 +0000</pubDate>
		<dc:creator>Marco</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Led]]></category>

		<guid isPermaLink="false">http://www.logicaprogrammabile.it/?p=3294</guid>
		<description><![CDATA[Spectrum shield come accendere diversi led a ritmo di musica Un progetto che ha sempre attirato molta attenzione è il circuito VU meter sincronizzato con il ritmo della musica (il mitico luci psichedeliche ). Anche io quando ero alle superiori mi sono cimentato costruendone uno. Il circuito era formato da tre filtri analogici, uno passa [...]]]></description>
				<content:encoded><![CDATA[<h3>Spectrum shield come accendere diversi led a ritmo di musica</h3>
<p>Un progetto che ha sempre attirato molta attenzione è il circuito VU meter sincronizzato con il ritmo della musica (il mitico <strong>luci psichedeliche</strong> ). Anche io quando ero alle superiori mi sono cimentato costruendone uno. Il circuito era <strong>formato da tre filtri analogici</strong>, uno <strong>passa basso</strong> uno <strong>passa banda</strong> e uno <strong>passa alto</strong>, che lavoravano rispettivamente alle frequenze 0-500Hz, 500Hz 4000Hz e 4000Hz-16000Hz. All&#8217;uscita dei filtri c&#8217;era un<strong> rilevatore di picco</strong> costruito con un operazionale che andava a pilotare dei driver che <strong>accendevano delle lampadine colorate</strong>.</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/LuciPsichedelicheOLD.png"><img class="aligncenter size-full wp-image-3298" alt="Luci Psichedeliche" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/LuciPsichedelicheOLD.png" width="591" height="331" /></a></p>
<p><span id="more-3294"></span></p>
<p>Oggi la tecnologia offre prodotti integrati a basso costo, specializzati in una vasta gamma di compiti che rendono più semplice la realizzazione dei nostri circuiti. Per quanto riguarda le nostre luci psichedeliche possiamo fa affidamento allo <a href="https://www.sparkfun.com/products/10306" target="_blank">Spectrum shield</a> per <strong>Arduino</strong>. Lo shield è molto semplice ed è composto principalmente da due integrati <a href="https://www.sparkfun.com/datasheets/Components/General/MSGEQ7.pdf" target="_blank">MSGEQ7 </a>(Equalizzatore grafico a 7 bande). Lo schema a blocchi dell&#8217;integrato è il seguente:</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/MSGEQ7_Diagramma_Blocchi.png"><img class="aligncenter size-full wp-image-3302" alt="MSGEQ7 Diagramma a blocchi" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/MSGEQ7_Diagramma_Blocchi.png" width="647" height="437" /></a></p>
<p>si osserva che in effetti il principio di funzionamento è molto simile a quello che si usava nei primi circuiti a luci psichedeliche, ma i filtri a disposizione sono ben 7 e le uscite dei filtri vengono multiplexate, in questo modo invece di avere 7 pin di output ne abbiamo solamente uno.<br />
Inviando un primo impulso positivo al pin strobe avremmo in uscita il valore analogico proveniente dal filtro a 63Hz, inviandone un altro impulso avremmo in uscita il valore analogico del filtro a 160Hz e così via fino a tornare dopo 8 impulsi al filtro a 63Hz.</p>
<p>I due integrati MSGEQ7 presenti nello <strong>spectrum shield</strong> analizzano il segnale audio proveniente dal canale destro e dal canale sinistro. Per brevità utilizzerò un solo integrato (canale) visto che il codice è interscambiabile.<br />
Le uscite analogiche dei due integrati sono collegate ai pin <strong>A0</strong> e <strong>A1</strong> mentre i pin <strong>Strobe</strong> e <strong>Reset</strong> sono collegati ai pin digitali <strong>D4</strong> e <strong>D5</strong>.</p>
<p>Questo è il codice:</p>
<pre class="brush: cpp; title: Codice di esempio: ; notranslate">
//Specifica i pin Reset, Strobe
int spectrumReset=5;
int spectrumStrobe=4;

//Specifico il canale di ingresso
//pin A0 per canale destro
//pin A1 per canale sinistro
int spectrumAnalog = 1; //canale sinistro

//creo un vettore per contenere i valori analogici
//delle 7 bande
int Spectrum[7];

void setup()
{
  //pin reset e strobe in output
  pinMode(spectrumReset, OUTPUT);
  pinMode(spectrumStrobe, OUTPUT);

  //inizializzo lo spectrum shield
  //Strobe
  digitalWrite(spectrumStrobe,HIGH);
  delay(1);
  digitalWrite(spectrumStrobe,LOW);
  delay(1)

  //Reset dei due chip
  digitalWrite(spectrumReset,HIGH);
  delay(1);
  digitalWrite(spectrumReset,LOW);
  delay(5);

  //definisco 7 uscite digitali per pilotare altrettanti led
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);

}

void loop()
{
  //esegui la lettura ogni 10mS
  readSpectrum();
  delay(10);
}

void readSpectrum()
{
  //Questa funzione legge il valore analogico per ogni banda
  //e ne rappresenta il valore tramite dei led

  byte Band;
  //questo ciclo for viene eseguito 7 volte
  for(Band = 0; Band &lt; 7; Band++)
  {
    //eseguo due letture per poi dividerle per due tramite
    //spostamento di bit. Il valore ottenuto viene memorizzato
    //nel vettore
    Spectrum[Band] = (analogRead(spectrumAnalog) + analogRead(spectrumAnalog) ) &gt;&gt;1;

    //invio un impulso al pin strobe per passare al filtro successivo
    digitalWrite(spectrumStrobe,HIGH);
    digitalWrite(spectrumStrobe,LOW);
  }

  //una volta effettuata la memorizzazione dei dati
  //nel vettore, creo un altro ciclo for
  //per rappresentare gli stessi tramite led
  for (byte Ciclo = 0; Ciclo &lt; 7; Ciclo++)
  {
    //recupero il valore memorizzato nel vettore
    //traslo il valore intero in un byte
    byte x = map(Spectrum[Ciclo], 0, 1023, 1, 254);

    //se il valore supera una soglia accendi il led
    //altrimenti spegnilo
    if( x &gt; 120)
      digitalWrite(Ciclo + 6 , HIGH);
    else
      digitalWrite(Ciclo + 6, LOW);
  }
}
</pre>
<p>Mentre questo è il circuito elettrico</p>
<p><a href="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/SpectrumShield.gif"><img class="aligncenter size-full wp-image-3337" alt="Luci psichedeliche con lo spectrum shield" src="http://www.logicaprogrammabile.it/wp-content/uploads/2013/02/SpectrumShield.gif" width="245" height="220" /></a></p>
<p>Per poter collegare delle lampade a 220Vac è necessario usare dei triac con relativo stadio pilota fotoisolato.</p>
<fb:like href='http://www.logicaprogrammabile.it/utilizzare-spectrum-shield-arduino/' send='false' layout='button_count' show_faces='true' width='450' height='65' action='like' colorscheme='light' font='lucida grande'></fb:like>]]></content:encoded>
			<wfw:commentRss>http://www.logicaprogrammabile.it/utilizzare-spectrum-shield-arduino/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  www.logicaprogrammabile.it/feed/ ) in 3.52409 seconds, on May 26th, 2013 at 2:04 am UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on May 26th, 2013 at 3:04 am UTC -->
<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- Quick Cache Is Fully Functional :-) ... A Quick Cache file was just served for (  www.logicaprogrammabile.it/feed/ ) in 0.03521 seconds, on May 26th, 2013 at 3:03 am UTC. -->