lunes, 13 de febrero de 2012

Virtual BreadBoard


Virtual BreadBoard



En esta entrada realizaremos unos ejercicios muy basicos de arduino sobre el simulador de arduino:
"Virtual BreadBoard"




Estructura de un Sketch(programa)

Un programa Simple en arduino se compone de almenos 2 partes(Funciones):

  • La primera funcion :Void setup() que es donde establecemos las configuraciones debe ser incluida esta funcion aunque no haya declaracion que ejecutar/li>
  • La segunda Funcion:Void loop() es la que contiene el programa que se estara ejecutando ciclicamente



una vez que el programa se invoca a la funcion setup() despues se llama a la funcion loop() que como su nombre lo indica se ejecuta ciclicamente

void setup()
{
 estamentos;
}
void loop()
{
 estamentos;
}

sin embargo nosotros tambien podemos crear nuestrar propias funciones , de manera que podamos reducir el tamaño de un programa

type nombreFuncion(parametros)
{
 estamentos;
}

Declaracion de variables

  • Variables Globales: Variable que puede ser vista y utilizada por cualquier funcion
  • Variables Locales: variable que puede ser vista o utilizada dentro de la funcion o bucle que se declaro
  • Nota:

    entonces podemos tener 2 o mas variables con el mismo nombre en diferentes partes del programa

Ejemplo :
int valor;   // valor es visible para cualquier funcion
void setup ()
{
              
}
void loop()
{
   for (int i=0; i <20;) //i solo es visible dentro del bucle for        
   {
    i++
   } 
   int j;   // es visible solo dentro de la funcion loop
}
Tipos de Variables:
  • Byte(tiene un rango de 0 a 255 ya que almacena un valor numerico de 8 bits sin decimales):
    byte variable = 200; //Declaramos una variable como tipo Byte
  • Int(Almacena valores numericos de 16 bits, sin decimales, entonces abarca un rango de 32767 a -32768):
    int x=2000; //declara una x como una variable de tipo entero
  • Long(Almacena valores numericos de 32 bits , sin decimales y abarca un rango de -2147483648 a 2147483647):
    long y=90000; //Declaramos la variable "y" como tipo long
  • Float(Almacena valores numericos valores numericos con decimales y abarca un rango de 3.4028235E+38 a -3.4028235E+38):
    float z=3.5; //Declaramos la variable "z" como tipo flotante

Asignaciones Compuestas

Operadores Logicos

Constantes

algunos ejemplos de constantes son las siguientes

  • TRUE/FALSE
    Constantes booleanas en done el false indica un 0 y el TRUE se asocia con cero pero tambien puede ser cualquier otro valor distinto de cero(-2, -5 -200 son definidos como TRUE):

    if(x==TRUE)
    {
       instrucciones 
    }
    
  • HIGH/LOW
    Constantes que se utilizan para escritura o lectura digital. HIGH(alto) se toma como en la logica de nivel 1(ON) o 5 voltios
    LOW(bajo) se toma como logica nivel 0(OFF) o 0 voltios:
    digitalWrite(13,HIGH);  //activamos el pin 13 con un nivel alto(1,ON,5v)
  • INPUT/OUTPUT:
    Constantes utilizadas para definir si un pin va a ser una entrada(INPUT) o salida(OUTPUT):
    pinMode(13, OUTPUT);//Establecemos el pin 13 como salida


Entradas y Salidas Digitales


pinMode(pin, mode)

Esta instruccion es utilizada en la funcion setup() ya que establecemos el modo de trabajo de un pin.

pinMode(13,OUTPUT); //configuramos el pin 13 como salida

digitalWrite(pin, valor)

Con esta instruccion podemos enviar un valor de HIGH o LOW al pin definido previamente como OUTPUT

digitalWrite(pin,HIGH); //Establecemos el valor HIGH en el pin

digitalRead(pin)

Lee el valor de un pin(definido como digital), pudiendo leer HIGH o LOW

valor=digitalRead(pin);  //el estado que se lea del pin se le asignara a valor

Control de tiempo


delay(milisegundos)

Con esta instruccion podemos detener la ejecucion del programa la cantidad de milisegundos que le indiquemos

delay(1000); //se detiene la ejecucion del programa durante 1 segundo

millis()

Devuelve el numero de milisegundos transcurrido desde el inicio del programa hasta el momento actual

Nota:
El numero se desbordara si no resetea despues de 9 horas

valor = millis();

Programa 1


Descripcion:Encender y apagar un led


codigo:

void setup()
{
 pinMode(13, OUTPUT);
}
void loop()
{
 digitalWrite(13, HIGH);
 delay(1000);
 digitalWrite(13, LOW);
 delay(1000);
}

Implementacion: solo Conectamos un led al pin 13(el pin 13 tiene una resistencia interna)


Entradas y salidas Analogicas


analogRead(pin)

Con esta instruccion solo lee el valor de un pin definido previamente como entrada analogica

analogRead(pin);

analogWrite(pin)

Con esta instruccion podemos escribir un pseudo-valor analogico por el metodo de modulacion por ancho de pulso (PWM) a uno de los pin`s del arduino marcados como (pin PWM)

Nota:
Algunos arduinos que implementan el chip Atmega168, permiten habilitar como salidas analogicas tipo pwm los pines 3, 5, 6, 9, 10 y 11. Los que implementan el ATmega8 solo tienen habilitadas los piens 9, 10 y 11 como (PWM)

analogWrite(pin);

Matematicas


min(x,y)

Esta instruccion devuelve el numero mas pequeño , acepta cualquier tipo de datos

x=min(50,100); //asigna el valor de 50 a la variable x

max(x,y)

Esta instruccion devuelve el numero mas grande , acepta cualquier tipo de datos

x=max(50,100);  //asigna el valor de 100 a la variable x

Aleatorio


randomSeed(seed)

Esta instruccion te permite colocar una variable, constante o una funcion lo que te permitira generar numeros aleatorios

randomSeed(seed);

random(min,max)

Con esta instruccion nos permitira generar numeros aleatorios estableciendo un rango minimo y otro maximo

x=random(50,100); // asigna a la variable x un valor entre los rangos de 50-100

Puerto Serie


serial.begin(rate)

Esta instruccion abre el puerto serie y fija la velocidad en Baudios

Notas:
  • El valor tipico de velocidad para comunicarse con el ordenador es de 9600

  • Cuando se utiliza la comunicacion serie los pins digital 0(RX) y 1(TX) no puede utilizarse al mismo tiempo
  • setup()
    {
    serial.begin(9600); //abre el puerto serie y establece la velocidad en 9600 bps
    }
    

    serial.println(data)

    Esta instruccion Imprime los datos en el puerto serie, seguido de un retorno de carro automatico y salto de linea.

    serial.println(analogValue); // Envia el valor analogValue al puerto 
    

    serial.print(data,data Type)

    Con esta instruccion podemos detener la ejecucion del programa la cantidad de milisegundos que le indiquemos

    serial.println(data,data Type);
    

    2 comentarios:

    1. antes de nada muy buen post y muy claro. pero soy nuevo en VBB, cuando cargo un proyecto nuevo en blanco añado una placa arduino uno y debajo me sale media pantalla en azul cielo, se supone que ahí va el codigo pero ¿como lo escribo? ¿tengo que cargar algun eeprom?

      ResponderEliminar
    2. al agregar el arduino es una parte , despues tienes que crear un archivo con extension .pde y una vez que lo creas en la parte inferior del programa te aparece una area en donde podras escribir tu codigo, despues tienes que ligar el codigo con la placa arduino que agregaste anteriormente y despues solo le das correr simulacion , yo me habia basado de este video:

      http://www.youtube.com/watch?v=TfemwzKfKrc

      ResponderEliminar