barrieron-8led.ino

Arduino Mega 2560 (Rev3) · Fichier : barrieron-8led.ino · Langage : Arduino · Usage : Faire courir une barre de 8 LED avec un registre à décalage 74HC595

Le 74HC595 transforme 3 broches en 8 sorties : la barre de LED ne coûte que trois fils, et on peut chaîner plusieurs boîtiers pour 16, 24 sorties… Le motif se déplace comme le balayage du « knight rider ».

Matériel requis

Une Arduino Mega 2560 (ATmega2560, 16 MHz, 5 V) : 54 E/S numériques, 15 PWM, 16 entrées analogiques, 4 UART matériels. 1 74HC595, 8 LED + 8×330 Ω, condensateur 100 nF sur l'alimentation.

Branchement

SER (14)→broche 22, SRCLK (11)→23, RCLK (12)→24 ; QA-QH vers les LED (via résistances) ; OE et GND à GND, VCC à 5 V.

Fonctionnement

shiftOut empile 8 bits sur le registre par impulsions d'horloge, puis le front de LATCH les applique aux sorties en une fois. Dans l'Arduino IDE, choisissez « Arduino Mega 2560 » et le port, puis Téléverser. PWM sur 2-13 et 44-46 ; UART1=18/19, UART2=16/17, UART3=14/15 ; SPI sur 50-53.

Pour aller plus loin

Chaînez un second 595 (SER out → SER in du suivant) pour une barre de 16 LED avec les mêmes 3 broches.

barrieron-8led.ino

// Barre de 8 LED en "knight rider" via 74HC595 (3 broches seulement).
const int DATA = 22, LATCH = 23, CLOCK = 24;

uint8_t motif = 1;
int sens = 1;

void setup() {
  pinMode(DATA, OUTPUT); pinMode(LATCH, OUTPUT); pinMode(CLOCK, OUTPUT);
}

void loop() {
  digitalWrite(LATCH, LOW);
  shiftOut(DATA, CLOCK, MSBFIRST, ~motif); // LED actives a LOW
  digitalWrite(LATCH, HIGH);
  if (sens > 0) { if (motif & 0x80) sens = -1; else motif <<= 1; }
  else          { if (motif & 0x01) sens = 1;  else motif >>= 1; }
  delay(120);
}

← Retour à la fiche