<?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>Comunicazione seriale Archives - Esperimenti con logiche programmabili</title>
	<atom:link href="https://logicaprogrammabile.it/tag/comunicazione-seriale/feed/" rel="self" type="application/rss+xml" />
	<link>https://logicaprogrammabile.it/tag/comunicazione-seriale/</link>
	<description>Tutorial in italiano per imparare a programmare usando Arduino, Raspberry PI, Netduino</description>
	<lastBuildDate>Mon, 13 Feb 2017 19:16:08 +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>Comunicazione seriale Archives - Esperimenti con logiche programmabili</title>
	<link>https://logicaprogrammabile.it/tag/comunicazione-seriale/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Arduino datalogger con pc</title>
		<link>https://logicaprogrammabile.it/arduino-datalogger-con-pc/</link>
					<comments>https://logicaprogrammabile.it/arduino-datalogger-con-pc/#comments</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Sun, 06 Oct 2013 14:35:23 +0000</pubDate>
				<category><![CDATA[Tutorial Arduino]]></category>
		<category><![CDATA[Comunicazione seriale]]></category>
		<category><![CDATA[comunicazione tra circuiti]]></category>
		<category><![CDATA[DataLogger]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=3831</guid>

					<description><![CDATA[<p>Come realizzare un datalogger utilizzando Arduino e un pc Il datalogger è uno di circuiti che fanno parte del bagaglio tecnico di chi come noi smanetta con l&#8217;elettronica e l&#8217;informatica. Il suo funzionamento è in effetti semplice ma allo stesso tempo utile per realizzare tutte...</p>
<p>The post <a href="https://logicaprogrammabile.it/arduino-datalogger-con-pc/">Arduino datalogger con pc</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3>Come realizzare un datalogger utilizzando Arduino e un pc</h3>
<p>Il <strong>datalogger</strong> è uno di circuiti che fanno parte del bagaglio tecnico di chi come noi smanetta con l&#8217;elettronica e l&#8217;informatica. Il suo <strong>funzionamento</strong> è in effetti <strong>semplice</strong> ma allo stesso tempo <strong>utile</strong> per realizzare tutte quelle <strong>applicazioni</strong> in cui è necessario acquisire e <strong>registrare dati</strong> (digitali o analogici), pensiamo a tutti i sistemi di <strong>monitoring</strong> (energia, gas, acqua &#8230;) alle stazioni meteo o a sistemi di controllo. Esistono circuiti dedicati che eseguono funzioni di <strong>datalogging</strong> locale e remote, persino cloud, dai costi variabili da poche decine di euro a centinaia di euro a seconda della robustezza e della precisione dei circuiti.<br />
Per impadronirci anche di questo aspetto possiamo <strong>realizzare</strong> il nostro <strong>datalogger</strong> usando il nostro caro <strong>Arduino</strong>. Il logging può avvenire sia sui pin analogici che su quelli digitali a seconda dei segnali e dei sensori collegati alla scheda.</p>
<p>In questo <strong>tutorial</strong> utilizzerò i sei<strong> pin analogici</strong> della scheda per <strong>acquisire</strong> dei segnali analogici ed inviarli al <strong>pc</strong>, tramite la porta seriale, dove avverrà la memorizzazione dei dati. Ho deciso di non memorizzare i dati sulla scheda per far capire come inviare i dati e come sincronizzazione la comunicazione tra i due dispositivi.Come scheda ho impiegato la <strong>Arduino Ethernet</strong> e lato pc ho utilizzato <strong>Microsoft Visual C# 2012 (su Windows 8)</strong> per scrivere il programma di logging.</p>
<p><span id="more-3831"></span></p>
<p>Per mancanza di tempo non ho collegato alla scheda dei sensori o delle fonti analogiche ma ho lasciato i pin analogici &#8216;appesi&#8217;, questo perchè i dispositivi da collegare sono infiniti e quindi lascio a voi il compito di collegarne a piacimento.</p>
<p>Passiamo quindi direttamente al codice caricato sulla Arduino Ethernet:</p>
<p>[c]<br />
//questo arrai contiene i valori provenienti<br />
//dall&#8217;acquisizione analogica<br />
byte ana[12];<br />
//avalore intero per memorizzare il dato analogico<br />
int valAn = 0;<br />
//variabile per selezionare il canale analogico<br />
byte in_ana = 0;</p>
<p>void setup()<br />
{<br />
  //init seriale<br />
  Serial.begin(9600);<br />
}</p>
<p>void loop()<br />
{<br />
  //verifico la presenza di un dato sulla<br />
  //porta seriale<br />
  if(Serial.available() &gt; 0)<br />
  {<br />
    //se arriva un byte dal pc leggilo<br />
    byte data = Serial.read();<br />
    //controllo se il dato in arrivo dal pc corrisponde<br />
    //al carattere di avvio acquisizione<br />
    if(data == &#8216;#&#8217;)<br />
    {<br />
      //inizializzo la variabile per la selezione del<br />
      //primo canale analogico<br />
      in_ana = 0;<br />
      //eseguo un ciclo for per acquisire ciclicamente tutti i<br />
      //canali analogici da A0 a A5<br />
      for(int Ciclo = 0; Ciclo &lt;12; Ciclo += 2)<br />
      {<br />
        //leggo il canale analogico<br />
        valAn = analogRead(in_ana);<br />
        //il valore intero viene diviso in due byte e caricato<br />
        //nell&#8217;array dichiarato precedentemente<br />
        ana[Ciclo] = highByte(valAn);<br />
        ana[Ciclo + 1] = lowByte(valAn);<br />
        //piccolo delay tra una acquisizione e l&#8217;altra<br />
        delay(1);<br />
        //incremento il canale di acquisizione<br />
        in_ana++;<br />
      }<br />
      //dopo 6 cicli spedisco tutti e 12 i byte al pc<br />
      Serial.write(ana,12);<br />
    }<br />
  }<br />
}<br />
[/c]</p>
<p>Le parti più importanti di questo codice sono il secondo blocco <strong>if</strong> che ha il compito di verificare quando il byte ricevuto è uguale al carattere <strong>#</strong>, in questo modo l&#8217;invio dei dati è subordinato alle richieste del pc. Questo permette di avere una trasmissione concordata che evita l&#8217;utilizzo di sincronismi per poter leggere coerentemente i dati acquisiti.<br />
L&#8217;altro blocco è quello <strong>for</strong>, che ha il compito di acquisire il dato analogico e di caricarlo sull&#8217;array che verrà inviato al pc. Per farlo vengono utilizzate le istruzioni <strong>highByte()</strong> e <strong>lowByte()</strong> che hanno il compito di suddividere la variabile <strong>int valAn</strong>(composta da due byte) in due byte contenenti gli 8 bit più significativi e gli 8 bit meno significativi, questo infatti giustifica l&#8217;array da 12 byte.</p>
<p>La figura seguente mostra quanto detto:</p>
<p><a href="https://logicaprogrammabile.it/wp-content/uploads/2013/10/da_int_a_byte.png"><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-3839" alt="Conertire int a byte" src="https://logicaprogrammabile.it/wp-content/uploads/2013/10/da_int_a_byte.png" width="609" height="343" srcset="https://logicaprogrammabile.it/wp-content/uploads/2013/10/da_int_a_byte.png 609w, https://logicaprogrammabile.it/wp-content/uploads/2013/10/da_int_a_byte-300x168.png 300w" sizes="(max-width: 609px) 100vw, 609px" /></a></p>
<p>volendo si potrebbe spedire direttamente il valore intero ma credo che questo approccio semplifica meglio la stesura e la comprensione dei programmi lato Arduino e lato pc.</p>
<h3>Il datalogger sul pc</h3>
<p>La finestra del programma che acquisisce e registra i dati è mostrata di seguito:</p>
<p><a href="https://logicaprogrammabile.it/wp-content/uploads/2013/10/Cattura.png"><img decoding="async" class="aligncenter size-full wp-image-3842" alt="Arduino datalogger" src="https://logicaprogrammabile.it/wp-content/uploads/2013/10/Cattura.png" width="480" height="325" srcset="https://logicaprogrammabile.it/wp-content/uploads/2013/10/Cattura.png 480w, https://logicaprogrammabile.it/wp-content/uploads/2013/10/Cattura-300x203.png 300w" sizes="(max-width: 480px) 100vw, 480px" /></a></p>
<p>La parte principale del <strong>software di acquisizione</strong> dei dati da Arduino è la seguente:</p>
<p>[csharp]</p>
<p>//avvia l&#8217;acquisizione dei dati<br />
//inviando ad arduino il carattere #<br />
rs232.Write(&quot;#&quot;);</p>
<p>//entro nel ciclo<br />
while (Continua)<br />
{<br />
  //attendo che arduino invii i 12 byte<br />
  //contenenti i dati dalla conversione<br />
  //analogico digitale<br />
  if (rs232.BytesToRead == 12)<br />
  {<br />
    //leggo tutti i 12 byte e le assegno<br />
    //ad un array di byte<br />
    rs232.Read(dataRX, 0, 12);</p>
<p>    //prendo il primo ed il secondo byte e li unico per<br />
    //formare yn valore intero a 16 bit<br />
    myShort = (short)(dataRX[0] &lt;&lt; 8 | dataRX[1]);<br />
    txtValAn01.Text = myShort.ToString();</p>
<p>    myShort = (short)(dataRX[2] &lt;&lt; 8 | dataRX[3]);<br />
    txtValAn02.Text = myShort.ToString();</p>
<p>    myShort = (short)(dataRX[4] &lt;&lt; 8 | dataRX[5]);<br />
    txtValAn03.Text = myShort.ToString();</p>
<p>    myShort = (short)(dataRX[6] &lt;&lt; 8 | dataRX[7]);<br />
    txtValAn04.Text = myShort.ToString();</p>
<p>    myShort = (short)(dataRX[8] &lt;&lt; 8 | dataRX[9]);<br />
    txtValAn05.Text = myShort.ToString();</p>
<p>    myShort = (short)(dataRX[10] &lt;&lt; 8 | dataRX[11]);<br />
    txtValAn06.Text = myShort.ToString();</p>
<p>    //dopo aver acquisito i dati esco dal ciclo<br />
    break;<br />
  }<br />
}<br />
[/csharp]</p>
<p>Il programma acquisisce i dati provenienti dalla scheda e li visualizza nelle apposite caselle di testo, in contemporanea viene creato un file di testo, nella stessa cartella dove viene posto il fil eseguibile, dove verranno memorizzati i dati.</p>
<p>Per eseguire l&#8217;applicazione è necessario <strong>installare</strong> nel proprio pc il <strong>Microsoft .Net Framework 4.5</strong></p>
<p>In allegato trovate sia il file eseguibile sia il codice dell&#8217;applicazione.</p>
<p><strong>Download File eseguibile: <a href="https://logicaprogrammabile.it/wp-content/uploads/2013/10/ArduinoDataLogger.zip">ArduinoDataLogger (~7KB)</a></strong></p>
<p><strong>Download File sorgente: <a href="https://logicaprogrammabile.it/wp-content/uploads/2013/10/ArduinoDataLogger_Source.zip">ArduinoDataLogger_Source (~82KB)</a></strong></p>
<p>The post <a href="https://logicaprogrammabile.it/arduino-datalogger-con-pc/">Arduino datalogger con pc</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/arduino-datalogger-con-pc/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>RS422 comunicazione seriale utilizzando Arduino</title>
		<link>https://logicaprogrammabile.it/rs422-arduino-comunicazione-seriale-ttl/</link>
					<comments>https://logicaprogrammabile.it/rs422-arduino-comunicazione-seriale-ttl/#respond</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Thu, 22 Dec 2011 07:56:14 +0000</pubDate>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Tutorial Arduino]]></category>
		<category><![CDATA[Comunicazione seriale]]></category>
		<category><![CDATA[comunicazione tra circuiti]]></category>
		<category><![CDATA[RS422]]></category>
		<category><![CDATA[TTL]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=2343</guid>

					<description><![CDATA[<p>Come utilizzare dei convertitori TTL/RS422 La comunicazione seriale RS422 è uno standard che prevede l&#8217;utilizzo di due fili per trasmettere i dati. Questo standard permette di realizzare una comunicazione con dispositivi che si trovano a distanze considerevoli (1000-1500 mt) grazie all&#8217;alta immunità ai disturbi e...</p>
<p>The post <a href="https://logicaprogrammabile.it/rs422-arduino-comunicazione-seriale-ttl/">RS422 comunicazione seriale utilizzando Arduino</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Come utilizzare dei convertitori TTL/RS422</h1>
<p>La <a href="http://it.wikipedia.org/wiki/EIA_RS-422" target="_blank">comunicazione seriale</a> <strong>RS422</strong> è uno standard che prevede l&#8217;utilizzo di due fili per trasmettere i dati. Questo standard permette di realizzare una comunicazione con dispositivi che si trovano a distanze considerevoli (1000-1500 mt) grazie all&#8217;alta immunità ai disturbi e alla sensibilità dei circuiti di ricezione. Le velocità di trasmissione possono raggiungere su brevi distanza (circa 1mt) i <strong>10Mb/s</strong> mentre si scende a circa <strong>100Kb/s</strong> per distanze intorno ai 1000 mt. La <strong>RS422</strong> è tipicamente impiegata in ambito industriale.</p>
<p>Nella figura seguente viene illustrato lo schema a blocchi composto da due driver che codificano e decodificano il segnale in ingresso.<br />
Questo segnale viene messo in uscita, dal primo driver, con opposizione di fase,  e tramite una coppia di fili viene inviato al driver ricevente che ha il compito di ricostruirlo come in ingresso.<br />
<span id="more-2343"></span>Nel grafico dei segnali possiamo osservare che :</p>
<ul>
<li>Quando il segnale in <strong>A</strong> è <strong>ALTO</strong> rispetto al segnale presente in <strong>B</strong>, otteniamo in uscita un livello <strong>ALTO</strong> (Uno digitale)</li>
<li>Quando il segnale in <strong>A</strong> è <strong>BASSO</strong> rispetto al segnale presente in <strong>B</strong>, otteniamo in uscita un livello <strong>BASSO</strong> (Zero digitale)</li>
</ul>
<p><img decoding="async" class="aligncenter size-full wp-image-2347" title="RS422" src="https://logicaprogrammabile.it/wp-content/uploads/2011/12/RS422.gif" alt="Diagramma Segnali Rs422 e TTL" width="533" height="586" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/12/RS422.gif 533w, https://logicaprogrammabile.it/wp-content/uploads/2011/12/RS422-272x300.gif 272w" sizes="(max-width: 533px) 100vw, 533px" /></p>
<p><strong>Arduino</strong> dispone di una porta seriale (pin0 e pin1) capace di pilotare un driver TTL/RS422 utile per provare a lavorare con questo tipo di comunicazione. Questi convertitori sono di facile reperibilità, con costi contenuti e di semplice impiego. Quelli che ho usato sono l&#8217;integrato <strong>sn75174</strong> (QUADRUPLE DIFFERENTIAL LINE DRIVER) e l&#8217;integrato <strong>sn75175</strong> (QUADRUPLE DIFFERENTIAL LINE RECEIVERS).</p>
<p>Di seguito trovate  lo schema del circuito che converte il segnale TTL in RS422 e viceversa:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2352" title="TTL to 422" src="https://logicaprogrammabile.it/wp-content/uploads/2011/12/TtlTo422.gif" alt="Convertitore ttl rs422 e da rs422 a ttl" width="480" height="254" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/12/TtlTo422.gif 480w, https://logicaprogrammabile.it/wp-content/uploads/2011/12/TtlTo422-300x158.gif 300w" sizes="auto, (max-width: 480px) 100vw, 480px" /></p>
<p>L&#8217;integrato <strong>75174</strong> convertirà il segnale TTL in RS422, mentre l&#8217;integrato <strong>75175</strong> convertirà il segnale rs422, proveniente dalla linea, in segnale TTL. Di fatto per noi, con Arduino, diventa trasparente trasmettere in RS232 piuttosto che RS422 poiché via codice utilizzeremo sempre la classe <strong>Serial</strong> e le relative istruzioni per la trasmissione e per la ricezione.</p>
<p>Per testare il circuito possiamo immaginare di posizionare Arduino ad una certa distanza dal PC, poi tramite un convertitore TTL-422-TTL abbinato ad un convertitore TTL-232 possiamo instaurare una comunicazione seriale utilizzando le istruzioni che mette a disposizione il linguaggio di sviluppo. Lo schema a blocchi è il seguente</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2366" title="TTL-422-232" src="https://logicaprogrammabile.it/wp-content/uploads/2011/12/TTL-422-232.gif" alt="Conversione TTL RS422 RS232 con Arduino" width="592" height="94" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/12/TTL-422-232.gif 592w, https://logicaprogrammabile.it/wp-content/uploads/2011/12/TTL-422-232-300x47.gif 300w" sizes="auto, (max-width: 592px) 100vw, 592px" /></p>
<p>mentre questo è lo schema elettrico</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2367" title="TTL_422_TTL_232" src="https://logicaprogrammabile.it/wp-content/uploads/2011/12/TTL_422_TTL_232.gif" alt="Convertet uart to rs422 to rs232" width="651" height="362" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/12/TTL_422_TTL_232.gif 651w, https://logicaprogrammabile.it/wp-content/uploads/2011/12/TTL_422_TTL_232-300x166.gif 300w" sizes="auto, (max-width: 651px) 100vw, 651px" /></p>
<p>Il codice di esempio invia un carattere al PC.</p>
<pre class="lang:arduino decode:true ">void setup()
{
  Serial.begin(9600);
}

void loop()
{

  Serial.print("A");

  delay(500);

}</pre>
<p>Viste le potenzialità della rs422 questo sistema può essere una scelta valida per i progetti dove la distanza tra Arduino e pc inizia a diventare considerevole.</p>
<p>The post <a href="https://logicaprogrammabile.it/rs422-arduino-comunicazione-seriale-ttl/">RS422 comunicazione seriale utilizzando Arduino</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/rs422-arduino-comunicazione-seriale-ttl/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Arduino aggiungere porta seriale con Software Serial Library</title>
		<link>https://logicaprogrammabile.it/software-serial-library-arduino-seriale/</link>
					<comments>https://logicaprogrammabile.it/software-serial-library-arduino-seriale/#respond</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Fri, 26 Aug 2011 09:16:41 +0000</pubDate>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Tutorial Arduino]]></category>
		<category><![CDATA[Comunicazione seriale]]></category>
		<category><![CDATA[RS232]]></category>
		<category><![CDATA[Software Serial Library]]></category>
		<category><![CDATA[SoftwareSerial]]></category>
		<category><![CDATA[UART]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=1872</guid>

					<description><![CDATA[<p>Utilizzare Software Serial Library per aggiungere una porta seriale La comunicazione seriale RS232 è un modo semplice per permettere alla nostra board Arduino di comunicare con il computer piuttosto che con sensori o altri dispositivi. Principalmente Arduino UNO possiede una sola porta seriale, implementata in...</p>
<p>The post <a href="https://logicaprogrammabile.it/software-serial-library-arduino-seriale/">Arduino aggiungere porta seriale con Software Serial Library</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Utilizzare Software Serial Library per aggiungere una porta seriale</h1>
<p>La comunicazione seriale <strong>RS232</strong> è un modo semplice per permettere alla nostra board Arduino di comunicare con il computer piuttosto che con sensori o altri dispositivi.<br />
Principalmente Arduino UNO possiede una sola porta seriale, implementata in hardware sul chip Atmega328, e disponibile sui <strong>pin0 (Rx)</strong> e <strong>pin1 (Tx)</strong> della scheda.<br />
Sebbene, il più delle volte, una porta seriale sia sufficiente, può essere necessario instaurare un&#8217;ulteriore comunicazione seriale, ad esempio, per motivi di debugging o monitoring con un altro dispositivo o computer.<br />
In questo caso ci viene in aiuto la libreria <strong>SoftwareSerial (Software Serial Library)</strong> che permette di impiegare ulteriori pin disponibili sulla scheda per definire una porta seriale aggiuntiva.</p>
<p>Per utilizzarla è fondamentale inserire nello sketch il riferimento alla libreria tramite la parola chiave <strong>#include</strong>:</p>
<pre class="lang:arduino decode:true ">#include &lt;SoftwareSerial.h&gt;</pre>
<p>successivamente si definisce una variabile utilizzando il costruttore <strong>SoftwareSerial</strong>:</p>
<pre class="lang:arduino decode:true ">SoftwareSerial PortaSeriale = SoftwareSerial(pin_RX, pin_TX);</pre>
<p>&nbsp;</p>
<p>dove <span style="text-decoration: underline;">PortaSeriale</span> è il nome dell&#8217;oggetto, <span style="text-decoration: underline;">pin_RX</span> definisce il pin per ricevere i dati e <span style="text-decoration: underline;">pin_TX</span> definisce il pin per la trasmissione dati.</p>
<p><span id="more-1872"></span>Ora nella funzione Setup(), tramite pinMode, definiamo il pin previsto per la ricezione come input, e il pin previsto per la trasmissione come output. Specifichiamo inoltre la velocità di trasmissione a 9600bps.</p>
<pre class="lang:arduino decode:true ">void setup()
{
pinMode(pin_RX, INPUT);
pinMode(pin_TX, OUTPUT);

PortaSeriale.begin(9600);
}</pre>
<p>&nbsp;</p>
<p>Per leggere e scrivere sulla seriale vengono utilizzati gli stessi metodi implementati per Serial().</p>
<p>Di seguito l&#8217;esempio completo che permette di testare questa funzionalità impiegando i pin7 per la ricezione ed il pin8 per la trasmissione</p>
<pre class="lang:arduino decode:true ">#include &lt;SoftwareSerial.h&gt;

//creo una nuova porta seriale via software
SoftwareSerial PortaSeriale =  SoftwareSerial(7, 8);

//variabile
char EchoChar = 0;

void setup()  {
//definisco il pin7(RX) come ingresso
pinMode(7, INPUT);
//definisco il pin8(TX) come uscita
pinMode(8, OUTPUT);
//setto la velocita della seriale software
PortaSeriale.begin(9600);
}

void loop() {
//leggo dalla seriale(pin7)
EchoChar = PortaSeriale.read();
//invio il dato letto
PortaSeriale.print(EchoChar);

delay(10);

}</pre>
<p>&nbsp;</p>
<p>il circuito di per il test è rappresentato nell&#8217;illustrazione seguente:</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-1878 size-full" title="Arduino_SerialPrint" src="https://logicaprogrammabile.it/wp-content/uploads/2011/08/Arduino_SerialPrint.gif" alt="Utilizzo libreria SoftwareSerial per aggiungere una porta seriale ad Arduino" width="623" height="372" srcset="https://logicaprogrammabile.it/wp-content/uploads/2011/08/Arduino_SerialPrint.gif 623w, https://logicaprogrammabile.it/wp-content/uploads/2011/08/Arduino_SerialPrint-300x179.gif 300w" sizes="auto, (max-width: 623px) 100vw, 623px" /></p>
<p>Avendo altri pin disponibili nulla ci vieta di definire un&#8217;ulteriore porta seriale o più.</p>
<p>Nonostante l&#8217;utilità di questa libreria, ci sono alcune limitazioni che bisogna conoscere, per evitare errori di programmazione e di progettazione:</p>
<ul>
<li>E&#8217; possibile utilizzare per la porta solamente la velocità di 9600bps</li>
<li>Non è possibile sapere se ci sono dati disponibili per la lettura come avviene per la funzione <strong>Serial.available()</strong></li>
<li>Il metodo<strong> read()</strong> è bloccante, quindi il codice si ferma fintanto che non arriva un byte da poter leggere</li>
<li>Non essendo presente un buffer di ricezione il metodo <strong>read()</strong> deve essere richiamato velocemente per evitare la perdita di dati.</li>
</ul>
<p>Queste limitazioni potrebbero far ripensare l&#8217;utilizzo della libreria, ma credo che sia comunque importante conoscerne il funzionamento per valutare, a seconda dei circuiti, se impiegarla o meno.<br />
Personalmente l&#8217;ho trovata molto utile per inviare dati ad altri dispositivi come funzione di monitoring, difatti potete utilizzare solamente la funzione <strong>print</strong> e tralasciare la read().</p>
<p>The post <a href="https://logicaprogrammabile.it/software-serial-library-arduino-seriale/">Arduino aggiungere porta seriale con Software Serial Library</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/software-serial-library-arduino-seriale/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
