Tutorial Arduino #17

Shift register 74HC595

Come aumentare le uscire digitali di Arduno con gli shift register a 8 bit - Tutorial Arduino #17
Tutorial Arduino #16: Joystick
Tutorial Arduino #16
Joystick
Tutorial Arduino #18: Emulare tastiera e mouse
Tutorial Arduino #18
Emulare tastiera e mouse

Descrizione

In questo episodio del tutorial di Arduino impareremo a utilizzare gli shift register. Vedremo come collegarli in modo da aumentare il numero di pin digitali della scheda di Arduino e realizzeremo alcuni esempi di giochi di luce con dei LED.
Vedremo inoltre come possono essere collegati a cascata in modo da offrire molte più uscite digitali senza incrementare ulteriormente l'utilizzo dei pin di Arduino.

Scarica le risorse

Progetto: Shift register (base)

Schema

Componenti

Codice

#define DATA_PIN 4#define LATCH_PIN 3#define CLOCK_PIN 2 void setup(){  pinMode(DATA_PIN, OUTPUT);  pinMode(LATCH_PIN, OUTPUT);  pinMode(CLOCK_PIN, OUTPUT);} void loop(){  animation1(70);  animation2(70);} void writeRegister(byte value){  digitalWrite(LATCH_PIN, LOW);  shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, value);  digitalWrite(LATCH_PIN, HIGH);} void animation1(unsigned int animationDelay){  for(int i = 0; i < 8; i++){    writeRegister(0x1 << i);    delay(animationDelay);  }  for(int i = 0; i < 8; i++){    writeRegister(0x80 >> i);    delay(animationDelay);  }} void animation2(unsigned int animationDelay){  byte value = 0x1;  for(int i = 0; i < 8; i++){    writeRegister(value);    value = (value << 1+ 1;    delay(animationDelay);  }  for(int i = 0; i < 8; i++){    writeRegister(value);    value = value >> 1;    delay(animationDelay);  }}
scarica il file

Progetto: Shift register (esteso)

Schema

Componenti

Codice

#define DATA_PIN 4#define LATCH_PIN 3#define CLOCK_PIN 2 void setup(){  pinMode(DATA_PIN, OUTPUT);  pinMode(LATCH_PIN, OUTPUT);  pinMode(CLOCK_PIN, OUTPUT);} void loop(){  animation1(50);  animation2(50);} void writeRegister(unsigned int value){  digitalWrite(LATCH_PIN, LOW);  shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, value >> 8);  shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, value);  digitalWrite(LATCH_PIN, HIGH);} void animation1(unsigned int animationDelay){  for(int i = 0; i < 16; i++){    writeRegister(0x1 << i);    delay(animationDelay);  }  for(int i = 0; i < 16; i++){    writeRegister(0x8000 >> i);    delay(animationDelay);  }} void animation2(unsigned int animationDelay){  unsigned int value = 0x1;  for(int i = 0; i < 16; i++){    writeRegister(value);    value = (value << 1+ 1;    delay(animationDelay);  }  for(int i = 0; i < 16; i++){    writeRegister(value);    value = value >> 1;    delay(animationDelay);  }}
scarica il file

Arduino Software Hero

Vuoi imparare a programmare Arduino, ma non sai da dove cominciare?

Iscriviti al corso online

Libri consigliati


Tutorial consigliati

E-commerce di elettronica

Sul nostro negozio online trovi tutti i componenti usati nei tutorial.
Inoltre hai un'ampia scelta di prodotti tra:

  • Arduino
  • Raspberry Pi
  • Sensori
  • Robotica
  • Componenti elettronici
  • Accessori

Compra online, ricevi comodamente a casa

Visita il negozio