Cintillo Institucional
Diferencias entre las revisiones 17 y 18
Versión 17 con fecha 2009-10-01 15:20:55
Tamaño: 5996
Comentario:
Versión 18 con fecha 2011-05-19 12:52:08
Tamaño: 3734
Comentario:
Los textos eliminados se marcan así. Los textos añadidos se marcan así.
Línea 52: Línea 52:
Manero Puerto serie, Osciloscopio.
Línea 54: Línea 53:
Programa Processing para Osciloscopio

{{{
/*
 * Oscilloscope
 * Gives a visual rendering of analog pin 0 in realtime.
 *
 * This project is part of Accrochages
 * See http://accrochages.drone.ws
 *
 * (c) 2008 Sofian Audry (info@sofianaudry.com)
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */
import processing.serial.*;

Serial port; // Create object from Serial class
int val; // Data received from the serial port
int[] values;

void setup()
{
  size(640, 480);
  // Open the port that the board is connected to and use the same speed (9600 bps)
  port = new Serial(this, Serial.list()[0], 9600);
  values = new int[width];
  smooth();
}

int getY(int val) {
  return (int)(val / 1023.0f * height) - 1;
}

void draw()
{
  while (port.available() >= 3) {
    if (port.read() == 0xff) {
      val = (port.read() << 8) | (port.read());
    }
  }
  for (int i=0; i<width-1; i++)
    values[i] = values[i+1];
  values[width-1] = val;
  background(350);
  stroke(255);
  for (int x=1; x<width; x++) {
    line(width-x, height-1-getY(values[x-1]),
    width-1-x, height-1-getY(values[x]));
  }
}

}}}
Manero Puerto serie, Osciloscopio.

Programa Arduino Oscilospio

{{{

// The Arduino code.

#define ANALOG_IN 0
int ledPin = 13; // LED connected to digital pin 13

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT); // sets the digital pin as output
}

void loop() {
  int val = analogRead(ANALOG_IN);

  Serial.print( 0xff, BYTE);
  Serial.print( (val >> 8) & 0xff, BYTE);
  Serial.print( val & 0xff, BYTE);
  
}

}}}
Prueba de puerto serie ...

wiki comunidad

Proyecto Hardware Libre Cenditel

Página Cenditel

wiki Cenditel

Plataforma de Desarrollo Colaborativo

Curso Sensibilización Hardware Libre (Unidad 002)

logohl.png logohl.png logohl.png

002/03 Actividad 003

Con esta actividad se busca comenzar con el manejo del puerto serie, su iniciación y sus comandos.

La mayoría de los microcontroladores están diseñados para trabajar de manera autónoma, es decir sin necesidad de tener comunicación de manera continúa con el computador. El hardware arduino utiliza el puerto serie para la transmisión tanto del código en el momento de la programación, como envío de datos para comunicación con periféricos.

El puerto Serie

Para la comunicación serial se utilizan dos lineas, una para el envío y otra para la recepción, llamadas comunmente como (tX y rX), lo que permite tener una comunicación "full duplex", es decir enviar y recibir de manera simultánea.

serie2.png
figura 23.1. Diagrama de una comunicación serie

De la figura 23.1, se pueden observar los principales características de una transmisión por el puerto serie, aprovechamos para realizar una descripción de los principales términos utilizados en la transmisión:

  • Velocidad: es la tasa de velocidad entre el computador y el microcontrolador, típicamente se utiliza una velocidad de 9600 bits por segundo.
  • Bit de Inicio: identifica el inicio de la transmisión.
  • Palabra: el dato que se quiere transmitir.
  • Bit de Parada: Identifica el fin de la transmisión
  • Bit de paridad: es un simple protocolo de detección de errores, se puede configurar paridad par o impar.

Comandos

Arduino para el manejo de puerto serie tiene cinco comandos:

  • Serial.begin();
    • Configura la velocidad de transmisión en baudios (baud rate ejemplo: 9600). esta debe ir dentro de la estructura del void setup().
  • Serial.available();
    • Se una para la recepción de datos desde el puerto serial, se coloca en verdadero cuando hay datos en el puerto serie. Generalmente se usa en una estructura de decisión.
  • Serial.read;
    • Permite la lectura de datos, el valor leído debe guardarse en una variable.
  • Serial.print(data,format);
    • Se utiliza para enviar datos o comentarios (string). Los datos pueden ser enviados en distintos formatos: DEC, HEX, OCT, BIN, BYTE.
  • Serial.println(data,format);
    • De manera similar al anterior, escribe en el puerto serial pero agregando una nueva linea.

Seguridad

La tarjeta Arduino Diecimila no contiene protección contra sobre corriente por el puerto serie. Existe una versión llamada Arduino Duemilanove [1]. Al existir una corriente superior a 500mA el sistema se activa protegiendo el puerto de la PC.

003/01 Actividad 003

Prueba de puerto serie ...

Enlaces

hlpd/curso_arduino/uni00203 (última edición 2011-07-15 17:34:37 efectuada por _desactivada_csoto)