Control e robótica

tecnoloxia.org

Oito LEDs

Descrición:

leds7

[WikiFisica2013, CC BySA]

Nesta práctica imos controlar 8 LEDs facendo distintas secuencias con eles. Realmente iso é o mesmo que o que fixemos nos xogos de luces, pero ímolo usar como escusa para traballar cun rexistro de desprazamento.

Se non tes problemas de pins dispoñibles na túa placa non necesitarás isto, pero se queres engadir moitos LEDs ao teu proxecto consumirás enseguida os pins dixitais do Arduíno e non quedarán para poder conectar outras cousas. Utilizar un rexistro de desprazamento vainos permitir aforrar pins de Arduíno.

Se non tes problemas de pins non te compliques, pasa desta sección e traballa como fixeches ata agora.

Rexistro de desprazamento:

shiftregister

[tecnoloxia.org CC By-SA]

Un rexistro de desprazamento é un circuíto secuencial que cumpre as seguintes funcións:

  • É capaz de almacenar un conxunto de n bits.
  • Permite realizar a conversión de datos de serie a paralelo e viceversa.

Nós imos utilizar o 74HC595 (Shift Register de 8 bits serial-in, parallel-out) para cargar datos en serie e que o rexistro os vaia cargando nas saídas en paralelo. Con isto aforramos pins do Arduíno pois con só tres pins podemos controlar 8 saídas dixitais.

Montaxe:

shiftregister_conexion

[tecnoloxia.org CC By-SA]

A forma de conectalo é a que se mostra na figura.

Hai tres pins importantes que conectaremos á placa Arduíno, no noso caso conectámolos aos pins 8, 11 e 12:

  • DATA IN ou DS: pin para enviar los bits en serie
  • Clock ou SH_CP: indica cando hai que ler o bit.
  • LATCH ou ST_CP: Cando os 8 bits de entrada se leron no rexistro, o LATCH escribe estes bits nos pins de saída do chip e mantenos ata que se reciban novos datos.

Os LEDs coas súas resistencias de protección irán nos pins 15, 1, 2, 3, … 7 (os marcados na figura como a, b, c,  etc.). Utilizamos 8 LEDs

Programa:

Para enviar os datos ao rexistro imos utilizar a función

shiftOut(dataPin, clockPin, LSBFIRST, n);

  • n é o número que imos enviar. Se n=1 envía 00000001, se n=7 envía 00000111, se n=255 envía 11111111 etc. É dicir, hai que indicar o equivalente ao binario que se quere mostrar.
  • LSBFIRST indica que enviamos o número binario empezando polo menos significativo. Se n=7 (00000111) mostra 00000111
  • MSBFIRST indica que enviamos o número binario empezando polo máis significativo. Se n=7 (00000111) mostra 11100000

Tamén usaremos os operadores de desprazamento lóxico:

  • a<<n Despraza o número “a” n bits cara á esquerda. Por exemplo, 1<<2 despraza o número 00000001 dous lugares cara á esquerda, quedando 00000100
  • a>>n Despraza o número “a” n bits cara á dereita. Por exemplo, 128>>1 despraza o número 10000000 un lugar cara á dereita, quedando 01000000

Neste programa podes ver varios modos de funcionamento:

Propostas:

  • Fai os teus xogos de luces co rexistro de desprazamento.

Recurso:

Se necesitas axuda para converter de binario a decimal e viceversa pode resultarche útil esta aplicación feita con Scratch:

[Scratch: Convertedor de sistemas de numeración]

 

Tweet about this on TwitterShare on FacebookShare on Google+Email this to someone


     

Deixa unha resposta

Required fields are marked *.