1.55k likes | 2.51k Views
Introducción a Arduino. Curso Nivel 1 2013 MCI Electronics. PWR IN. USB (to Computer). RESET. SCLSDA (I2C Bus). POWER 5V / 3.3V / GND. Digital IO PWM(3, 5, 6, 9, 10, 11). Analog INPUTS. Arduino IDE. Tipos de tarjeta. Puerto Serial. IDE. Partes del Sketch. Partes del Sketch.
E N D
Introducción a Arduino Curso Nivel 1 2013 MCI Electronics
PWR IN USB (to Computer) RESET SCL\SDA (I2C Bus) POWER 5V / 3.3V / GND Digital I\O PWM(3, 5, 6, 9, 10, 11) Analog INPUTS
Partes del Sketch • Los comentarios van entre /* y */ o bien // • En la configuración se declaran las variables, también se configuran las entradas y salidas con voidsetup() • Nuestra rutina va dentro de un loop, se inicia con voidloop()
Variables • Variables: Las variables son expresiones que se pueden usar en un programa para almacenar valores, como la lectura de un sensor a través de un pin de entrada análoga. • Declaración de una variable IntinputVariable; • Inicialización de una variable IntinputVariable = 3; inputVariable = analogRead(2); • Alcance de una variable
Tipos de datos • char(-128 a 127 ) charmyChar = 'A'; • byte(0 a 255)byte b = B10010; • int(-32,768 a 32,767 )intledPin = 13; • unsigned int(0 a 65,535) • long(-2,147,483,648 a 2,147,483,647) • unsigned long(0 a 4,294,967,295) • float(3.4028235E+38 a -3.4028235E+38) floatsensorCalbrate = 1.117;
Constantes • Las siguientes constantes tienen un significado pre-definido y pueden utilizarse durante el programa • HIGH | LOW (se utiliza para indicar el estado del pin o bien para comparar el estado. Si un pin tiene sobre 3V entonces se consideracomo HIGH) • INPUT | OUTPUT (se utiliza para indicar si el pin se va a ocupar como entrada o comosalida) • true | false (verdadero es cualquier numero entero distinto de 0, falsoessiempre 0) !
// comentarios // Declarar variables a utilizar en nuestro código VARIABLES Configuración inicial del Programa FUNCIONES Bucle o Loop Conjunto de instrucciones Que se repiten constantemente
Operadores Aritméticos = (asignación) + (suma) - (resta) * (multiplicación) / (division) % (módulo) Ejemplos: int sensVal; sensVal=1; sensVal = sensVal*2+3; //sensVal ahora vale 5
Estructuras de control • If se utiliza para comparar 2 variables o una variable con unaconstante • if...else Se utiliza para verificar mas de una condición a la vez Ejemplo: if (pinFiveInput < 500) { /* Aquí va el código que queremos ejecutar si el valor de la variable es menor que 500 */ } else { /* Aquí va el código que queremos ejecutar si el valor de la variable es mayor o igual que 500 */ }
Operadores de Comparación Cuando especificas condiciones o pruebas para if, while, y for estos son los operadores que puedes usar : == igual a != no igual a < menor que if (sensor => 5) > mayor que <= menor que o igual a >= mayor que o igual a
Estructuras de control While: Repite el bloque de código hasta que la instrucción que estén entre paréntesis sea falsa. Ejemplo: var = 0; while(var < 200){ // este bloque de codigo se va a ejecutar 200 veces var++; } do... while Ejemplo: do { delay(50); // espera a que el sensor se estabilice x = readSensors(); // Lee el sensor } while (x < 100);
Estructuras de Control For Se utiliza para repetir un bloque de código. Un contador se va incrementando hasta terminar con el loop. Ejemplo: for (int i=0; i <= 255; i++) { analogWrite(PWMpin, i); delay(10); }
Operadores Booleanos Usados cuando quieras combinar múltiples condiciones, por ejemplo, si quieres chequear si el valor que viene de un sensor esta entre 5 y 10, escribirías: if ((sensor >= 5) && (sensor <= 10)) if ((sensor >= 5) ||(sensor <= 10)) If (sensor != sensor3) Hay tres operadores: AND, representado por &&;OR, representado por ||; y NOT representado por !
Tipos de Entradas Entrada Digital Análogo Diferencia entre múltiples estados. Rango: tibio Diferencia entre 2 posibles estados. Ej: Frío o calor
Entradas y salidas digitales I/O Pines digitales son salidas o entradas que reciben niveles altos (5V) o bajos (0V) de tensión y que son interpretados como un 1 o un 0 respectivamente. Para controlar estas salida /entradas, se utilizan los siguientes comandos: • pinMode(pin, mode) Configura el pin como entrada o salida pin corresponde al número del pin y mode puede ser INPUT o OUTPUT • digitalWrite(pin, value) Escribe un 0 o un 1 (0 o 5V) en el pin especificado • intdigitalRead(pin) Lee el valor de un pin digital.
Entradas Analógicas intanalogRead(pin) Lee el valor de un pin analógico. Entrega un valor entre 0 y 1023 que representa 0 a 5V es decir 4.9mV por unidad. intledPin = 9; // LED conectado al pin 9 intanalogPin = 3; // potenciómetro conectado al pin 3 int val = 0; // variable para almacenar el valor leído voidsetup() { pinMode(ledPin, OUTPUT); // Configura el pin como salida } void loop() { val = analogRead(analogPin); // Lee el pin de entrada (valor entre 0 a 1023) if (val >= 500) { DigitalWrite (LedPin,HIGH); } Else {Digitalwrite (ledpin,LOW);} }
Comunicación Serial Serial.begin(intspeed) Inicializa el puerto serial, utilízala dentro del bloque setup(). speed corresponde a la velocidad de la conexión serial, usualmente usamos 9600. intSerial.available() Devuelve el numero de caracteres (bytes) disponibles para la lectura. intSerial.read() Devuelve el primer carácter disponible o -1 si no hay datos disponibles. Serial.print(data) imprime el parámetro data en el puerto serial Serial.println(data) imprime el parámetro data en el puerto serial agregando unanuevalinea al final. Serial.write(val) escribe datos binarios en el puerto serial, val es el dato a ser enviadocomo un byte
Salidas Análogas PWM La modulaciónporancho de pulso o PWM esunatécnica para obtenerresultadosanálogos con unasalida digital. Utilizamos un pin digital para crearunaondacuadrada, la señalvacambiando de ON a OFF (0 a 5V). Este patrón de encendido y apagadopuedesimularvoltajesintermedioscambiando la razón entre que la señalestáencendida y apagada. La duración de la señalmientrasestá “encendida” se llama ancho de pulso. Arduino tiene una función especial para generar este tipo de señales: analogWrite(pin, value) - PWM Genera una onda cuadrada de frecuencia 490Hz como salida en el pin seleccionado el ancho del pulso puede ser modificado con el parámetro
Para obtener una valor análogo intermedio debes cambiar (modular) la duración del ancho de pulso. Si aplicas esta técnica en un LED por ejemplo logragrás controlar su brillo.
pinMode () • Con esta función determinamos si un pin es entrada o salida • pinMode (numero-pin, INPUT/OUTPUT); • EJEMPLO: pinMode(4,INPUT);
digitalWrite() • Función para asignar un valor (Alto o bajo) a una salida • digitalWrite (numero-pin, HIGH/LOW); • EJEMPLO: digitalWrite(10, LOW);
Delay() • Retardo, se utiliza para pausar el programa por “x” milisegundos, luego de eso, se continua ejecutando el programa • delay(tiempo); • EJEMPLO: delay(845);
IntsensorValue; • Se declara la lectura del sensor (potenciómetro) como una variable de 16 bits • En sensorValue se guardara la lectura del pin análogo
sensorValue = analogRead(sensorPin) • El valor del sensor corresponderá a la lectura análoga desde el pin al cual este conectado el sensor
If / else • if (Condición) { // accion A } else { // accion B }
If / else • If (Humedad < 500) { digitalWrite (bombaAgua, HIGH); } else { digitalWrite (bombaAgua, LOW); }
Operadores de comparación • == (igual a) • != (distinto a) • < (menor que) • > (mayor que) • <= (menor o igual que) • >= (mayor o igual que)
Operadores Lógicos • && (and) • || (or) • ! (not)
For • El bucle se ejecuta n veces mientras la condición es verdadera, cuando la condición es falsa, se sale del bucle • for (inicialización; condición; incremento) { • for (int i=0; i <= 255; i++){ analogWrite(PWMpin, i); delay(10); }
Librerías • Compilado de funciones que agrega opciones a la programación, para que esta sea mas fácil de realizar • Para agregar una librería nos vamos a sketch > Importar librería
#Include < > • Cuando importamos una librería, esta se agrega a nuestro programa en el encabezado con #include < > • EJEMPLO: #include <Servo.h>
Librería Servo • Esta librería agrega funciones especiales para comandar servomotores • Agregue un motor con la función ServonombreServo; • EJEMPLO: Servo servo1;
Librería Servo • Determine el pin de control para el motor con nombreServo.attach(numeroPin); • EJEMPLO: servo1.attach(9);
Librería Servo • Asigne el ángulo de rotación con nombreServo.write(angulo); • EJEMPLO: servo1.write(125);
Librerías Disponibles • http://arduino.cc/en/Reference/Libraries
Comunicación Serial • La comunicación Serial es la transferencia y recepción de información entre dos maquinas, el Arduino dedica el pin 0 para recibir información y el pin 1 para transferir información.