<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
	<id>https://www.gambas-it.org/wiki/index.php?action=history&amp;feed=atom&amp;title=Far_interagire_Gambas_con_Arduino</id>
	<title>Far interagire Gambas con Arduino - Cronologia</title>
	<link rel="self" type="application/atom+xml" href="https://www.gambas-it.org/wiki/index.php?action=history&amp;feed=atom&amp;title=Far_interagire_Gambas_con_Arduino"/>
	<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Far_interagire_Gambas_con_Arduino&amp;action=history"/>
	<updated>2026-10-23T08:18:11Z</updated>
	<subtitle>Cronologia della pagina su questo sito</subtitle>
	<generator>MediaWiki 1.39.15</generator>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Far_interagire_Gambas_con_Arduino&amp;diff=41784&amp;oldid=prev</id>
		<title>Vuott il 21:10, 25 lug 2025</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Far_interagire_Gambas_con_Arduino&amp;diff=41784&amp;oldid=prev"/>
		<updated>2025-07-25T21:10:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;it&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Versione meno recente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versione delle 15:10, 25 lug 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l2&quot;&gt;Riga 2:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riga 2:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Arduino è un programmatore per microcontrollori ATmega 328 che vuole fornire una piattaforma di sviluppo per &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;prototipizzare &lt;/del&gt;sistemi elettronici in modo pratico, divertente e veloce. Un suo vantaggio è una larga utenza, può quindi vantare molta documentazione e vaste comunità.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Arduino è un programmatore per microcontrollori ATmega 328 che vuole fornire una piattaforma di sviluppo per &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;proto-tipizzare &lt;/ins&gt;sistemi elettronici in modo pratico, divertente e veloce. Un suo vantaggio è una larga utenza, può quindi vantare molta documentazione e vaste comunità.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;L'Arduino va collegato tramite una porta USB.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;L'Arduino va collegato tramite una porta USB.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;All'inizio ho spiegato che nei sistemi UNIX l'hardware viene visto e gestito come un file. Nel momento in cui viene collegato l'Arduino verrà quindi automaticamente creato un file ad hoc nella cartella “/dev” che contiene i preziosi file di sistema. Solitamente tale file viene nominato “ttyACM0”. A mia esperienza ho notato che tra un computer e l'altro la differenza nel nome di tale file, sta nel variare l' ultimo carattere, cioè la cifra, che nel mio caso è 0. Per cui se avete difficoltà a dichiarare il nome del file che controlla Arduino basta che provate a incrementare a tentavi il valore di tale cifra che per esempio potrà essere “ttyACM1” oppure “ttyACM2” e così via...... .&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;BR&amp;gt;&lt;/ins&gt;All'inizio ho spiegato che nei sistemi UNIX l'hardware viene visto e gestito come un file. Nel momento in cui viene collegato l'Arduino verrà quindi automaticamente creato un file ad hoc nella cartella “/dev” che contiene i preziosi file di sistema. Solitamente tale file viene nominato “ttyACM0”. A mia esperienza ho notato che tra un computer e l'altro la differenza nel nome di tale file, sta nel variare l' ultimo carattere, cioè la cifra, che nel mio caso è 0. Per cui se avete difficoltà a dichiarare il nome del file che controlla Arduino basta che provate a incrementare a tentavi il valore di tale cifra che per esempio potrà essere “ttyACM1” oppure “ttyACM2” e così via...... .&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Nel nostro esempio va dichiarato il percorso e il nome del file di sistema con cui il programma fa riferimento ad Arduino.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;BR&amp;gt;&lt;/ins&gt;Nel nostro esempio va dichiarato il percorso e il nome del file di sistema con cui il programma fa riferimento ad Arduino.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Questo parametro va dichiarato nella &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;textbox &lt;/del&gt;denominata &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;“txtport” &lt;/del&gt;che si trova &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;al&lt;/del&gt;''&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;interno della form &lt;/del&gt;(in “figura5” è cerchiata in blu). Una volta avviato il programma se per esempio il nostro file si chiama ttyACM0 al suo interno dovremo ogni volta digitare &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;“&lt;/del&gt;/dev/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ttyACM0”&lt;/del&gt;. Personalmente trovo scomodo che ad ogni avvio del programma vada dichiarato il percorso e il nome del file all'interno di “txtport”. Quindi per semplificarci la vita rendiamo automatico tutto questo. Per ovviare questo problema si deve intervenire sul codice del programma nella classe “''Button1_Click()''” apportando modifiche sulla riga “''Sport.PortName = TxtPort.Text''”.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;BR&amp;gt;&lt;/ins&gt;Questo parametro va dichiarato nella &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;''TextBox'' &lt;/ins&gt;denominata &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;quot;txtport&amp;quot; &lt;/ins&gt;che si trova &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;all'interno del ''Form&lt;/ins&gt;'' (in “figura5” è cerchiata in blu).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;BR&amp;gt;&lt;/ins&gt;Una volta avviato il programma se per esempio il nostro file si chiama ttyACM0 al suo interno dovremo ogni volta digitare &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;quot;&lt;/ins&gt;/dev/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ttyACM0&amp;quot;&lt;/ins&gt;. Personalmente trovo scomodo che ad ogni avvio del programma vada dichiarato il percorso e il nome del file all'interno di “txtport”. Quindi per semplificarci la vita rendiamo automatico tutto questo.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;BR&amp;gt;&lt;/ins&gt;Per ovviare questo problema si deve intervenire sul codice del programma nella classe “''Button1_Click()''” apportando modifiche sulla riga “''Sport.PortName = TxtPort.Text'' ”.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Il codice originale si presenterà cosi:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Il codice originale si presenterà cosi:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l35&quot;&gt;Riga 35:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riga 37:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  END&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  END&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Ecco il codice con inserite le modifiche da apportare&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, segnate in rosso, &lt;/del&gt;nella classe Button1_Click() :&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Ecco il codice con inserite le modifiche da apportare nella classe Button1_Click() :&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  PUBLIC SUB Button1_Click()&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  PUBLIC SUB Button1_Click()&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Vuott</name></author>
	</entry>
	<entry>
		<id>https://www.gambas-it.org/wiki/index.php?title=Far_interagire_Gambas_con_Arduino&amp;diff=22593&amp;oldid=prev</id>
		<title>Vuott: Creata pagina con &quot;(Guida a cura del membro ''Ste86'' del forum www.gambas-it.org)   Arduino è un programmatore per microcontrollori ATmega 328 che vuole fornire una piattaforma di sviluppo per...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.gambas-it.org/wiki/index.php?title=Far_interagire_Gambas_con_Arduino&amp;diff=22593&amp;oldid=prev"/>
		<updated>2017-05-30T22:21:37Z</updated>

		<summary type="html">&lt;p&gt;Creata pagina con &amp;quot;(Guida a cura del membro &amp;#039;&amp;#039;Ste86&amp;#039;&amp;#039; del forum www.gambas-it.org)   Arduino è un programmatore per microcontrollori ATmega 328 che vuole fornire una piattaforma di sviluppo per...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nuova pagina&lt;/b&gt;&lt;/p&gt;&lt;div&gt;(Guida a cura del membro ''Ste86'' del forum www.gambas-it.org)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Arduino è un programmatore per microcontrollori ATmega 328 che vuole fornire una piattaforma di sviluppo per prototipizzare sistemi elettronici in modo pratico, divertente e veloce. Un suo vantaggio è una larga utenza, può quindi vantare molta documentazione e vaste comunità. &lt;br /&gt;
&lt;br /&gt;
L'Arduino va collegato tramite una porta USB.&lt;br /&gt;
All'inizio ho spiegato che nei sistemi UNIX l'hardware viene visto e gestito come un file. Nel momento in cui viene collegato l'Arduino verrà quindi automaticamente creato un file ad hoc nella cartella “/dev” che contiene i preziosi file di sistema. Solitamente tale file viene nominato “ttyACM0”. A mia esperienza ho notato che tra un computer e l'altro la differenza nel nome di tale file, sta nel variare l' ultimo carattere, cioè la cifra, che nel mio caso è 0. Per cui se avete difficoltà a dichiarare il nome del file che controlla Arduino basta che provate a incrementare a tentavi il valore di tale cifra che per esempio potrà essere “ttyACM1” oppure “ttyACM2” e così via...... .&lt;br /&gt;
Nel nostro esempio va dichiarato il percorso e il nome del file di sistema con cui il programma fa riferimento ad Arduino.&lt;br /&gt;
Questo parametro va dichiarato nella textbox denominata “txtport” che si trova al''interno della form (in “figura5” è cerchiata in blu). Una volta avviato il programma se per esempio il nostro file si chiama ttyACM0 al suo interno dovremo ogni volta digitare “/dev/ttyACM0”. Personalmente trovo scomodo che ad ogni avvio del programma vada dichiarato il percorso e il nome del file all'interno di “txtport”. Quindi per semplificarci la vita rendiamo automatico tutto questo. Per ovviare questo problema si deve intervenire sul codice del programma nella classe “''Button1_Click()''” apportando modifiche sulla riga “''Sport.PortName = TxtPort.Text''”.&lt;br /&gt;
&lt;br /&gt;
Il codice originale si presenterà cosi:&lt;br /&gt;
 PUBLIC SUB Button1_Click()&lt;br /&gt;
   IF Sport.Status = Net.Active THEN&lt;br /&gt;
   CLOSE Sport&lt;br /&gt;
   Button1.Text = &amp;quot;Open&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
    ELSE&lt;br /&gt;
 ' ''Line parameters''&lt;br /&gt;
     Sport.PortName = TxtPort.Text&lt;br /&gt;
     Sport.Speed = CmbSpeed.Text&lt;br /&gt;
     Sport.Parity = CmbParity.Index&lt;br /&gt;
     Sport.DataBits = CmbData.Text&lt;br /&gt;
     Sport.StopBits = CmbStop.Text&lt;br /&gt;
 ' ''keep DTR on''&lt;br /&gt;
     Sport.FlowControl = ComboBox1.Index&lt;br /&gt;
     Sport.Open()&lt;br /&gt;
     Check_Status()&lt;br /&gt;
     TextArea1.Text = &amp;quot;Port Opened : &amp;quot; &amp;amp; Sport.PortName &amp;amp; &amp;quot; Settings : &amp;quot; &amp;amp;&lt;br /&gt;
     Sport.Speed &amp;amp; &amp;quot;,&amp;quot; &amp;amp; Sport.Parity &amp;amp; &amp;quot;,&amp;quot; &amp;amp; Sport.DataBits &amp;amp; &amp;quot;,&amp;quot; &amp;amp;&lt;br /&gt;
     Sport.StopBits &amp;amp; Chr(13) &amp;amp; Chr(10)&lt;br /&gt;
     Button1.Text = &amp;quot;Close&amp;quot;&lt;br /&gt;
   END IF&lt;br /&gt;
 &lt;br /&gt;
  Button1_Click()&lt;br /&gt;
 &lt;br /&gt;
 END&lt;br /&gt;
Ecco il codice con inserite le modifiche da apportare, segnate in rosso, nella classe Button1_Click() :&lt;br /&gt;
 PUBLIC SUB Button1_Click()&lt;br /&gt;
 &lt;br /&gt;
  DIM port AS String&lt;br /&gt;
   port = &amp;quot;/dev/ttyACM0&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
   IF Sport.Status = Net.Active THEN&lt;br /&gt;
     CLOSE Sport&lt;br /&gt;
     Button1.Text = &amp;quot;Open&amp;quot;&lt;br /&gt;
   ELSE&lt;br /&gt;
 ' ''Line parameters''&lt;br /&gt;
     Sport.PortName = port&lt;br /&gt;
     Sport.Speed = CmbSpeed.Text&lt;br /&gt;
     Sport.Parity = CmbParity.Index&lt;br /&gt;
     Sport.DataBits = CmbData.Text&lt;br /&gt;
     Sport.StopBits = CmbStop.Text&lt;br /&gt;
 ' ''keep DTR on''&lt;br /&gt;
     Sport.FlowControl = ComboBox1.Index&lt;br /&gt;
 &lt;br /&gt;
     Sport.Open()&lt;br /&gt;
     Check_Status()&lt;br /&gt;
     TextArea1.Text = &amp;quot;Port Opened : &amp;quot; &amp;amp; Sport.PortName &amp;amp; &amp;quot; Settings : &amp;quot; &amp;amp;&lt;br /&gt;
     Sport.Speed &amp;amp; &amp;quot;,&amp;quot; &amp;amp; Sport.Parity &amp;amp; &amp;quot;,&amp;quot; &amp;amp; Sport.DataBits &amp;amp; &amp;quot;,&amp;quot; &amp;amp;&lt;br /&gt;
     Sport.StopBits &amp;amp; Chr(13) &amp;amp; Chr(10)&lt;br /&gt;
     Button1.Text = &amp;quot;Close&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
   END IF&lt;br /&gt;
 &lt;br /&gt;
 END&lt;br /&gt;
Ora eseguiamo il programma, ma non preoccupatevi se nella TxtPort vedrete ancora scritto una cosa del tipo /dev/ttyS0 l'importante è che sia dichiarata correttamente all'interno del codice. Con questo metodo possiamo ora definire tutti i parametri come ad esempio Sport.Speed, Sport.Parity, Sport.DataBits, Sport.StopBits, ecc ecc..&lt;br /&gt;
&lt;br /&gt;
Una altra classe che secondo me ha importanza rilevante è la Form_Open() perché all'interno di essa viene specificato che valore deve aver il baud rate della porta utilizzata. Essa si presenta cosi:&lt;br /&gt;
 PUBLIC SUB Form_Open()&lt;br /&gt;
 &lt;br /&gt;
   cmbSpeed.Index = cmbSpeed.Find(&amp;quot;19200&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 END&lt;br /&gt;
Da WIKIPEDIA: “''Il baud rate indica il numero di transizioni al secondo che avvengono sulla linea; il bps indica, come dice il nome, quanti bit al secondo sono trasmessi lungo la linea''”.&lt;br /&gt;
&lt;br /&gt;
Nella comunicazione seriale questo valore deve essere uguale per chi riceve e per chi trasmette i dati.&lt;br /&gt;
&amp;lt;BR&amp;gt;Solitamente Arduino lo si imposta a 9600 e dunque anche il nostro progetto deve essere impostato con lo stesso valore. Possiamo rendere automatico anche questo senza dover andare ad agire nella textbox situata nella form come cerchiato in giallo nella “figura5”. &lt;br /&gt;
&lt;br /&gt;
Ecco il codice con la modifica segnata in rosso:&lt;br /&gt;
 PUBLIC SUB Form_Open()&lt;br /&gt;
 &lt;br /&gt;
   cmbSpeed.Index = cmbSpeed.Find(&amp;quot;&amp;lt;FONT color=#FF0000&amp;gt;9600&amp;lt;/font&amp;gt;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 END&lt;br /&gt;
&lt;br /&gt;
Siamo arrivati ora al momento di fare qualcosa di pratico dalla situazione che abbiamo ora. L'esempio SerialPort come l'abbiamo impostato farà scrivere in una TextBox il testo&lt;br /&gt;
 “ciao a tutti”&lt;br /&gt;
grazie ad un segnale seriale di Arduino che parte alla pressione di un pulsante su esso. Ecco il codice per Arduino per ottenere questo:&lt;br /&gt;
 const int buttonPin8 = 8;&lt;br /&gt;
 &lt;br /&gt;
 int buttonState8 = 0; &lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
 &lt;br /&gt;
 Serial.begin(9600);&lt;br /&gt;
 pinMode(buttonPin8, INPUT);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
 &lt;br /&gt;
 buttonState8 = digitalRead(buttonPin8);&lt;br /&gt;
 &lt;br /&gt;
 if (buttonState8 == HIGH) { &lt;br /&gt;
 delay (250); &lt;br /&gt;
 Serial.print (&amp;quot;ciao a tutti&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
Questo, invece, è il codice per Gambas con le modifiche in rosso. La struttura della form deve essere quella dell'esempio SerialPort raffigurata in “figura5”:&lt;br /&gt;
&lt;br /&gt;
 ' ''Gambas class file''&lt;br /&gt;
 &lt;br /&gt;
 PUBLIC SUB Form_Close()&lt;br /&gt;
   IF Sport.Status = Net.Active THEN CLOSE Sport&lt;br /&gt;
 END&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 PUBLIC SUB Check_Status()&lt;br /&gt;
 &lt;br /&gt;
   ChkDSR.Value = Sport.DSR&lt;br /&gt;
   ChkDTR.Value = Sport.DTR&lt;br /&gt;
   ChkCTS.Value = Sport.CTS&lt;br /&gt;
   ChkRTS.Value = Sport.RTS&lt;br /&gt;
   ChkDCD.Value = Sport.DCD&lt;br /&gt;
   ChkRNG.Value = Sport.RNG&lt;br /&gt;
 &lt;br /&gt;
 END&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 PUBLIC SUB Button1_Click()&lt;br /&gt;
 &lt;br /&gt;
  DIM port AS String&lt;br /&gt;
  &lt;br /&gt;
 &amp;lt;FONT color=#FF0000&amp;gt;port = &amp;quot;/dev/ttyACM0&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   IF Sport.Status = Net.Active THEN&lt;br /&gt;
     CLOSE Sport&lt;br /&gt;
     Button1.Text = &amp;quot;Open&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
   ELSE&lt;br /&gt;
 ' ''Line parameters''&lt;br /&gt;
     Sport.PortName = &amp;lt;FONT color=#FF0000&amp;gt;port&amp;lt;/font&amp;gt;&lt;br /&gt;
     Sport.Speed = CmbSpeed.Text&lt;br /&gt;
     Sport.Parity = CmbParity.Index&lt;br /&gt;
     Sport.DataBits = CmbData.Text&lt;br /&gt;
     Sport.StopBits = CmbStop.Text&lt;br /&gt;
 ' ''keep DTR on''&lt;br /&gt;
     Sport.FlowControl = ComboBox1.Index&lt;br /&gt;
     Sport.Open()&lt;br /&gt;
     Check_Status()&lt;br /&gt;
     TextArea1.Text = Chr(13) &amp;amp; Chr(10)&lt;br /&gt;
     Button1.Text = &amp;quot;Close&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
   END IF&lt;br /&gt;
 &lt;br /&gt;
 END&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 PUBLIC SUB SPort_Read()&lt;br /&gt;
  DIM s AS String&lt;br /&gt;
   READ #Sport, s, Lof(Sport) &lt;br /&gt;
   &amp;lt;FONT color=#FF0000&amp;gt;TextArea1.Text = TextArea1.Text &amp;amp; s&amp;lt;/font&amp;gt;&lt;br /&gt;
 END&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 PUBLIC SUB SPort_RNGChange(iVal AS Boolean)&lt;br /&gt;
   ChkRng.Value = iVal&lt;br /&gt;
 END&lt;br /&gt;
 &lt;br /&gt;
 PUBLIC SUB SPort_DTRChange(iVal AS Boolean)&lt;br /&gt;
   ChkDTR.Value = iVal&lt;br /&gt;
 END&lt;br /&gt;
 &lt;br /&gt;
 PUBLIC SUB SPort_DSRChange(iVal AS Boolean)&lt;br /&gt;
   ChkDSR.Value = iVal&lt;br /&gt;
 END&lt;br /&gt;
 &lt;br /&gt;
 PUBLIC SUB SPort_CTSChange(iVal AS Boolean)&lt;br /&gt;
   ChkCTS.Value = iVal&lt;br /&gt;
 END&lt;br /&gt;
 &lt;br /&gt;
 PUBLIC SUB SPort_DCDChange(iVal AS Boolean)&lt;br /&gt;
   ChkDCD.Value = iVal&lt;br /&gt;
 END&lt;br /&gt;
 &lt;br /&gt;
 PUBLIC SUB SPort_RTSChange(iVal AS Boolean)&lt;br /&gt;
   ChkRTS.Value = iVal&lt;br /&gt;
 END&lt;br /&gt;
 &lt;br /&gt;
 PUBLIC SUB Button2_Click()&lt;br /&gt;
 &lt;br /&gt;
   IF Sport.Status = Net.Inactive THEN&lt;br /&gt;
     Message(&amp;quot;Open port first!&amp;quot;)&lt;br /&gt;
   ELSE&lt;br /&gt;
 ' ''WRITE #Sport,TxtSend.Text &amp;amp; Chr(13) &amp;amp; Chr(10), txtSend.Length + 2''&lt;br /&gt;
     PRINT #Sport, txtSend.Text; Chr$(13); Chr$(10);&lt;br /&gt;
   END IF&lt;br /&gt;
 &lt;br /&gt;
 END&lt;br /&gt;
 &lt;br /&gt;
 PUBLIC SUB ChkDTR_Click()&lt;br /&gt;
 &lt;br /&gt;
   Sport.DTR = ChkDTR.Value&lt;br /&gt;
   Check_Status&lt;br /&gt;
 &lt;br /&gt;
 END&lt;br /&gt;
 &lt;br /&gt;
 PUBLIC SUB ChkRTS_Click()&lt;br /&gt;
 &lt;br /&gt;
   Sport.RTS = ChkRTS.Value&lt;br /&gt;
   Check_Status&lt;br /&gt;
 &lt;br /&gt;
 END&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 PUBLIC SUB ComboBox1_Click()&lt;br /&gt;
 &lt;br /&gt;
   Sport.FlowControl = ComboBox1.Index&lt;br /&gt;
 &lt;br /&gt;
 END&lt;br /&gt;
 &lt;br /&gt;
 PUBLIC SUB Form_Open()&lt;br /&gt;
 &lt;br /&gt;
   cmbSpeed.Index = cmbSpeed.Find(&amp;quot;&amp;lt;FONT color=#FF00000&amp;gt;9600&amp;lt;/font&amp;gt;&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
 END&lt;br /&gt;
 &lt;br /&gt;
Con questo è tutto. Spero di essere stato esauriente. Buon divertimento!!&lt;br /&gt;
&lt;br /&gt;
''Ste86''&lt;/div&gt;</summary>
		<author><name>Vuott</name></author>
	</entry>
</feed>