Jun 15

Introducción.

La tarjeta Arduino incluye un puerto serial que puede accederse a través de los pines digitales 0 (RX) y 1 (TX) o desde el computador a través del puerto USB.  Esto se realiza a través del objeto Serial con el que es posible realizar las siguientes acciones.

Descripción general de las funciones de E/S.

Establecer tasa de transmisión de datos.

void Serial.begin(int velocidad);
  • Debe realizarse como paso previo a la emisión/recepción de información a través del puerto serial.
  • La tasa puede ser una de las estándar: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 y 115200, o cualquiera personalizada.
  • La velocidad utilizada para realizar la conexión con el computador es de 9600.

Verificar bytes pendientes por lectura.

int Serial.available();
  • Como su nombre lo indica, la transmisión de información a través del puerto serial se realiza de manera serial, es decir un byte a la vez.
  • Este método permite verificar si hay bytes pendientes de lectura retornando el número de bytes disponibles en el buffer del puerto serial.
  • El buffer del puerto serial puede retener hasta 128 bytes.
  • Retorna 0 si no hay bytes pendientes de lectura en el puerto.

Leer información.

int Serial.read();
  • Obtiene el siguiente byte disponible en el buffer del puerto serial.
  • Retorna -1 si no hay información disponible.

Limpiar el buffer de entrada.

void Serial.flush();
  • Limpia el buffer de entrada del puerto serial, descartando cualquier contenido que se encuentre allí.

Enviar información.

void Serial.print(datos);
void Serial.print(datos, tipo);
void Serial.println(datos);
void Serial.println(datos, tipo);
  • Envían la información (datos) en el formato especificado (tipo) a través del puerto serial.
  • El formato (tipo) puede ser uno de los siguientes.
    • DEC: representación en cadena de un número decimal (79).
    • HEX: representación en cadena de un número hexadecimal (4F).
    • OCT: representación en cadena de un número octal (117).
    • BIN: representación en cadena de un número binario (1001111).
    • BYTE: un único byte.
  • Si no se especifica un formato (tipo), se utiliza por defecto a DEC.
  • La diferencia entre print y println es que el segundo agrega un retorno de carro (ASCII 13 o '\r') y un salto de línea (ASCII 10 o '\n') al final de de la información enviada.

Enviar información binaria.

void Serial.write(datos);
void Serial.write(buffer, longitud);
  • Envía información binaria: un byte o una secuencia de bytes, al puerto serial.
  • Los datos a enviarse pueden ser un número o una cadena.
  • Si se desea enviar un arreglo (buffer) es necesario especificar su longitud.

Depurando la transmisión de datos.

Es posible revisar fácilmente con el IDE de Arduino lo que la tarjeta está transmitiendo al computador a través del puerto USB mediante el Monitor Serial.  Esto es muy útil también para la depuración rápida de los sketches.

Para activar el Monitor Serial se debe presionar el ícono serial_monitor y utilizar las funciones de envío de información mencionadas anteriormente, de esta manera aparecerá en la sección inferior del IDE una consola donde se podrán apreciar los mensajes enviados por la Arduino.

void Serial.print(datos, tipo);

Tagged with:



En June 15 de 2009, Jorge Iván Meza Martínez escribió acerca de Comunicación de la tarjeta Arduino con el computador.
Jun 15
Sketch 'The LED with fotoresistor'.

Sketch 'The LED with fotoresistor'.

Descripción.

Este sketch utiliza una fotoresistencia como sensor, es decir, la cantidad de luz recibida por el componente determina la cantidad de voltaje que es permitido pasar a través de él.  Como actuador se utiliza el mismo LED de siempre que nos mostrará de manera visual cuanto voltaje atravieza por el sistema.

A mayor cantidad de luz percibida el LED tendrá un mayor brillo.

Implementación.

Hardware.

En términos de la implementación del hardware suceden dos cosas interesantes.

  1. Como ya se había hecho en el sketch anterior, The LED with button and fade, para provocar el efecto de intensidad de luz del LED es necesario conectarlo a uno de los pines con soporte para modulación por ancho de pulsos (PWM), es decir, a los pines 9, 10 y 11, y enviarle la inforamción correspondiente con la instrucción analogWrite.
  2. La foto resistencia, a diferencia del botón que tiene sólo dos estados: presionado o no presionado, es capaz de producir un rango de valores según la cantidad de luz que recibe en un momento específico del tiempo.  Para leer su información es necesario utilizar las entradas (pines) análogos ubicados en la parte inferior derecha de la tarjeta Arduino y leer su información con la instrucción analogRead.

Software.

En términos de software el sketch es muy sencillo, sólo debe realizar los siguientes pasos.

  1. Leer estado del sensor.
  2. Modificar la intensidad del LED de acuerdo a lo leído del sensor.
  3. Esperar un momento para reinciar la iteración.

Es muy importante tener en cuenta que la instrucción analogRead retornará un número entre 0 y 1023 mientras que la instrucción analogWrite espera un valor numérico como parámetro entre 0 y 255, por esto será necesario dividir entre 4 el valor de la lectura hacia la escritura si se va a utilizar directamente.

#define SENSOR 0                    // Analog pin for the fotoresistor
#define LED    9                    // Digital pin (PWM) for the LED

void setup()
{
  pinMode(LED, OUTPUT);            // LED pin is output

  // Analog pins are always INPUT.
}

void loop()
{
  int fr = analogRead(SENSOR);      // Read the status of the fotoresistor

  analogWrite(LED, fr/4);           // Change the brightness of the LED
                                    // acording the fotoresistor's value
  delay(10);                        // Wait a moment fot next iteration
}
Tagged with:



En June 15 de 2009, Jorge Iván Meza Martínez escribió acerca de El cuarto sketch: The LED with fotoresistor.