La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

ARDUINO ♥ C++ Instructor: Gadiel Ortez

Presentaciones similares


Presentación del tema: "ARDUINO ♥ C++ Instructor: Gadiel Ortez"— Transcripción de la presentación:

1 ARDUINO ♥ C++ Instructor: Gadiel Ortez
Lab. Programación II ARDUINO ♥ C++ Instructor: Gadiel Ortez

2 Que es ARDUINO ? Es una plataforma de código abierto, basada en una placa con un microcontrolador (hardware), un entorno de desarrollo (software), y librerias todo esto diseñado para facilitar el uso de la electrónica en diversos proyectos. Es una pequeña computadora, que realiza tareas especificas.

3 Hardware Software + Librerías

4 CARACTERISTICAS HARDWARE ARDUINO UNO 14 pines e/s digital 6 pines PWM
6 e/s analógicas Oscilador de 16 Mhz Conexión USB Fuente alimentación Micro controlador

5 CARACTERISTICAS

6 ATMEL : Microcontrolador Atmega 168/328
Microprocesador con una arquitectura RISC de 8 bits

7 ARDUINO MEGA 2560

8 Características ARDUINO MEGA

9 CARACTERISTICAS SOFTWARE IDE de programación Opensource. Lenguajes de programación -Processing/Wiring. -JAVA -C++

10 Otros Placas y Micro-Controladores
Raspberry Pi ARM Easy-PIC Microchip

11 IDEAS DE PROYECTO!

12 Estructura de Arduino Un sketch es el nombre que usa Arduino
para un programa. Existen dos funciones especiales que son parte de cada sketch de Arduino:  

13 Electrónica Básica

14 Resistencia: oposición al flujo de corriente.

15 Diodo: Componente electrónico que permite el paso de la corriente en un solo sentido.
Rectificador LED

16 Fuente de Voltaje : Suministra voltaje de alimentacion para dispositivos.
Pulsador

17 Protoboard

18 Mediciones con Multimetro
Voltaje: se mide en paralelo al elemento. Corriente: se mide en serie con el elemento.

19 Representación Numérica
Decimal Sistema de numeración que utiliza diez símbolos, para representar determinada cantidad. Base :10 Símbolos: 0,1,2,3,4,5,6,7,8,9 Binaria  Sistema de numeración en el que los números se representan utilizando solamente los símbolos cero y uno (0 y 1). Base: 2 Símbolos: 0 , 1

20 Conversiones entre sistemas
Decimal a Binario >? >? Binario a Decimal >? >?

21 TTL (Transistor-Transistor Logic)
Estandarización de valores lógicos Es una familia lógica o lo que es lo mismo, una tecnología de construcción de circuitos electrónicos digitales. La tensión nominal de alimentación de los circuitos TTL son 5 V DC. Niveles de voltaje establecidos:

22 Logica Digital OR AND NOT A B Salida 1

23 -IDE -Instalación de Drivers -Hola Mundo

24 HOLA MUNDO ! Led Parpadeante: Conectar un led al pin 13, haciendo se encienda durante ms y se apague durante 100 ms, cíclicamente. Objetivos: Reconocer partes de la placa. Familiarizarse con el entorno de programación. Conocer ordenes como: pinMode,digitalWrite y delay.

25 Semana Dos

26 Lenguaje C++

27 Estructura de Arduino Un sketch es el nombre que usa Arduino
para un programa. Existen dos funciones especiales que son parte de cada sketch de Arduino:  

28 Variables Es una forma de almacenar datos para utilizarla posteriormente. Deben ser declaradas antes de ser utilizadas. Ej.- tipo nombre= valor inicial. Dos tipos : Variables Locales: Se definen dentro de ciclos o funciones Variables Globales: Se definen al inicio del programa.

29 Función o metodo: Es un bloque de codigo, constituido por su nombre, tipo y parametros tipo nombre(parametros){ //..bloque de codigo } Punto y coma ( ; ) Debe utilizarse al final de cada linea.

30 Tipos de Datos byte: valor numerico de 8 bits. (0-255)
int :almacena numeros sin puntos decimales. (16 bits) long : almacena numeros grandes sin puntos decimales. (32 bits) Char: es un tipo de dato que ocupa un byte de memoria y almacena un valor de carácter. float : almacena numeros con punto flotante. (32 bits) String : almacena cadenas de texto. Arreglos :Coleccion de valores que son accedidos con un indice numerico. Necesita ser declarado y asignarle valores antes de ser utilizado.

31 Operadores de comparación y Aritméticos
== , Igualdad !=, Distinto < , Menor >, Mayor <= , Menor o igual >= , Mayor o igual = , Asignación

32 Operadores lógicos Operadores lógicos a nivel de bits AND: & OR: |
NOT: ! Operadores lógicos a nivel de bits AND: & OR: |

33 Control de Datos if (condicion) {    // codigo } if (condicion) {    //codigo } else {    // codigo } if (condición) {    //codigo } else if (condición) { //codigo }else{ //codigo }

34 Ciclos (For y While) for(inicializacion; condicion;incremento){
//codigo } //inicializacion while(condicion){ //codigo //incremento }

35 Constantes true/false: constantes booleanas que definen niveles lógicos. ( True:1 :: False:0 ) HIGH/LOW: definen los niveles o estados de un pin. HIGH: 1 logico, ON, 5v. LOW: 0 logico,OFF, 0v. INPUT/OUTPUT: definen el modo de un pin Digital como salida o entrada.

36 Entradas/Salidas Digitales
pinMode(pin, modo): para configurar un pin especifico como entrada o salida. INPUT/OUTPUT digitalRead(pin): Lee el estado de un pin digital obteniendo como resultado HIGH o LOW. digitalWrite(pin, valor): Asigna el estado HIGH o LOW a un pin digital especifico.

37 Tiempo Matematicas min(x,y): calcula el minimo de dos numeros.
delay(ms): genera un tiempo de espera. Parametro que recibe es en milisegundos. millis():devuelve el numero de milisegundos desde que la placa arduino empezo a ejecutar el programa. Matematicas min(x,y): calcula el minimo de dos numeros. max(x,y): calcula el maximo de dos numeros.

38 Memoria Flash: almacena el programa(sketch).
SRAM: almacena variables. (Volatil) EEPROM: almacena información a largo plazo. #include <EEPROM.h>

39 Comunicación SERIAL

40 Comunicación SERIAL Se utiliza para la comunicación entre la placa Arduino y un ordenador u otros dispositivos. Funciones : Serial.begin(velocidad) : Establece la velocidad de datos en bits por segundo (baudios) para la transmisión de datos en serie. Serial.end(): Desactiva la comunicación serie, permitiendo a los pines RX y TX ser usados como entradas o salidas digitales Serial.available(): Devuelve el número de bytes (caracteres) disponibles para ser leidos por el puerto serie.

41 Serial. read() : Lee los datos entrantes del puerto serie
Serial.read() : Lee los datos entrantes del puerto serie. Devuelve el primer byte disponible. Serial.parseInt() : devuelve el valor entero mas proximo en un buffer serial de datos. Serial.print(): Imprime los datos al puerto serie como texto ASCII.   Serial.println(): Imprime los datos al puerto serie como texto ASCII , moviendo el cursos una linea abajo. Serial.write() : Escribe datos binarios en el puerto serie. Estos datos se envían como un byte o una serie de bytes. 

42 Código ASCII: es una representación numérica de un carácter

43 ASCII

44 Práctico: Ejemplo Objetivos:
Aplicar los conocimientos teoricos adquiridos. Ejemplo 1: Controlar el encendido y apagado de un par de leds utilizando la comunicacion SERIAL. Arduino tiene conectado dos leds, los cuales se controlaran para que solamente un LED oscile a la vez.

45 Secuencia de Leds Encender y apagar 4 leds secuencialmente. Conectar los leds a los pines digitales 5,6,7 y 8. Objetivos: Aprender a declarar variables. Aprender a declarar una función y llamarla.

46 Practica1: Semáforo Crear la secuencia de luces de un semáforo convencional utilizando arduino.

47 Semana Tres

48 Numeros Aleatorios randomSeed() randomSeed inicializa el generador de números aleatorios. random() genera numeros aleatorios Ejemplos: random(max) // toma el valor 0 como el minimo random(min, max)

49 Ejemplo Numeros Aleatorios
void setup(){ Serial.begin(9600); randomSeed(analogRead(0)); } void loop() { randNumber = random(300); Serial.println(randNumber); randNumber = random(10, 20); Serial.println(randNumber); delay(50);

50 Arreglos Hint: * Utilizar ciclos para manipular arreglos
Un arreglo es una colección de variables a las que podemos acceder mediante un índice, el cual indica la posición dentro del arreglo. Hint: * Utilizar ciclos para manipular arreglos

51 Sistema de Control Entradas Salidas Procesamiento µC Memoria

52 Entradas/Salidas Digitales
pinMode(pin, modo): para configurar un pin especifico como entrada o salida. INPUT/OUTPUT digitalRead(pin): Lee el estado de un pin digital obteniendo como resultado HIGH o LOW. digitalWrite(pin, valor): Asigna el estado HIGH o LOW a un pin digital especifico.

53 Ejemplo Entrada Digital: Monitorear Estado del Boton
Este ejemplo nos permite monitorear el estado de un switch estableciendo una comunicacion serial con arduino y la computadora.

54 int pushButton = 2; void setup() { Serial
int pushButton = 2; void setup() {   Serial.begin(9600);   pinMode(pushButton, INPUT); } void loop() {    int buttonState = digitalRead(pushButton);   Serial.println(buttonState);   delay(1);         }

55 Ejemplo E/S Digital: Secuencia de Leds con Pulsador
Encender y apagar 4 leds secuencialmente al accionar un pulsador. El pulsador debe estar conectado al pin 4 y los leds a los pones 5,6,7 y 8. Objetivo: Aprender a conectar una entrada digital al arduino.

56 Diagrama

57 Entradas/Salidas Analógicas
analogRead(pin): lee el valor desde un pin analógico con una resolución de 10 bits. En un rango de (0-1023). analogWrite(pin,value): escribe un valor pseudo analógico usando modulación por ancho de pulso (PWM) con una resolución de 8 bits. Un rango de (0-255).

58 Sensor de Rotación(Potenciometro)
Un potenciómetro es un elemento simple que proporciona una resistencia variable, que podemos leer en la placa Arduino como un valor analógico. La función analogRead() devuelve un número entre 0 y 1023 que es proporcional a la cantidad de voltaje que se aplica a la clavija.

59 Ejemplo Entrada Analógica: Controlar el tiempo de encendido y apagado de un LED
int potPin = 2; int ledPin = 13; int val = 0; void setup () { pinMode (ledPin, OUTPUT); } void loop () { val = analogRead (potPin); digitalWrite (ledPin, HIGH); delay (val); digitalWrite (ledPin, LOW);

60 Liquid Crystal Display (LCD)

61 Conexión Física Interfaz Paralela 4 Bits de Datos 2 Bits de Registro
Hitachi HD44780 drivers

62 LCD – Librería LiquidCrystal Display
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { lcd.begin(16, 2); // Dimensiones de la LCD lcd.print("hello, world!"); } void loop() { lcd.noBlink(); delay(3000); lcd.blink(); delay(3000); }

63 Semana Cinco

64 Motores DC Los pines de salida de Arduino son ideales para controlar directamente los pequeños elementos eléctricos, como los LED. Sin embargo, cuando se trata de dispositivos de consumos más grandes es necesario incorporar otros dispositivos como ser un transistor externo el cual nos es muy útil ya que se obtiene una gran cantidad de corriente con una, mucho menor , además incorporamos diodos para brindar mayor protección. E B C

65 Utilizando transistor tipo NPN, conectaremos la carga (Motor) al colector del transistor y el emisor al negativo . Así, cuando la señal alta del pin de nuestro Arduino alcance la base, fluirá una pequeña corriente de la base al emisor y la corriente a través del transistor fluirá y el motor girará.

66 Práctica: Controlar encedido y apagado de un Motor DC

67 Código const int transistorPin = 9;    //Conexión a Base del Transistor void setup() {     pinMode(transistorPin, OUTPUT); } void loop() {    digitalWrite(transistorPin, HIGH);    delay(1000);    digitalWrite(transistorPin, LOW);    delay(1000); }

68 PWM (Modulación por ancho de pulso)
Es una técnica para simular una salida analógica con una salida digital. El control digital se usa para crear una onda cuadrada, una señal que conmuta constantemente entre encendido y apagado.

69 Proporcionalidad 0 1023 = 𝑋 255 512 1023 = 𝑋 255 1023 1023 = 𝑋 255 X=0

70 Funcion MAP (Proporcionalidad) map(value, fromLow, fromHigh, toLow, toHigh)
Parámetros value: el número (valor) a mapear. fromLow: el límite inferior del rango actual del valor. fromHigh: el límite superior del rango actual del valor. toLow: límite inferior del rango deseado. toHigh: límite superior del rango deseado. Devuelve El valor mapeado. void setup() { Serial.begin(9600); } void loop() { int val = analogRead(0); val = map(val, 0, 1023, 0, 255); Serial.print(“valor :”); Serial.print(val);

71 PWM: MOTOR DC Funcionamiento
Una señal lógica alta (5V) abre la puerta y permite el paso de la corriente, una señal de nivel bajo (0V) cierra la puerta e impide el paso de corriente. Esta señal que se debe transmitir tiene la ventaja de emplear un amperaje mínimo.

72 Práctica: Utilizar un potenciometro como entrada analogica para controlar la salida digital pwm de un motor DC. Aplicar conceptos de entradas y salidas digitales y analogicas y mapeo de señales.

73 Codigo int pinMotor=9; void setup() { pinMode(pinMotor,OUTPUT);
Serial.begin(9600); } void loop() { int valor = analogRead(0); int velocidad = map(valor, 0, 1023, 0, 255); analogWrite(pinMotor,velocidad); Serial.print(“valor :”); Serial.println(velocidad);

74 Control de Motor usando la comunicación Serial
int entrada = 0; int pinMotor = 9; void setup() {   // inicializar puerto serie   Serial.begin(9600);   // preparar salida digital   pinMode(pinMotor, OUTPUT); } void loop() {   // leer dato si disponible   if(Serial.available()){     entrada = Serial.read();     // escribir en el pin     analogWrite(pinMotor, entrada);   }

75 LED Dimmer int ledPin = 9;     void setup()  {    //Hace Nada }  void loop()  {     for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {         analogWrite(ledPin, fadeValue);                     delay(30);                               }    for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {        analogWrite(ledPin, fadeValue);                 delay(30);                               }  }

76 Práctico: Realizar el ejercicio anterior Led Dimmer, utilizando un potenciometro o un fotoresistor para controlar la intensidad de la luz de un LED.

77 Servomotores Dispositivo similar a un motor DC que tiene la capacidad de ubicarse en cualquier posición dentro de su rango de operación, y mantenerse estable en dicha posición. Uso de liberia <Servo.h>

78 Ejemplo de Control de un Servo Motor
#include <Servo.h> Servo servoMain; void setup() { servoMain.attach(10); } void loop() { servoMain.write(45); delay(1000); servoMain.write(0); delay(1000); servoMain.write(90); delay(1000); servoMain.write(135); delay(1000); servoMain.write(180); servoMain.write(90); Ejemplo de Control de un Servo Motor

79 #include <Servo.h>    Servo myservo;  // crear un objeto                 // un maximo de 8 objetos pueden ser instanciados   int pos = 0;    // variable que almacena la posicion del servo   void setup()  {    myservo.attach(9);   }      void loop()  {    for(pos = 0; pos < 180; pos += 1)  // de 0 grados a 180 grados, 1 grado a la vez   {                                       myservo.write(pos);              // Moverse a la posicion indicada en pos     delay(15);                       // una espera de 15 ms   }    for(pos = 180; pos>=1; pos-=1)     //de 180 grados a 0 grados   {                                     myservo.write(pos);             // Moverse a la posicion indicada en pos       delay(15);                         // una espera de 15 ms   }  }

80 Semana Seis

81 PING (Sensor Ultrasónico)
El Ping es un medidor de distancias por ultrasonidos. Funciona enviando una ráfaga de ultrasonido y esperando a escuchar el eco que se produce cuando esta rebota con el objeto y en función de ese tiempo se obtiene la distancia.

82 Ultrasónico ( 5 Pines) Pin 5 Pin 1 Lo que hay que hacer es mandar un señal de arranque en el pin 3 del SRF04 y después leer la anchura del impulso que nos proporciona en el pin 2. El pulso de disparo tiene que tener una anchura mínima de 10 uS. Hay que dejar un retardo de 10 ms desde que se hace una lectura hasta que se realiza la siguiente, con el fin de que el circuito se estabilice.

83 Ultrasonico (3 Pines) Pin 1: tierra Pin 2: Vcc (5v)
Pin3: Señal de ultrasonido Emite y recibe la señal. Se activa con un pulso de 2 o mas Microsegundos

84 Conexión Física

85 Conversiones: La compañía Parallax nos provee la siguiente información: Tenemos 74 Microsegundos por pulgada. Tenemos 29 Microsegundos por centímetro.

86 Ping 3 Pines const int pingPin = 7; void setup() {   Serial.begin(9600); } void loop() {      long tduracion, pulgadas, cm; //Paso1: Asegurar pulso limpio   pinMode(pingPin, OUTPUT);   digitalWrite(pingPin, LOW);   delayMicroseconds(2); //Paso2:Emitir el Pulso   digitalWrite(pingPin, HIGH);   delayMicroseconds(5);   digitalWrite(pingPin, LOW); //Paso3: Modificar el Pin y capturar dato   pinMode(pingPin, INPUT);   tduracion = pulseIn(pingPin, HIGH); //Paso4: Hacer las conversiones pulgadas= microsecondsToInches(tduracion);   cm = microsecondsToCentimeters(tduracion);      Serial.print(pulgadas);   Serial.print("in, ");   Serial.print(cm);   Serial.print("cm");   Serial.println();      delay(100); } long microsecondsToInches(long microseconds){  return (microseconds / 74) / 2; } long microsecondsToCentimeters(long microseconds){    return (microseconds / 29) / 2; } pulseIn: devuelve el tiempo(micros) en el que permanece activo el estado asignado.

87 Ping 5 Pines void setup(){ Serial.begin(9600); pinMode(8,OUTPUT);
void loop(){ long duracion, cm, in; //Paso 1: Emitir Pulso digitalWrite(8,LOW); delayMicroseconds(2); digitalWrite(8,HIGH); delayMicroseconds(10); digitalWrite(pin,LOW); //Paso 2: Recibir la senal duracion=pulseIn(7,HIGH); // en microsegundos //Paso 3: conversion de las unidades de segundos a cms/in cm=conversioncms(duracion); in=conversionin(duracion); Serial.print(cm); Serial.print("cms"); Serial.print(in); Serial.println("in"); } void setup(){ Serial.begin(9600); pinMode(8,OUTPUT); pinMode(7,INPUT); } long conversioncms(long msegundos){ return (msegundos/29)/2;} long conversionin(long msegundos){ return (msegundos/74)/2;

88 Sensor Infrarrojo Sharp es un sensor análogo de larga distancia Sharp, con un alcance de detección de 20cm a 150cm. La salida análoga varia de 2.8V en 20cm a 0.4V en 150cm, con un voltaje de alimentación entre 4.5 y 5.5 VDC. La distancia se indica mediante una señal analógica, por lo que este sensor es muy fácil de usar. Es un gran sensor para detectar objetos a una distancia de hasta 150cm. Utilizar la funcion analogRead() Características:  Voltaje de alimentación 4.5 a 5.5 VCC  Temperatura de operación -10 a 60°C  Rango mínimo de medida: 20cm  Rango máximo de medida: 150cm  Consume 33mA

89 Ejemplo int sensorPin = 0; //pin analogico 0 int varSensor = 0; void setup(){ Serial.begin(9600); } void loop(){ varSensor = analogRead(sensorPin); Serial.print("Sensor indica: "); Serial.print(varSensor); delay(1000);

90 Práctico Utilizar un sensor infrarrojo para medir la distancia entre tres rangos distintos: 0-100 : Encender Led Rojo e imprimir “Distancia 1” : Encender Led Amarillo e imprimir “Distancia 2” 251 – 400: Encender Led Verde e imprimir “Distancia 3”

91 EEPROM: El microcontrolador tiene una memoria EEPROM de 512 bytes, cuyos datos son guardados cuando se apaga el microcontrolador. Debemos importar la libreria a nuestro proyecto: #include <EEPROM.h> Funciones: EEPROM.write(posicionMemoria, valor a guardar) EEPROM.read(posicion en Memoria) // se debe asignar a una variable

92 Práctico Almacenar 10 valores en un rango de 0 – 100 en la memoria EEPROM. Luego evaluar cada uno de esos valores y si se encuentra en el rango de 0-50 encender un LED Rojo y en el rango de encender un LED Amarillo.

93 FIN DEL CURSO 


Descargar ppt "ARDUINO ♥ C++ Instructor: Gadiel Ortez"

Presentaciones similares


Anuncios Google