No voy a hablar del uso de esta placa como driver de motores unipolares, sino como driver para alimentar un numero diverso de receptores de codigo de cuatro hilos aplicables a cualquier placa arduíno con una sencilla adaptación de la placa. Al mismo tiempo que nos sirve de adaptador de niveles lógicos entre 5 y 12 V.
Tenemos que saber que este integrado consta de un array de siete par darlington como se muestra en el esquema, y necesita entradas de alto nivel para cambiar el estado a bajo nivel en su salida.Su uso ideado para alimentar las bobinas de motores paso a paso o simplemente un motor DC, hace que un extremo del bobinado se conecte directamente al polo positivo de la fuente o bateria y cierra el circuito a traves del elemento del array, (emisor -colector) conectado a gnd.
De los siete elementos del array solo se utilizan cuatro entradas, luego si queremos utilizarlo como driver generador de codigos obtendremos ´”2 elevado a 4″ posibilidades segun la tabla lógica:
Los valores entre parentésis son las salidas invertidas y adaptadas.

Puesto que no vamos a conducir bobinas, podemos cortocircuitar lo leds y conectar ahí los hilos de salida para alimentar a los receptores. Tener en cuenta que disponemos cuatro resistores limitadores de corriente.


SE CORTOCIRCUITAN LOS LEDS PARA QUE LOS PINES ACCEDAN A LOS RESISTORES EL PIN NO CONECTADO CORRESPONDE A LA ENTRADA DE 5 A 12V
APLICACIÓN: Una placa Esp-32 generando doce registros de codigo de cuatro hilos que se conectarian al driver, generando salidas invertidas para otros receptores protegiendo a la placa y sirviendo simultaneamente como “level Shifter” con niveles de 5 a 12 V. Solo tener la precaución de escribir dos tabalas de verdad correspondientes a la salida de los GPIos y la correspondiente invertida que es la que vamos a utilizar.
BLYNK_WRITE(V18) {
switch (param.asInt())
{
case 1: // REG 1
tft.fillScreen(TFT_BLACK);//refreco de pantalla
tft.setCursor(10,100);
tft.print("REGISTRO 1");
digitalWrite(17,LOW);
digitalWrite(16,LOW);
digitalWrite(4,LOW);
digitalWrite(15,HIGH);
break;
case 2: // REG2
tft.fillScreen(TFT_BLACK);//refreco de pantalla
tft.setCursor(10,100);
tft.print("REGISTRO 2");
digitalWrite(17,LOW);
digitalWrite(16,LOW);
digitalWrite(4,HIGH);
digitalWrite(15,LOW);
break;
case 3: // REG3
tft.fillScreen(TFT_BLACK);//refreco de pantalla
tft.setCursor(10,100);
tft.print("REGISTRO 3");
digitalWrite(17,LOW);
digitalWrite(16,LOW);
digitalWrite(4,HIGH);
digitalWrite(15,HIGH);
break;
case 4: // REG4
tft.fillScreen(TFT_BLACK);//refreco de pantalla
tft.setCursor(10,100);
tft.print("REGISTRO 4");
digitalWrite(17,LOW);
digitalWrite(16,HIGH);
digitalWrite(4,LOW);
digitalWrite(15,LOW);
break;
case 5: // REG5
tft.fillScreen(TFT_BLACK);//refreco de pantalla
tft.setCursor(10,100);
tft.print("REGISTRO 5");
digitalWrite(17,LOW);
digitalWrite(16,HIGH);
digitalWrite(4,LOW);
digitalWrite(15,HIGH);
break;
case 6: // REG6
tft.fillScreen(TFT_BLACK);//refreco de pantalla
tft.setCursor(10,100);
tft.print("REGISTRO 6");
digitalWrite(17,LOW);
digitalWrite(16,HIGH);
digitalWrite(4,HIGH);
digitalWrite(15,LOW);
break;
case 7: // REG7
tft.fillScreen(TFT_BLACK);//refreco de pantalla
tft.setCursor(10,100);
tft.print("REGISTRO 7");
digitalWrite(17,LOW);
digitalWrite(16,HIGH);
digitalWrite(4,HIGH);
digitalWrite(15,HIGH);
break;
case 8: // REG8
tft.fillScreen(TFT_BLACK);//refreco de pantalla
tft.setCursor(10,100);
tft.print("REGISTRO 8");
digitalWrite(17,HIGH);
digitalWrite(16,LOW);
digitalWrite(4,LOW);
digitalWrite(15,LOW);
break;
case 9: // REG9
tft.fillScreen(TFT_BLACK);//refreco de pantalla
tft.setCursor(10,100);
tft.print("REGISTRO 9");
digitalWrite(17,HIGH);
digitalWrite(16,LOW);
digitalWrite(4,LOW);
digitalWrite(15,HIGH);
break;
case 10: // REG10
tft.fillScreen(TFT_BLACK);//refreco de pantalla
tft.setCursor( 10,100);
tft.print("REGISTRO 10");
digitalWrite(17,HIGH);
digitalWrite(16,LOW);
digitalWrite(4,HIGH);
digitalWrite(15,LOW);
break;
case 11: // REG11
tft.fillScreen(TFT_BLACK);//refreco de pantalla
tft.setCursor( 10,100);
tft.print("REGISTRO 11");
digitalWrite(17,HIGH);
digitalWrite(16,LOW);
digitalWrite(4,HIGH);
digitalWrite(15,HIGH);
break;
case 12: // REG12
tft.fillScreen(TFT_BLACK);//refreco de pantalla
tft.setCursor( 10,100);
tft.print("REGISTRO 12");
digitalWrite(17,HIGH);
digitalWrite(16,HIGH);
digitalWrite(4,LOW);
digitalWrite(15,LOW);
break;
}