sábado, 29 de marzo de 2014

Arduino desde cero: arrays, comunicaciones serie y pwm

Fuente: editronikx.com



Arrays
Un array es un conjunto de variables que se almacenan en posiciones sucesivas, determinadas por índices numéricos. El primer índice de un array es 0, por lo que un array con 5 elementos, tendrá como posiciones inicial y final 0 y 4, respectivamente.

Ejemplo de definición de un array:

int leds[] = {9, 10, 11, 12, 13}

No podemos declarar un array sin indicar su tamaño.

Para arrays de más de una dimensión:

int matriz[2][3] = {{1,2},{1,2,3}}

Puerto Serie
Un puerto serie envía la información mediante una secuencia de bits. Para ello se necesitan al menos dos conectores para realizar la comunicación de datos, RX (recepción) y TX (transmisión).

Para inicializar el puerto serie se utiliza la siguiente instrucción:

Serial.begin(velocidad) donde velocidad se expresa en bps y es un valor entre 300 y 115.200 (normalmente 9600)

Para enviar un mensaje desde Arduino debemos usar las funciones Serial.print() y Serial.println()

Nota: El monitor de puerto serie es una pequeña utilidad integrada dentro de IDE Standard que nos permite enviar y recibir fácilmente información a través del puerto serie. Su uso es muy sencillo, y dispone de dos zonas, una que muestra los datos recibidos, y otra para enviarlos.

Ejemplos de código:

Enviar información:

int cont=0;

void setup(){
  //iniciamos el puerto de serie
  Serial.begin(9600);
}

void loop(){
  //Imprimimos el valor del contador
  Serial.print("Contador: ");
  Serial.println(cont);
 
  //incrementamos el contador y esperamos un segundo
  cont++;
  delay(1000);
}



Recibir información:

int option;
int led = 13;

void setup(){
  Serial.begin(9600);
  pinMode(led, OUTPUT);
}

void loop(){
  //si existe datos disponibles los leemos
  if (Serial.available()>0){
    //leemos la opcion enviada
    option=Serial.read();
    if(option=='a') {
      digitalWrite(led, LOW);
      Serial.println("OFF");
    }
    if(option=='b') {
      digitalWrite(led, HIGH);
      Serial.println("ON");
    }
  }
}


Aunque la placa arduino solo disponga de un puerto serie, con la librería SoftwareSerial.h incluida en el IDE de arduino, se puede tener másde un puerto serie con la limitación de que solo puede estar escuchando por uno. Ejemplo incluido en el IDE: TwoPortReceive.ino
 
El conversor analógico digital es de 10 bits con lo que los valores entre 0 y 5 voltios los convierte a un valor digital entre 0 y 1023. Para ller el puerto A1:
 
medida = analogRead(A1);






No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.