domingo, 26 de agosto de 2012

Proyectos de electrónica con Arduino

Programas con Arduino UNO y Ethernet Shield.

Categoría: 1. Programación y electrónica.

En esta entrada se colocaron tres versiones de un ejercicio que emplea tres LEDs enviándoles pulsos de duración pre-establecida. El código del cuarto programa muestra la lectura de un archivo contenido en la tarjeta micro SD de la Ethernet Shield. Por último, el programa cinco borra el archivo contenido en la tarjeta micro SD de la Ethernet Shield.

Los primeros tres programas hacen parpadear tres LEDs colocados en una placa de prototipos (protoboard) con una resistencia de 470 Ohms en el polo positivo del LED conectadas a las salidas digitales 2, 3 y 4 de la Arduino UNO / Ethernet Shield. El polo negativo va conectado a tierra. En el tercer programa se muestra el empleo de una función con atributos para ahorrar en el tamaño del código (C/C++).
Los códigos de los primeros tres programas (con LEDs) son como sigue:

/*
Programa3leds03
Se utiliza la instrucción #define en la declaración de la salida
digital (asignación) en lugar de utilizar int ledPin=13;,
con lo que se ahorra en espacio de memoria
El programa hace parpadear tres LED sucesivamente
con pulsos de 250 milisegundos (con delay de 250 milisegundos)
Tamaño del sketch=1308 bytes de 32256 bytes disponibles
El formato de estos problemas tiene la ventaja de que la
inicializacion de las variables esta definida claramente y no se
modifica, por eso se facilita cambiar el pin que se utiliza
como salida y el cambio del tiempo de duracion del pulso
y la pausa
En este programa se utilizó una funcion para abreviar el codigo
dentro del void loop ()
 */

# define ledPin1 2
# define ledPin2 3
# define ledPin3 4
int delayPeriod = 250;

void setup ()  {
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);  }

void loop ()  {
  digitalWrite(ledPin1, HIGH);
  delay(delayPeriod);
  digitalWrite(ledPin1, LOW);
  digitalWrite(ledPin2, HIGH);
  delay(delayPeriod);
  digitalWrite(ledPin2, LOW);
  digitalWrite(ledPin3, HIGH);
  delay(delayPeriod);
  digitalWrite(ledPin3, LOW);  }

El código para el segundo programa es como sigue: 

  # define ledPin1 2
  # define ledPin2 3
  # define ledPin3 4
  int delayPeriod = 250;

  void setup ()  {
    pinMode(ledPin1, OUTPUT);
    pinMode(ledPin2, OUTPUT);
    pinMode(ledPin3, OUTPUT);  }

  void loop ()  {
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin2, HIGH);
    digitalWrite(ledPin3, HIGH);
    delay(delayPeriod);
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, LOW);
    delay(delayPeriod);
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, LOW);
    delay(delayPeriod);
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, HIGH);
    digitalWrite(ledPin3, LOW);
    delay(delayPeriod);
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, HIGH);
    delay(delayPeriod);   
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, LOW);
    delay(delayPeriod);  }

A continuación, el código para el tercer programa:

# define ledPin1 2
# define ledPin2 3
# define ledPin3 4

void setup ()  {
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);  }

void loop ()  {
  flash3Led(250, 300);
  flash3Led(100, 300);
  flash3Led(50, 300);
  flash3Led(25, 300);
  flash3Led(15, 300);
  flash3Led(10, 300);
  flash3Led(5, 300);
  digitalWrite(ledPin1, LOW);
  digitalWrite(ledPin2, LOW);
  digitalWrite(ledPin3, LOW);
  delay(2000);  } 

void flash3Led (int delayPeriod, int delayFinal)  {
    digitalWrite(ledPin1, HIGH);
    delay(delayPeriod);
    digitalWrite(ledPin2, HIGH);
    delay(delayPeriod);
    digitalWrite(ledPin3, HIGH);
    delay(delayPeriod);
    digitalWrite(ledPin1, LOW);
    delay(delayPeriod);
    digitalWrite(ledPin2, LOW);
    delay(delayPeriod);
    digitalWrite(ledPin3, LOW);
    delay(delayPeriod);
    delay(3000);  }

El cuarto programa despliega el contenido del archivo pulsedat.txt en el monitor serial. El archivo pulsedat.txt se genera con el programa ‘generador de pulsos’, que les compartiré más adelante.
El código es el siguiente:

/*
LeerArchivo01
El programa lee un archivo de texto de la SD card y lo
despliega en el monitor serial
*/

#include <SD.h>
const int chipSelect = 4;
void setup()  {
  Serial.begin(9600);
  Serial.print("Initializing SD card...");
  if (!SD.begin(chipSelect))  {
    Serial.println("initialization failed!...");
    return;  }
  Serial.println("initialization done!...");
   File dataFile = SD.open("pulsedat.txt", FILE_READ);
  if (dataFile)  {
    Serial.println("pulsedat.txt");
    while (dataFile.available())  {
      Serial.write(dataFile.read());  }
    dataFile.close();  }
  else  {
    Serial.println("error opening pulsedat.txt...");  }  }

void loop ()  {  }

Por último, el programa cinco de esta entrada borra el archivo pulsedat.txt, contenido en la tarjeta micro SD del Ethernet Shield. Si deseas conservar los datos, debes copiar el archivo a otra ubicación antes de borrarlo.
El código es el siguiente:

/*
BorrarArchivo01
El programa lee un archivo de texto de la SD card y lo
despliega en el monitor serial
*/

#include <SD.h>
const int chipSelect = 4;

void setup()  {
  Serial.begin(9600);
  Serial.print("Initializing SD card...");
  if (!SD.begin(chipSelect))  {
    Serial.println("initialization failed!...");
    return;  }
  Serial.println("initialization done!...");
   if (SD.exists("pulsedat.txt"))  {
    Serial.println("pulsedat.txt exists...");  }
  else  {
    Serial.println("pulsedat.txt doesn't exist...");  }
     Serial.println("removing pulsedat.txt...");
     SD.remove("pulsedat.txt");
   if (SD.exists("pulsedat.txt"))  {
    Serial.println("pulsedat.txt exists...");  }
  else  {
    Serial.println("pulsedat.txt doesn't exist..");  }  }

void loop ()  {  }

Los últimos dos ejercicios no requieren de hardware adicional a las tarjetas electrónicas Arduino. Por el momento es todo. Saludos.

Bibliografía.
Arduino. Sitio web: http://www.arduino.cc/. Consulta el 31 de julio de 2012.







sábado, 25 de agosto de 2012

Clichés, Estereotipos

Clichés, estereotipos.

Categoría: 3. Humanidades y comportamiento humano.

Los clichés son acciones, frases, comentarios, lugares, construcciones, bienes, alimentos y todo tipo de cosas que nos fuerzan a confrontar nuestras ideas con la realidad. Estas ideas pueden pertenecer al presente, al pasado o al futuro.


Si soy un individuo que decide hacer ejercicio los fines de semana para mantener una condición física mínima aceptable, es posible, además de lógico, que me encuentre en la pista de carreras junto con corredores experimentados, frente a los cuales me puedo sentir apabullado, sentirme como una caricatura respecto a la capacidad física de estos poderosos deportistas. Esto me puede llevar a replantearme la idea de hacer el ejercicio que estoy proponiéndome, es decir, a que confronte mi idea de hacer ejercicio para mantener la forma física y la salud. Este es un ejemplo de cliché sobre una acción presente.


Cuando decido comprar un automóvil para ir al trabajo y para utilizarlo como medio de transporte durante mis vacaciones, es posible escuchar comentarios de mis amigos y compañeros de trabajo respecto a los altos costos de mantenimiento y del combustible que consume un automóvil. Esto me puede llevar a cuestionarme sobre la conveniencia de tal adquisición, tomando en cuenta mi poder adquisitivo. Este es un ejemplo de un cliché sobre una acción futura.


Si hice un viaje en avión, es posible que a mi regreso, o un tiempo después me vea contando la historia de mi viaje y mientras tanto uno de mis interlocutores me platica que un amigo cercano o un familiar querido hizo un viaje en avión que tuvo un accidente en el que todos sus ocupantes murieron. Esto me puede llevar a pensar en la pena de quienes perdieron a un amigo o familiar en un accidente aéreo, mientras que yo pude vivir para contarlo. Desde luego, viajar en avión no es una actividad de alto riesgo, de manera que ¿Por qué debería sentir pena por haber viajado en avión? Este es un ejemplo de cliché sobre una acción pasada.


Los clichés son más o menos intensos según la sensibilidad de la persona y según la magnitud de la idea por confrontar. En algunas culturas o grupos sociales existen ejercicios que ayudan a sus integrantes a confrontar ideas de magnitud creciente, con la finalidad de fortalecer la sensibilidad de sus integrantes. Reunirse en torno a un sobreviviente de un accidente aéreo o a un sobreviviente de una guerra y escuchar sus experiencias durante estos acontecimientos ayuda a que se fortalezca el espíritu.


El texto de Óscar Domínguez Núñez y Elena María Barcellós Morante (http://civele.org/biblioteca/index.php?option=com_content&view=article&id=28:dominguez-o---la-cronica-periodistica-en-el-aula-de-ele-&catid=18:06aula&directory=2) menciona lo siguiente respecto a clichés y estereotipos:


“Los medios de comunicación y el estereotipo mantienen una estrecha relación desde su desarrollo en el siglo XIX. En esa época se fraguan los conceptos de “cliché” y de “estereotipo”, procedentes, respectivamente, del mundo de la fotografía y de la impresión industrializada. Ambas nociones comparten la función de proporcionar un molde fijo para reproducir una imagen o una página cuantas veces sea necesario.”


“El concepto de estereotipo se aplica a esquemas de pensamiento arraigados y preformalizados que son compartidos por miembros de una misma comunidad social. Entre las funciones que cumplen los estereotipos se destaca el papel que juega como fórmula extraordinariamente efectiva –y también afectiva- de reconocimiento y familiaridad sociocultural. En efecto, los estereotipos proporcionan un marco de seguridad ontológica para los miembros de la comunidad, reforzando la idiosincrasia particular de su identidad al tiempo que resaltan los rasgos de su singularidad entre el magmático flujo informativo de imágenes e informaciones a los que constantemente se hallan expuestos.”
De esta manera, los clichés son herramientas de una sociedad para reproducir su identidad en las generaciones de jóvenes.


Un concepto relacionado es la intelectualización. En Wikipedia se define de la siguiente manera:


“La intelectualización es un mecanismo de defensa, donde el razonamiento se utiliza para bloquear la confrontación con un conflicto inconsciente y su estrés emocional asociado, mediante el «uso excesivo de ideación abstracta para eludir sentimientos difíciles». Implica apartarse a uno mismo, emocionalmente, de un suceso estresante. La intelectualización puede estar acompañada, pero difiere de la racionalización, que es la justificación de la conducta irracional a través de clichés, historias y explicaciones oportunas. En lugar de confrontar los acontecimientos dolorosos, la intelectualización pretende analizarlos de forma indiferente y distante.”


“La intelectualización es uno de los mecanismos de defensa originales de Freud. Él creía que los recuerdos tienen aspectos tanto conscientes como inconscientes, y que la intelectualización permite el análisis consciente de un evento de una manera que no provoque ansiedad.”


“Anna Freud dedicó un capítulo de su libro El Yo y los Mecanismos de Defensa (1937) a la «Intelectualización en la Pubertad», al ver la forma como el «aumento intelectual, científico, y los intereses filosóficos de la época representan los intentos de dominar los impulsos y las emociones implicadas» como algo relativamente normal. A su juicio, sólo «si el proceso de intelectualización sobrepasa todo el campo de la vida mental» podría ser «entonces patológico».”


“Vaillant dividó los mecanismos de defensa en una jerarquía de «defensas inmaduras, defensas neuróticas y defensas maduras... siendo las inmaduras menos saludables que las neuróticas». Él coloca el proceso de intelectualización «que podríamos imaginar como un acto violento, sin los sentimientos violentos que normalmente le acompañan» entre las defensas "neuróticas" «...que suelen ser utilizados por personas de gama media».”


‘Los amigos del cine’ en su Blog (http://losamigosdelcine.blogspot.mx/ 2010/10/de-cliches-y-lugares-comunes-esta-lleno.html) hablan de los clichés como soluciones basadas en algo así como recetas de cocina, de las que no se apartan los directores que tratan el mismo género fílmico. En este Blog se habla de clichés como lugares comunes.


Erich Fromm en ‘El arte de amar’, también menciona que el lenguaje basado en clichés puede llegar a ser molesto y hasta hostil. Esto en referencia al concepto planteado inicialmente, en el que se considera que un cliché es una situación que confronta nuestra forma de pensar o de actuar.
En la realización de este ejercicio comencé por plantearme el concepto de cliché. Al ahondar en su significado llegué a un sinónimo que es el estereotipo. Sin embargo, el ejercicio alcanzó una meta más avanzada que lo planteado inicialmente al llegar al concepto de intelectualización, como un mecanismo de la mente que para eludir la confrontación de las ideas, planeada por los clichés, recurre al análisis de los acontecimientos dolorosos de forma indiferente y distante.

Por ahora es todo. Saludos.




Dado Electrónico

Dado electrónico con Arduino UNO.

Categoría: 1. Programación y electrónica.

En este ejercicio se construye un circuito electrónico con un display de siete segmentos con ánodo común. Las terminales (a, b, c, d, e, f y g) se conectaron a las I/O (2, 3, 4, 5, 6, 7 y 8) respectivamente. En la I/O número 9 se conectó un botón pulsador conectando un extremo al polo positivo (+5V), el otro extremo a una resistencia de 10K conectada a la terminal GND (tierra) de la tarjeta Arduino UNO. Los valores del uno al seis se despliegan simultáneamente en el display LED y en el monitor serial del ambiente Arduino. El monitor serial muestra además el estado de la entrada digital, el botón pulsador. Los números del uno al seis se despliegan 50 veces rápidamente (50 ms HIGH y 15 ms LOW). Durante esta etapa se aprieta el botón pulsador y el número seleccionado queda guardado en la variable optn. Al terminar el despliegue de la serie de números, el display LED muestra el número seleccionado (destellando 15 veces, 250 ms HIGH y 15 ms LOW) cuando se apretó el botón pulsador.

 
Figura 1. Display de LED, botón pulsador y placa Arduino UNO.

En el desarrollo del proyecto se comenzó con una primera versión del programa completo, aunque este no funcionaba correctamente pero sí era compilado. Después se construyó el circuito electrónico y se reinició la escritura del código. Primero haciendo encender y apagar cada uno de los segmentos del display y corrigiendo cualquier error en el hardware. Una vez que el hardware funcionó, se codificaron las funciones para generar los números (uno al seis). A continuación se estableció la comunicación con el monitor serial y la entrada digital a través del botón pulsador. Por último se desarrollaron dos fracciones de código, uno con la instrucción for, para seleccionar el valor a través del botón pulsador asociado a la asignación del valor para la variable optn y otra con la instrucción switch/case, para desplegar el valor seleccionado por la pulsación del botón.
Aunque el código que se presenta adelante es bastante extenso, es posible quitar partes que no intervienen directamente con el funcionamiento del dado. Las funciones para desplegar los números se repiten, cambiando únicamente los valores de la instrucción delay();. Como ejercicio, se puede quitar un juego de estos números colocando como argumentos de las funciones, las duraciones para la instrucción mencionada.

El código desarrollado para el proyecto es el siguiente:

/*
Un display LED de 7 segmentos despliega rápidamente números
del uno al seis. Se detiene cuando se presiona un botón
pulsador, mostrando el valor en forma estática.
Al pulsar nuevamente el botón pulsador vuelve a comenzar el
despliegue de números del uno al seis
Se utiliza la instrucción switch / case
*/

int a=2;
int b=3;
int c=4;
int d=5;
int e=6;
int f=7;
int g=8;
int pulsador=9;

void setup ()  {
  Serial.begin(9600);
  pinMode(a, OUTPUT);
  pinMode(b, OUTPUT);
  pinMode(c, OUTPUT);
  pinMode(d, OUTPUT);
  pinMode(e, OUTPUT);
  pinMode(f, OUTPUT);
  pinMode(g, OUTPUT);
  pinMode(pulsador, INPUT);  }


void loop ()  {
  digitalWrite(a, HIGH);
  delay(250);
  digitalWrite(a, LOW);
  delay(75);

  digitalWrite(b, HIGH);
  delay(250);
  digitalWrite(b, LOW);
  delay(75);

  digitalWrite(c, HIGH);
  delay(250);
  digitalWrite(c, LOW);
  delay(75);

  digitalWrite(d, HIGH);
  delay(250);
  digitalWrite(d, LOW);
  delay(75);

  digitalWrite(e, HIGH);
  delay(250);
  digitalWrite(e, LOW);
  delay(75);

  digitalWrite(f, HIGH);
  delay(250);
  digitalWrite(f, LOW);
  delay(75);

  digitalWrite(g, HIGH);
  delay(250);
  digitalWrite(g, LOW);
  delay(75);

  digitalWrite(a, HIGH);
  delay(200);
  digitalWrite(b, HIGH);
  delay(200);
  digitalWrite(c, HIGH);
  delay(200);
  digitalWrite(d, HIGH);
  delay(200);
  digitalWrite(e, HIGH);
  delay(200);
  digitalWrite(f, HIGH);
  delay(200);
  digitalWrite(g, HIGH);
  delay(200);

  digitalWrite(a, LOW);
  digitalWrite(b, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);

  int optn =0;

for (int i=0; i<50; i++)  {
  Uno();
  int valUno= digitalRead(pulsador);
  Serial.print(" 1 ");
  Serial.println(valUno);
  if (valUno == 1)  {
    optn =1;  }

  Dos();
  int valDos= digitalRead(pulsador);
  Serial.print(" 2 ");
  Serial.println(valDos);
  if (valDos == 1)  {
    optn =2;  }

  Tres();
  int valTres= digitalRead(pulsador);
  Serial.print(" 3 ");
  Serial.println(valTres);
  if (valTres == 1)  {
    optn =3;  }

  Cuatro();
  int valCuatro= digitalRead(pulsador);
  Serial.print(" 4 ");
  Serial.println(valCuatro);
  if (valCuatro == 1)  {
    optn =4;  }

  Cinco();
  int valCinco= digitalRead(pulsador);
  Serial.print(" 5 ");
  Serial.println(valCinco);
  if (valCinco == 1)  {
    optn =5;  }

  Seis();
  int valSeis= digitalRead(pulsador);
  Serial.print(" 6 ");
  Serial.println(valSeis);
  if (valSeis == 1)  {
    optn =6;  }  }

Serial.print("el valor de optn es: ");
Serial.println(optn);

switch (optn)  {
  case 1:  {
    UnoDisplay();
    break;  }
  case 2:  {
    DosDisplay();
    break;  }
  case 3:  {
    TresDisplay();
    break;  }
  case 4:  {
    CuatroDisplay();
    break;  }
  case 5:  {
    CincoDisplay();
    break;  }
  case 6:  {
    SeisDisplay();
    break;  }
  default:
    break;  }  }

void Uno ()  {
  digitalWrite(f, HIGH);
  digitalWrite(e, HIGH);
  delay(50);
  digitalWrite(f, LOW);
  digitalWrite(e, LOW);
  delay(15);  }

void Dos ()  {
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(g, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(d, HIGH);
  delay(50);
  digitalWrite(a, LOW);
  digitalWrite(b, LOW);
  digitalWrite(g, LOW);
  digitalWrite(e, LOW);
  digitalWrite(d, LOW);
  delay(15);  }

void Tres ()  {
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(g, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  delay(50);
  digitalWrite(a, LOW);
  digitalWrite(b, LOW);
  digitalWrite(g, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, LOW);
  delay(15);  }

void Cuatro ()  {
  digitalWrite(f, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(g, HIGH);
  digitalWrite(c, HIGH);
  delay(50);
  digitalWrite(f, LOW);
  digitalWrite(b, LOW);
  digitalWrite(g, LOW);
  digitalWrite(c, LOW);
  delay(15);  }

void Cinco ()  {
  digitalWrite(a, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  delay(50);
  digitalWrite(a, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, LOW);
  delay(15);  }

void Seis ()  {
  digitalWrite(a, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(c, HIGH);
  delay(50);
  digitalWrite(a, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
  digitalWrite(e, LOW);
  digitalWrite(d, LOW);
  digitalWrite(c, LOW);
  delay(15);  }

void UnoDisplay ()  {
  for (int i=0; i<15; i++)  {
  digitalWrite(f, HIGH);
  digitalWrite(e, HIGH);
  delay(250);
  digitalWrite(f, LOW);
  digitalWrite(e, LOW);
  delay(15);  }  }

void DosDisplay ()  {
  for (int i=0; i<15; i++)  {
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(g, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(d, HIGH);
  delay(250);
  digitalWrite(a, LOW);
  digitalWrite(b, LOW);
  digitalWrite(g, LOW);
  digitalWrite(e, LOW);
  digitalWrite(d, LOW);
  delay(15);  }  }

void TresDisplay ()  {
  for (int i=0; i<15; i++)  {
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(g, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  delay(250);
  digitalWrite(a, LOW);
  digitalWrite(b, LOW);
  digitalWrite(g, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, LOW);
  delay(15);  }  }

void CuatroDisplay ()  {
  for (int i=0; i<15; i++)  {
  digitalWrite(f, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(g, HIGH);
  digitalWrite(c, HIGH);
  delay(250);
  digitalWrite(f, LOW);
  digitalWrite(b, LOW);
  digitalWrite(g, LOW);
  digitalWrite(c, LOW);
  delay(15);  }  }

void CincoDisplay ()  {
  for (int i=0; i<15; i++)  {
  digitalWrite(a, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  delay(250);
  digitalWrite(a, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, LOW);
  delay(15);  }  }

void SeisDisplay ()  {
  for (int i=0; i<15; i++)  {
  digitalWrite(a, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(c, HIGH);
  delay(250);
  digitalWrite(a, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
  digitalWrite(e, LOW);
  digitalWrite(d, LOW);
  digitalWrite(c, LOW);
  delay(15);  }  }


Como se comentó al inicio, el desarrollo del proyecto se hizo mediante avances parciales hasta completar las funciones que se habían contemplado en el programa inicial. Con la diferencia de que el formato final funcionó correctamente.
El proyecto y el código correspondiente fueron desarrollados por Miguel Angel Orduña Bustamante en el año 2012. Saludos.