<?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>Ingressi Analogici Archives - Esperimenti con logiche programmabili</title>
	<atom:link href="https://logicaprogrammabile.it/tag/ingressi-analogici/feed/" rel="self" type="application/rss+xml" />
	<link>https://logicaprogrammabile.it/tag/ingressi-analogici/</link>
	<description>Tutorial in italiano per imparare a programmare usando Arduino, Raspberry PI, Netduino</description>
	<lastBuildDate>Sun, 15 Jan 2017 17:40:30 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>

<image>
	<url>https://logicaprogrammabile.it/wp-content/uploads/2017/11/cropped-logicaprogrammabile-logo-02-32x32.png</url>
	<title>Ingressi Analogici Archives - Esperimenti con logiche programmabili</title>
	<link>https://logicaprogrammabile.it/tag/ingressi-analogici/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Flyport Ethernet, conoscere i pin digitali</title>
		<link>https://logicaprogrammabile.it/flyport-ethernet-pin-digitali/</link>
					<comments>https://logicaprogrammabile.it/flyport-ethernet-pin-digitali/#respond</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Mon, 13 May 2013 09:22:15 +0000</pubDate>
				<category><![CDATA[OpenPicus]]></category>
		<category><![CDATA[Flyport]]></category>
		<category><![CDATA[GPIO]]></category>
		<category><![CDATA[Ingressi Analogici]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=3582</guid>

					<description><![CDATA[<p>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...</p>
<p>The post <a href="https://logicaprogrammabile.it/flyport-ethernet-pin-digitali/">Flyport Ethernet, conoscere i pin digitali</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></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="https://logicaprogrammabile.it/wp-content/uploads/2013/05/Flyport-J1-Port.png"><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-3585" alt="Flyport Ethernet J1 Port mapping" src="https://logicaprogrammabile.it/wp-content/uploads/2013/05/Flyport-J1-Port.png" width="564" height="546" srcset="https://logicaprogrammabile.it/wp-content/uploads/2013/05/Flyport-J1-Port.png 564w, https://logicaprogrammabile.it/wp-content/uploads/2013/05/Flyport-J1-Port-300x290.png 300w" sizes="(max-width: 564px) 100vw, 564px" /></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="https://logicaprogrammabile.it/wp-content/uploads/2013/05/TestIO.png"><img decoding="async" class="aligncenter size-full wp-image-3607" alt="Flyport Ethernet Led blink" src="https://logicaprogrammabile.it/wp-content/uploads/2013/05/TestIO.png" width="429" height="304" srcset="https://logicaprogrammabile.it/wp-content/uploads/2013/05/TestIO.png 429w, https://logicaprogrammabile.it/wp-content/uploads/2013/05/TestIO-300x212.png 300w" sizes="(max-width: 429px) 100vw, 429px" /></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>
<p>[c]<br />
#include &quot;taskFlyport.h&quot;</p>
<p>void FlyportTask()<br />
{<br />
  //il pin p2 viene configurato<br />
  //come uscita digitale<br />
  IOInit(p2, out);</p>
<p>  //ciclo infinito<br />
  while(1)<br />
  {<br />
    //commuto il pin p2 a livello<br />
    //logico alto<br />
    IOPut(p2, on);<br />
    //creo un ritardo di 500ms<br />
    DelayMs(500);<br />
    //commuto il pin p2 a livello<br />
    //logico basso<br />
    IOPut(p2, off);<br />
    //creo un ritardo di 500ms<br />
    DelayMs(500);<br />
  }<br />
}<br />
[/c]</p>
<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="https://logicaprogrammabile.it/wp-content/uploads/2013/05/TestIO_input.png"><img decoding="async" class="aligncenter size-full wp-image-3610" alt="Flyport ethernet input port" src="https://logicaprogrammabile.it/wp-content/uploads/2013/05/TestIO_input.png" width="494" height="361" srcset="https://logicaprogrammabile.it/wp-content/uploads/2013/05/TestIO_input.png 494w, https://logicaprogrammabile.it/wp-content/uploads/2013/05/TestIO_input-300x219.png 300w" sizes="(max-width: 494px) 100vw, 494px" /></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>
<p>[c]<br />
#include &quot;taskFlyport.h&quot;</p>
<p>void FlyportTask()<br />
{<br />
  //il pin p2 viene configurato<br />
  //come Ingresso digitale<br />
  IOInit(p2, in);</p>
<p>  //il pin p4 viene configurato<br />
  //come Uscita digitale<br />
  IOInit(p4, out);</p>
<p>  //ciclo infinito<br />
  while(1)<br />
  {<br />
    //verifico lo stato del pin p2<br />
    //Alto o basso<br />
    if(IOGet(p2) == 1)<br />
      //sel il pin è a livello<br />
      //logico alto, accendo il led<br />
      IOPut(p4, on);<br />
    else<br />
      //altrimenti<br />
      //spegni il led<br />
      IOPut(p4, off);</p>
<p>    DelayMs(20);<br />
  }<br />
}<br />
[/c]</p>
<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>
<p>The post <a href="https://logicaprogrammabile.it/flyport-ethernet-pin-digitali/">Flyport Ethernet, conoscere i pin digitali</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/flyport-ethernet-pin-digitali/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Leggere dagli ingressi analogici da remoto con Arduino</title>
		<link>https://logicaprogrammabile.it/come-leggere-ingressi-analogici-remoto-arduino/</link>
					<comments>https://logicaprogrammabile.it/come-leggere-ingressi-analogici-remoto-arduino/#comments</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Thu, 01 Sep 2011 12:34:08 +0000</pubDate>
				<category><![CDATA[Tutorial Arduino]]></category>
		<category><![CDATA[Arduino Webserver]]></category>
		<category><![CDATA[Domotica]]></category>
		<category><![CDATA[Ingressi Analogici]]></category>
		<category><![CDATA[MCP9700]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=1929</guid>

					<description><![CDATA[<p>Utilizzare un webserver per acquisire dati dagli ingressi analogici Continuiamo l&#8217;articolo precedente inserendo nello sketch il codice che permette di campionare segnali analogici per poterli inviarli tramite protocollo http. Utilizzando la funzione analogRead() acquisiamo il valore della tensione presente sul pin analogico, che verrà utilizzato...</p>
<p>The post <a href="https://logicaprogrammabile.it/come-leggere-ingressi-analogici-remoto-arduino/">Leggere dagli ingressi analogici da remoto con Arduino</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Utilizzare un webserver per acquisire dati dagli ingressi analogici</h1>
<p>Continuiamo l&#8217;articolo precedente inserendo nello sketch il codice che permette di campionare segnali analogici per poterli inviarli tramite protocollo http.<br />
Utilizzando la funzione <strong>analogRead()</strong> acquisiamo il valore della tensione presente sul pin analogico, che verrà utilizzato per essere inserito nella pagina html da inviare al client. Con alcuni tag html aggiuntivi abbiamo la possibilità di avere un refresh automatico della pagina che ad intervalli regolari interrogherà il server Arduino, ottenendo automaticamente nuovi campionamenti del segnale analogico.<br />
Il circuito seguente:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-1936 size-full" title="AnalogRead" src="https://logicaprogrammabile.it/wp-content/uploads/2011/09/AnalogRead.gif" alt="Circuito di esempio acquisizione segnale ingresso analogico via lan con http" width="303" height="306" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/09/AnalogRead.gif 303w, https://logicaprogrammabile.it/wp-content/uploads/2011/09/AnalogRead-150x150.gif 150w, https://logicaprogrammabile.it/wp-content/uploads/2011/09/AnalogRead-297x300.gif 297w" sizes="auto, (max-width: 303px) 100vw, 303px" /></p>
<p><span id="more-1929"></span>In questo esempio la tensione presente sul pin è fissa, ma nulla vieta l&#8217;inserimento di un potenziometro o meglio di un sensore analogico come la sonda di temperatura mcp9700a.</p>
<p>Il codice dello sketch rimane essenzialmente invariato tranne per l&#8217;inserimento di una variabile per contenere i valori provenienti dalla funzione <strong>analogRead()</strong> e di qualche riga html aggiuntiva per formattare la pagina:</p>
<pre class="lang:arduino decode:true ">if (Data_RX == '\n')
{
//campiono il valore di tensione analogia
//in ingresso sul pin0 ella borad Arduino UNO
analogIn0 = analogRead(0);
//Invio la risposta al client
//invio lo status code
pc_client.println("HTTP/1.1 200 OK");
//imposto il data type
pc_client.println("Content-Type: text/html");
pc_client.println();
//invio codice html
pc_client.print("");
pc_client.print("");
//questo codice html permette di eseguireil refresh automatico
//della pagina html
pc_client.print("");
pc_client.print("");
pc_client.print("

Valore analogico letto dal pin 0");
//inserisco nella pagina html il valore acquisito dal pin analogico
pc_client.print(analogIn0);
pc_client.print("

");
//aspetto 1 ms affinche la risposta giunga al browser del client
delay(1);
//esco dal ciclo while una volta completato l'invio della risposta
break;
}</pre>
<p>&nbsp;</p>
<p>Non serve altro, è veramente semplice inviare via http i dati acquisiti dall&#8217;Arduino.<br />
Possiamo certamente utilizzare anche gli altri ingressi analogici o come nel prossimo esempio leggere lo stato di alcuni pin digitali.<br />
Per impiegare i pin digitali dobbiamo, nel blocco <strong>setup()</strong>,  specificare quali intendiamo utilizzare come ingressi. Per una semplice prova io ho usato il pin6 e il pin7:</p>
<pre class="lang:arduino decode:true ">void setup()
{
//inizializza lo shield con il mac e l'ip
Ethernet.begin(mac, ip);
//inizializza l'oggetto server
ArduinoServer.begin();
//definisco i pin6 e pin7 come ingressi
pinMode(6, INPUT);
pinMode(7, INPUT);
}</pre>
<p>&nbsp;</p>
<p>La funzione <strong>digitalRead()</strong> acquisisce il valore dello stato dei pin in esame e lo memorizza in una variabile precedentemente dichiarata. Questo valore viene successivamente inviato al client tramite la pagina html</p>
<pre class="lang:arduino decode:true ">if (Data_RX == '\n')
{
//leggo lo stato dei pin digitali 6 e 7
valPin6 = digitalRead(6);
valPin7 = digitalRead(7);

//campiono il valore di tensione analogia
//in ingresso sul pin0 ella borad Arduino UNO
analogIn0 = analogRead(0);

//Invio la risposta al client
//invio lo status code
pc_client.println("HTTP/1.1 200 OK");
//imposto il data type
pc_client.println("Content-Type: text/html");
pc_client.println();
//invio codice html
pc_client.print("");
pc_client.print("");
//questo codice html permette di eseguireil refresh automatico
//della pagina html
pc_client.print("");
pc_client.print("");
pc_client.print("

Valore analogico letto dal pin 0");
//inserisco nella pagina html il valore acquisito dal pin analogico
pc_client.print(analogIn0);
pc_client.print("

");

//inserisco nella pagina htm lo stato dei pin in ingresso
if(valPin6 == HIGH)
//se il valore è alto
pc_client.print("Stato pin6 = HIGH");
else
//se il valore è basso
pc_client.print("Stato pin6 = LOW");

pc_client.println("
");

if(valPin7 == HIGH)
//se il valore è alto
pc_client.print("Stato pin7 = HIGH");
else
//se il valore è basso
pc_client.print("Stato pin7 = LOW");

pc_client.print("");

//aspetto 1 ms affinche la risposta giunga al browser del client
delay(1);
//esco dal ciclo while una volta completato l'invio della risposta
break;
}</pre>
<p>&nbsp;</p>
<p>Anche questo codice risulta semplice e i commenti che lo accompagnano descrivono bene le varie istruzioni. Dopo aver caricato lo sketch sull&#8217;Arduino ho messo il pin6 alla +5Vdc e il pin 7 a massa ottenendo il risultato seguente:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-1944 size-full" title="Html_Result" src="https://logicaprogrammabile.it/wp-content/uploads/2011/09/Html_Result.gif" alt="Pagina html generata dal webserver Arduino" width="261" height="101" />Naturalmente i pin 10-11-12-13, sono utilizzati per la comunicazioni SPI con l&#8217;ethernet shield e quindi, non possono essere impiegati per altri scopi senza interferire nella comunicazione stessa.</p>
<p>Vi rimando al prossimo articolo dove vedremo come utilizzare il browser per inviare comandi alla board Arduino, nel frattempo potete sperimentare con le nozioni acquisite per aumentare le vostre capacità nell&#8217;uso della athernet shield.</p>
<p>A presto!</p>
<p>The post <a href="https://logicaprogrammabile.it/come-leggere-ingressi-analogici-remoto-arduino/">Leggere dagli ingressi analogici da remoto con Arduino</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/come-leggere-ingressi-analogici-remoto-arduino/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
	</channel>
</rss>
