<?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>74LS595 Archives - Esperimenti con logiche programmabili</title>
	<atom:link href="https://logicaprogrammabile.it/tag/74ls595/feed/" rel="self" type="application/rss+xml" />
	<link>https://logicaprogrammabile.it/tag/74ls595/</link>
	<description>Tutorial in italiano per imparare a programmare usando Arduino, Raspberry PI, Netduino</description>
	<lastBuildDate>Wed, 24 May 2017 20:12:47 +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>74LS595 Archives - Esperimenti con logiche programmabili</title>
	<link>https://logicaprogrammabile.it/tag/74ls595/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Shift register 74LS595 esperimenti con Arduino</title>
		<link>https://logicaprogrammabile.it/shift-register-arduino-74595/</link>
					<comments>https://logicaprogrammabile.it/shift-register-arduino-74595/#respond</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Mon, 13 Feb 2012 18:48:02 +0000</pubDate>
				<category><![CDATA[Tutorial Arduino]]></category>
		<category><![CDATA[74LS595]]></category>
		<category><![CDATA[Shift Register]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=2505</guid>

					<description><![CDATA[<p>Come impiegare uno shift register per incrementare le uscite di Arduino La board Arduino UNO possieda pochi pin digitali, ma fortunatamente esistono dei metodi che ne incrementano il numero impiegando componenti esterni di facile impiego e con un costo contenuto. Il sistema che ho realizzato...</p>
<p>The post <a href="https://logicaprogrammabile.it/shift-register-arduino-74595/">Shift register 74LS595 esperimenti con Arduino</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3>Come impiegare uno shift register per incrementare le uscite di Arduino</h3>
<p>La board <strong>Arduino UNO</strong> possieda pochi pin digitali, ma fortunatamente esistono dei metodi che ne incrementano il numero impiegando componenti esterni di facile impiego e con un costo contenuto. Il sistema che ho realizzato impiega uno <a href="http://it.wikipedia.org/wiki/Registro_a_scorrimento" target="_blank" rel="noopener noreferrer">shift register a 8 bit</a> (<strong>SN74LS595</strong>) che viene controllato da Arduino tramite la funzione <strong>ShiftOut</strong>.</p>
<p><strong>ShiftOut</strong> permette di serializzare un dato su una linea di 2 fili, mentre lo shift register parallelizza il dato pilotando le sue 8 uscite.</p>
<p>Lo schema seguente mostra i collegamenti tra il <strong>74LS595</strong> e l&#8217;<strong>Arduino</strong>. Il pin 12 di Arduino genera il clock del dato seriale disponibile in uscita al pin 11, mentre il pin 8 viene usato per permettere il caricamento del dato sullo shift register.</p>
<p style="text-align: center;"><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-2510" title="Arduino UNO e shift Register 74595" src="https://logicaprogrammabile.it/wp-content/uploads/2012/02/Uno_74595.gif" alt="" width="353" height="268" srcset="https://logicaprogrammabile.it/wp-content/uploads/2012/02/Uno_74595.gif 353w, https://logicaprogrammabile.it/wp-content/uploads/2012/02/Uno_74595-300x227.gif 300w" sizes="(max-width: 353px) 100vw, 353px" /></p>
<p><span id="more-2505"></span>il diagramma seguente mostra l&#8217;andamento dei segnali sulle relative linee</p>
<p style="text-align: center;"><img decoding="async" class="aligncenter size-full wp-image-2514" title="SerialData" src="https://logicaprogrammabile.it/wp-content/uploads/2012/02/SerialData.png" alt="shift register 74595 signal diagram" width="515" height="282" srcset="https://logicaprogrammabile.it/wp-content/uploads/2012/02/SerialData.png 515w, https://logicaprogrammabile.it/wp-content/uploads/2012/02/SerialData-300x164.png 300w" sizes="(max-width: 515px) 100vw, 515px" /></p>
<p>Quindi per scrivere un dato sullo shift register devo per prima cosa porre a zero il pin8, avviare la scrittura, che si compone nella generazione del clock(PIN12) e nella serializzazione del dato(PIN11) e settare nuovamente a uno il pin8. A fine scrittura, i pin dello shift register sono settati o resettati in funzione dei bit del dato inviato dall&#8217;Arduino.</p>
<p>Di seguito la pin function dello shift register</p>
<p><img decoding="async" class="aligncenter size-full wp-image-2524" title="Schema74595" src="https://logicaprogrammabile.it/wp-content/uploads/2012/02/Schema74595.png" alt="Pin Function 74LS595 shift register" width="274" height="290" /></p>
<p>Passiamo al codice per interagire con le uscite del 74595</p>
<pre class="lang:arduino decode:true">//Il pin8 viene usato per abilitare la scrittura
//sullo shift register
int Abilitazione = 8;
//il pin11 viene usato per inviare il dato
int UscitaDatoSeriale = 11;
//Il pin12 viene usato per generare il clock
int DataClock = 12;

//variabile che contiene il dato da scrivere sullo
//shift register
byte dato = 0;

void setup()
{
  //Setto i pin come uscite
  pinMode(Abilitazione, OUTPUT);
  pinMode(DataClock, OUTPUT);
  pinMode(UscitaDatoSeriale, OUTPUT);
  //Per il serial monitor (debug)
  Serial.begin(9600);
}

void loop()
{
  //setto tutte le 8 uscite dello shift register a 1
  dato=0b11111111;
  //invio il valore al serial monitor
  Serial.println(dato);
  //abilita la scrittura
  digitalWrite(Abilitazione, LOW);
  //invia il dato
  shiftOut(UscitaDatoSeriale, DataClock, LSBFIRST, dato);
  //Disabilita scrittura
  digitalWrite(Abilitazione, HIGH);
  //ritardo
  delay(500);
}</pre>
<p>&nbsp;</p>
<p>Il codice pone a livello logico alto tutte le uscite dello shift register, da notare che ho utilizzato la notazione binaria per facilitare la gestione delle uscite del 74595, infatti se volessi porre bassa la linea QA, corrispondente al bit zero, cambierei il valore di dato a <strong>ob01111111</strong>.<br />
Il flag <strong>LSBFIRST</strong> dell&#8217;istruzione <strong>shiftOut</strong> decide se il bit meno significativo, deve essere il bit zero dello shift register piuttosto che il bit7.</p>
<p>The post <a href="https://logicaprogrammabile.it/shift-register-arduino-74595/">Shift register 74LS595 esperimenti con Arduino</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/shift-register-arduino-74595/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
