|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  Raspberry Pi Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  AutoIt (Programación) Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


.

Arduino en español
Circuitos con Arduino - Juan Antonio Villalpando

-- Tutorial de iniciación a Arduino --

Volver al índice del tutorial

____________________________

 

19.- Triestado. Alta impedancia.

Sabemos que las salidas digitales pueden estar en LOW (0V) y en HIGH) (5V). Arduino permite un tercer estado llamado de alta impedancia.

El terminal puede estar con tensión alta, bajo o no estar conectado.

Hay un método llamado Charileplexing de Charlie Allen (1995), que aprovecha este estado para manejar mayor número de LED en las salidas.

Mediante la fórmula "n2-n" podemos calcular el número de LED que puede manejar n salidas. Si n es 3, podremos controlar 6 LED.

Para realizar el circuito necesitaremos 6 LED y 3 resistencias de 100 óhmios, el valor de la resistencia es importante, hay que ajustarla un poco.

Podemos ver un circuito y su código en esta web:

http://www.electroschematics.com/10875/arduino-charlieplexing/

Charileplexing de Charlie Allen

/*
- Arduino & Chralieplexing
- Driving 6 LEDs using only 3 I/O Pins
- Tri-State Logic Implementation
- Demo Code From Internet
- Prepared by T.K.Hareendran
- Tested at TechNode Protolabz
- Source: https://www.electroschematics.com
*/
#define LED_1 5
#define LED_2 6
#define LED_3 7

void setup()
{
   pinMode(LED_1, INPUT);
   pinMode(LED_2, INPUT);
   pinMode(LED_3, INPUT);
}

void loop()
{
   set_pins(LED_1, LED_2);
   delay(100);
   set_pins(LED_2, LED_1);
   delay(100);
   set_pins(LED_3, LED_1); 
   delay(100);
   set_pins(LED_1, LED_3);
   delay(100);
   set_pins(LED_2, LED_3);
   delay(100);
   set_pins(LED_3, LED_2);
   delay(100); 
}

void set_pins(int high_pin, int low_pin)
{
   reset_pins();
   pinMode(high_pin, OUTPUT);
   pinMode(low_pin, OUTPUT);
   digitalWrite(high_pin, HIGH);
   digitalWrite(low_pin,LOW);
}

void reset_pins()
{
   pinMode(LED_1, INPUT); 
   pinMode(LED_2, INPUT);
   pinMode(LED_3, INPUT);
   digitalWrite(LED_1, LOW);
   digitalWrite(LED_2, LOW);
   digitalWrite(LED_3, LOW);
}

 

_____________________________

_____________________________

- En esta entrada del foro podemos leer cómo se pone un terminal en alta impedancia.

http://forum.arduino.cc/index.php?topic=12212.0

digitalWrite(pinNumber, LOW );
pinMode( pinNumber, OUTPUT );  // now we're sourcing current, i.e. GND
pinMode( pinNumber, INPUT ); // now we're tri-stated
pinMode( pinNumber, OUTPUT );  // and back again

________________________________

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información