arduino jd

Post on 12-Dec-2015

252 Views

Category:

Documents

8 Downloads

Preview:

Click to see full reader

DESCRIPTION

Arduino

TRANSCRIPT

Partes del arduino

LEDS en Arduino

Estructura• La estructura básica del lenguaje de programación Arduino es bastante

simple y se organiza• en al menos dos partes o funciones que encierran bloques de

declaraciones.• void setup()• {• statements;• }• void loop()• {• statements;• }• Ambas funciones son requeridas para que el programa funcione.

setup()La función setup debería contener la declaración de cualquier variable al comienzo del programa.Es la primera función a ejecutar en el programa, es ejecutada una vez y es usada para asignarpinMode o inicializar las comunicaciones serie.

loop()La función loop se ejecuta a continuación e incluye el código que se ejecuta contínuamente -leyendo entradas, activando salidas, etc. Esta función es el núcleo de todos los programas Arduinoy hace la mayor parte del trabajo.

Tipos de variablesbyteByte almacena un valor numérico de 8 bits sin puntos decimales. Tienen un rango de 0 a 255.byte someVariable = 180; //declara 'someVariable' como un tipo byte

intEnteros son los tipos de datos primarios para almacenamiento de números sin puntos decimalesy almacenan un valor de 16 bits con un rango de -32,768 a 32,767.int someVariable = 1500; //declara 'someVariable' como tipo int

longTipo de datos de tamaño extendido para enteros largos, sin puntos decimales, almacenados enun valor de 32 bits con un rango de -2,146,483,648 a 2,147,483,647.long someVariable = 90000; //declara 'someVariable' como tipo long

floatUn tipo de datos para números en punto otante, o números que tienen un punto decimal. Losnúmeros en punto otante tienen mayor resolución que los enteros y se almacenan como valor de32 bits con un rango de -3.4028235E+38 a 3.4028235E+38.float someVariable = 3.14; //declara 'someVariable' como tipo float

Operadores aritméticos

• Los operadores aritméticos incluyen suma, resta, multiplicación y división. Retornan la suma, diferencia, producto o cociente (respectivamente).

• y = y+3;• x = x-7;• i = j*6;• r = r/5;

Asignaciones compuestas

Las asignaciones compuestas combinan una operación aritmética con una asignación de variable.

x++; //lo mismo que x = x+1x--; //lo mismo que x = x-1

x += y; //lo mismo que x = x+yx -= y; //lo mismo que x = x-yx *= y; //lo mismo que x = x*yx /= y; //lo mismo que x = x/y

operadores de comparación

• x == y; //x es igual a y• x != y; //x no es igual a y• x < y; //x es menor que y• x > y; //x es mayor que y• x <= y; //x es menor o igual que y• x >= y; //x es mayor o igual que y

operadores lógicos

AND lógico:if(x>0 && x<5) //verdadero sólo si las dos expresiones son ciertas

OR lógico:if(x>0 || y>0) //verdadero si al menos una expresión es cierta

NOT lógico:if(!(x>0)) //verdadero sólo si la expresión es falsa

Entradas y Salidas

ENTORNO DE PROGRAMACIÓN

1.Seleccionar tarjeta

2.Seleccionar Puerto serial

3.Escribir el código

4. Compilar

5.Cargar el programa

LED

Secuencia de luces

LED - RGB

RGB

LDR

• Un fotorresistor o resistencia dependiente de la luz ( LDR ) o fotocélula es una resistencia cuya resistencia disminuye con el aumento de intensidad de luz incidente, para su conexión se necesita realizar un divisor de voltaje

LDR

const int led=11;const int LDR=A0;int valor;

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

void loop(){valor=analogRead(LDR);analogWrite(led,valor);

Serial.println(' '); Serial.println(valor);

delay(500);}

Relé

Servo Motor

Servo Motor

#include <Servo.h>Servo miServo;const int pulso=A0; const int motor=22;float angulo=0;

void setup(){Serial.begin(9600);miServo.attach(13,500,2500);

}

void loop(){ angulo= analogRead(pulso)/5.69; miServo.write(angulo); Serial.println(angulo); delay(500); }

Control de velocidad de un motor DC-PWM

Funciones para LCD

• millis(); //nos da como resultado el tiempo transcurrido en milisegundos.

// PINES RS,E,D4,D5,D6,D7 LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

• lcd.begin(16, 2); //INICIALIZA LCD 16X2 • lcd.setCursor(0, 0); //COLUMNA1,FILA1 • lcd.print("Arduino"); //Imprime en la pantalla• lcd.noDisplay(); // APAGA LCD • lcd.display(); // Enciende el LCD• lcd.clear(); //Limpia la pantalla• lcd.autoscroll(); // desplaza todo la pantalla hacia la izquierda

Pantalla LCD

Datos seriales

Diseño de caracteres// include the library code: #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); byte feliz[8] = { 0b00000, 0b00000, 0b01010, 0b00000, 0b00000, 0b10001, 0b01110,

0b00000 }; byte triste[8] = { 0b00000, 0b00000, 0b01010, 0b00000, 0b00000, 0b00000, 0b01110, 0b10001 };

void setup() {

lcd.createChar(1, feliz); lcd.createChar(2, triste); lcd.begin(16, 2); lcd.print("Arduino");

}

void loop() {

lcd.setCursor(4, 1); lcd.write(1); delay(2000); lcd.setCursor(4, 1); lcd.write(2); delay(2000); }

Teclado matricial

Teclado Matricial#include <Keypad.h>// usar este codigoconst byte filas = 4;const byte columnas = 4;char teclas[filas][columnas]={ {'0','1','2','3'}, {'4','5','6','7'}, {'8','9','A','B'}, {'C','D','E','F'}};byte pinFilas[filas]={30,32,34,36};byte pinColumnas[columnas]={22,24,26,28};Keypad teclado=Keypad(makeKeymap(teclas),pinFilas,pinColumnas,filas,columnas);

// usar hasta aquichar tecla;

void setup(){Serial.begin(9600);}

void loop(){tecla=teclado.getKey();if(tecla!=NO_KEY){ Serial.println(tecla); Serial.println(" "); Serial.println(tecla-48); }}

Sensor CNY70

• Azul Emisor– Señal infrarroja

• Rojo Receptor– Reflejo de superficie

CNY

70

Conexión

• El CNY70 devuelve por la pata de salida correspondiente, según el montaje, un voltaje relacionado con la cantidad de rayo reflectado por el objeto. Para el montaje A, se leerá del emisor un '1' cuando se refleje luz y un '0' cuando no se refleje. Para el montaje B los valores se leen del colector, y son los contrarios al montaje A.

Aplicaciones

• Seguidor de línea:– Con lectura digital 1 ó 0

• Identificador de colores:– Con lectura análoga 0 a 1023

Recomendación: Usar las superficies de incidencia muy cerca del sensor para mejor toma de datos.

SENSOR HC-SR04 • Características técnicas:• Los módulos incluyen transmisores ultrasónicos, el receptor y el circuito de control.• Número de pines:

– o VCC: Alimentación +5V (4.5V min – 5.5V max)– o TRIG: Trigger entrada (input) del sensor – o ECHO: Echo salida (output) del Sensor – o GND

• Corriente de reposo: < 2mA• Corriente de trabajo: 15mA• Ángulo de medición: 30º• Ángulo de medición efectivo: < 15º• Detección de 2cm a 400cm o 1" a 13 pies • (Sirve a más de 4m, pero el fabricante no garantiza una buena medición).• “Resolución” La precisión puede variar entre los 3mm o 0.3cm.

• Dimensiones: 45mm x 20mm x 15mm

• Frecuencia de trabajo: 40KHz

Funcionamiento

• Enviar un Pulso "1" de al menos de 10uS por el Pin Trigger (Disparador). El sensor enviará 8 Pulsos de 40KHz (Ultrasonido) y coloca su salida Echo a alto (seteo), se debe detectar este evento e iniciar un conteo de tiempo. La salida Echo se mantendrá en alto hasta recibir el eco reflejado por el obstáculo a lo cual el sensor pondrá su pin Echo a bajo, es decir, terminar de contar el tiempo. Se recomienda dar un tiempo de aproximadamente 50ms de espera después de terminar la cuenta. La distancia es proporcional a la duración del pulso y puedes calcularla

pulseIn()

• Sintaxis • pulseIn (pin, valor)

pulseIn (pin, valor de tiempo de espera) • Parámetros • pin: el número del pin en el que desea leer el pulso. (Int) • valor: tipo de impulso a leer: o ALTA o BAJA . (Int) • Tiempo de espera (opcional): el número de

microsegundos que esperar a que el pulso para empezar; por defecto es de un segundo (unsigned long)

Código

Conexión

MODULO BLUETOOTH HC-06

• Voltaje de alimentación: 3.3VDC – 6VDC.

• Voltaje de operación: 3.3VDC.

• Baud rate ajustable: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200.

• Tamaño: 1.73 in x 0.63 in x 0.28 in

(4.4 cm x 1.6 cm x 0.7 cm)

HC-06

Código

App inventor 2 - Android• http://ai2.appinventor.mit.edu/

• Cuenta de Google.• Programación de bloques.• Software libre.

Entorno App inventor 2

Barras

Matlab - Arduino

Para versiones superiores a la 2010a del MATLAB

En arduino

• Conectar la placa ARDUINO a través del cable USB.

• Verificar por cual “COM” quedo conectado. Nos dirijimos a Inicio>Equipo “Click derecho” >Administrar>Administrador de dispositivos>Puertos>Arduino Mega 2560, al lado derecho de “Arduino Mega 2560” sale el COMX, siendo X un nuevo entre 0 y 6 usualmente.

• Dentro del ARDUINO ir a Herramientas>Tarjeta y elegir la “placa ARDUINO MEGA 2560”

• Dentro del Arduino: Archivo>Abrir… Buscamos dentro de los archivos descargados en la siguiente dirección: ArduinoIO>pde>adiosrv>adiosrv.pde

• Teniendo el adiosrv abierto le damos a “cargar” y esperamos hasta que diga “Carga terminada.”

• Cerramos el “ARDUINO” para dejar de tener el puerto ocupado, así poder establecer ahora la conexión a través del MATLAB.

En matlab

• Se abre como administrador el MATLAB, MATLAB >„Click dereho‟>Ejecutar como administrador.

• El directorio “Current Folder” lo ubicamos dentro de la carpeta ArduinoIO.

• Procedemos a realizar la instalación adecuada insertando los comandos:

• Digitamos “install_arduino” (sin comillas).

• Ahora digitamos “a=arduino('COMX')” (sin comillas). Donde X es el puerto usado por el arduino

LM35 – Sensor de Temperatura

L293D – Puente H

Sentido del motor

Control de velocidad con Puente H

Códigoint pin2=9; //Entrada 2 del L293Dint pin7=10; //Entrada 7 del L293Dint pote=A0; //Potenciómetro int valorpote; //Variable que recoge el valor del

potenciómetroint pwm1; //Variable del PWM 1int pwm2; //Variable del PWM 2 void setup(){ pinMode(pin2,OUTPUT); pinMode(pin7, OUTPUT);} void loop(){ //Almacenamos el valor del potenciómetro en la variable valorpote=analogRead(pote);

//Como la entrada analógica del Arduino es de 10 bits, el rango va de 0 a 1023. //En cambio, la salidas del Arduio son de 8 bits, quiere decir, rango entre 0 a 255. //Por esta razón tenemos que mapear el número de un rango a otro usando este código. pwm1 = map(valorpote, 0, 1023, 0, 255); pwm2 = map(valorpote, 0, 1023, 255, 0); //El PWM 2 esta invertido respecto al PWM 1 //Sacamos el PWM de las dos salidas usando analogWrite(pin,valor)

analogWrite(pin2,pwm1); analogWrite(pin7,pwm2);}

TSL235F

top related