sábado, 25 de mayo de 2019

MICROCONTROLADORES

LABORATORIO N°11

Programación de Arduino




I.  COMPETENCIAS ESPECIFICAS DE LA SESIÓN:
  • Programar la tarjeta Arduino UNO utilizando el lenguaje gráfico y comparar con lenguaje de texto.
  • Recibir datos de la tarjeta arduino en el monitor serie.
  • Realizar programación básica utilizando el software mencionado.
II. MATERIALES Y EQUIPO:
  •  Arduino instalado. 
  • Tarjeta ARDUINO UNO
  • Componentes accesorios.
  • Guía de Laboratorio.
  • PC con Software
III. MARCO TEÓRICO:


Arduino Uno es una placa electrónica basada en el microcontrolador ATmega328. Cuenta con 14 entradas/salidas digitales, de las cuales 6 se pueden utilizar como salidas PWM (Modulación por ancho de pulsos) y otras 6 son entradas analógicas. Además, incluye un resonador cerámico de 16 MHz, un conector USB, un conector de alimentación, una cabecera ICSP y un botón de reseteado. La placa incluye todo lo necesario para que el microcontrolador haga su trabajo, basta conectarla a un ordenador con un cable USB o a la corriente eléctrica a través de un transformador.

Características técnicas de Arduino Uno r3:
  • Microcontrolador: ATmega328
  • Voltage: 5V
  • Voltage entrada (recomendado): 7-12V
  • Voltage entrada (limites): 6-20V
  • Digital I/O Pins: 14 (de los cuales 6 son salida PWM)
  • Entradas Analogicas: 6
  • DC Current per I/O Pin: 40 mA
  • DC Current parar 3.3V Pin: 50 mA
  • Flash Memory: 32 KB (ATmega328) de los cuales 0.5 KB son utilizados para el arranque
  • SRAM: 2 KB (ATmega328)
  • EEPROM: 1 KB (ATmega328)
  • Clock Speed: 16 MHz
Introducción general a una placa Arduino
Mirando a la placa desde la parte de arriba, este es el esquema de lo que puedes ver (los componentes de la placa con los que puedes interactuar en su uso normal están resaltados):
arduino_board


Empezando según las agujas del reloj:
  • Terminal de referencia analógica (naranja)
  • Tierra digital (verde claro)
  • Terminales digitales 2-13 (verde)
  • Terminales digitales 0-1/ E/S serie – TX/RX (verde oscuro) – Estos pines no se pueden utilizar como e/s digitales (digitalRead() y digitalWrite()) si estás utilizando comunicación serie (por ejemplo Serial.begin).
  • Botón de reinicio – S1 (azul oscuro)
  • Programador serie en circuito «In-circuit Serial Programmer» o «ICSP» (azul celeste).
  • Terminales de entrada analógica 0-5 (azul claro)
  • Terminales de alimentación y tierra (alimentación: naranja, tierras: naranja claro)
  • Entrada de alimentación externa (9-12VDC) – X1 (rosa)
  • Selector de alimentación externa o por USB (coloca un jumper en los dos pines mas cercanos de la alimentación que quieras) – SV1 (púrpura). En las versiones nuevas de Arduino la selección de alimentacion es automática por lo que puede que no tengas este selector.
  • USB (utilizado para subir programas a la placa y para comunicaciones serie entre la placa y el ordenador; puede utilizarse como alimentación de la placa) (amarillo).
Entradas y salidas digitales/analógicas

Un sistema electrónico es cualquier disposición de componentes electrónicos con un conjunto definido de entradas y salidas. Una placa Arduino, por tanto, puede pensarse de forma simplificada como un sistema que acepta información en forma de señal de entrada, desarrolla ciertas operaciones sobre ésta y luego produce señales de salida

En los sistemas electrónicos, una magnitud física variable se representa generalmente mediante una señal eléctrica que varía de manera tal que describe esa magnitud. Por lo general, se hace referencia a las señales continuas como señales analógicas, mientras que asociamos las señales discretas a señales digitales: el ejemplo más claro es el de las señales binarias, donde la señal sólo pueden tomar dos niveles, 0 o 1.

Arduino incorpora terminales digitales (señales discretas) pero de tal forma que tenemos un gran abanico de valores con los que trabajar (por ejemplo, 255 valores de luz en un fotosensor, siendo 0 ausencia de luz y 254 el máximo valor lumínico).

Imagen relacionada

Terminales Digitales

Las terminales digitales de una placa Arduino pueden ser utilizadas para entradas o salidas de propósito general a través de los comandos de programación pinMode(), digitalRead(), y digitalWrite(). Cada terminal tiene una resistencia pull-up que puede activarse o desactivarse utilizando digitalWrite() (con un valor de HIGH o LOW, respectivamente) cuando el pin esta configurado como entrada. La corriente máxima por salida es 40 mA.
  • Serial: 0 (RX) y 1 (TX). Utilizado para recibir (RX) y transmitir (TX) datos serie TTL.
  • Interruptores externos.
  • PWM: 3, 5, 6, 9, 10, y 11. Proporcionan salidas PWM de 8 bit con la función analogWrite(). En placas con ATmega8, las salidas PWM solo están disponibles en los pines 9, 10, y 11.
  • Reset BT: 7. (solo en Arduino BT) Conectado a la línea de reset del módulo bluetooth.
  • SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Estas terminales soportan comunicación SPI.
  • LED: 13. En el Diacemila y el LilyPad hay un led en placa conectado al pin digital 13.

Pines Analógicos



Los pines de entrada analógicos soportan conversiones analógico-digital (ADC) de 10 bit utilizando la función analogRead(). Las entradas analógicas pueden ser también usadas como pines digitales: entrada analógica 0 como pin digital 14 hasta la entrada analógica 5 como pin digital 19. Las entradas analógicas 6 y 7 (presentes en el Mini y el BT) no pueden ser utilizadas como pines digitales.

  • I2C: 4 (SDA) y 5 (SCL). Soportan comunicaciones I2C (TWI) utilizando la librería Wire (documentación en la página web de Wiring).

Pines de alimentación

  • VIN: Es el voltaje de entrada a la placa Arduino cuando se está utilizando una fuente de alimentación externa.
  • 5V : La alimentación regulada utilizada para alimentar el microcontrolador y otros componentes de la placa. Esta puede venir de VIN a través de un regulador en placa o ser proporcionada por USB u otra fuente regulada de 5V.
  • 3V3: Una fuente de 3.3 voltios generada por el chip FTDI de la placa.
  • GND: Pines de tierra.
IV DESARROLLO EN CLASE:



const int analogInPin = A0;  // Analog input pin that the potentiometer is attached to
const int analogOutPin1 = 5;
const int analogOutPin2 = 6;
const int analogOutPin3 = 9;
const int analogOutPin4 = 10;// Analog output pin that the LED is attached to

float sensorValue = 0;        // value read from the pot
float outputValue = 0; 
float Voltaje = 0;
int estado;

float posicion1 = 0.25*1023;
float posicion2 = 0.50*1023;
float posicion3 = 0.75*1023;
float posicion4 = 1023;

float intensidad1 = 0.10*1023;
float intensidad2 = 0.30*1023;
float intensidad3 = 0.70*1023;
float intensidad4 = 1023;

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

void loop() {
  
  sensorValue = analogRead(analogInPin);
  Voltaje = sensorValue*25/1023;

  if (sensorValue >=0 && sensorValue <= posicion1) {
    estado = 1;
  }
  if (sensorValue > posicion1 && sensorValue <= posicion2) {
    estado = 2;
  }
  if (sensorValue > posicion2 && sensorValue <= posicion3) {
    estado = 3;
  }
  if (sensorValue > posicion3 && sensorValue <= posicion4) {
    estado = 4;
  }
switch (estado) {
 case 1 :
Serial.println("10%")
analogWrite(analogOutPin1,intensidad1);
analogWrite(analogOutPin2,0);
analogWrite(analogOutPin3,0);
analogWrite(analogOutPin4,0);
 break; 

 case 2 :
Serial.println("30%")
analogWrite(analogOutPin2,intensidad2);
analogWrite(analogOutPin1,0);
analogWrite(analogOutPin3,0);
analogWrite(analogOutPin4,0);
 break; 

 case 3 :
Serial.println("70%")
analogWrite(analogOutPin3,intensidad3);
analogWrite(analogOutPin1,0);
analogWrite(analogOutPin2,0);
analogWrite(analogOutPin4,0);
 break; 

 case 4 :
Serial.println("100%")
analogWrite(analogOutPin4,intensidad4);
analogWrite(analogOutPin3,0);
analogWrite(analogOutPin2,0);
analogWrite(analogOutPin1,0);
 break; 
}
  delay (100);
  Serial.println("Voltaje: ");
  Serial.println(Voltaje);
  delay (1000);
  

  }

VÍDEO


CONCLUSIONES 
  • Se concluye que en el monitor serie se pudo mostrar tanto el valor que incrementaba y disminuía como los mensajes destinados a mostrarse en ciertos valores que se indicaron en la programación realizada, para ello se utilizó las funciones Serial.print y Serial.println las cuales nos permiten escribir caracteres ASCII en el puerto Serial.
  • Se concluye que la función de Arduino pinMode permite configurar a cada pin, de forma individual, como entrada o como salida; en la programación realizada se le configuró como entrada para recepcionar el cambio de señal ocasionada al presionar el pulsador
OBSERVACIONES

  • Se observo que para variar el rango de 1023 a 255 se utilizo el comando map para variar o cambiar de rango de brillo de la Luz .
  • Se observó que para lograr el establecer la intensidad de brillo en el porcentaje indicado también fue necesario proponer los datos que muestren la posición del potenciómetro.
  • Se observo que tenemos que ir por otros recurso si o hay diferentes formas de programar para llegar ala solución 
BIBLIOGRÁFIA

http://www.iescamp.es/miarduino/2016/01/21/placa-arduino-uno/
https://www.google.com/search?q=entradas+de+arduino+digitales+y+analogicos&rlz=1C1CHBF_esPE837PE837&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjz6-3rv7niAhVEw1kKHY0EAjwQ_AUIDygB&biw=1366&bih=625#imgrc=ANqvGHREcRWrkM:
https://www.xataka.com/basics/que-arduino-como-funciona-que-puedes-hacer-uno

MICROCONTROLADORES

LABORATORIO 10

Programación de Arduino


I.  COMPETENCIAS ESPECIFICAS DE LA SESIÓN:

  • Programar la tarjeta Arduino UNO utilizando el lenguaje gráfico y comparar con lenguaje de texto.
  • Recibir datos de la tarjeta arduino en el monitor serie.
  • Realizar programación básica utilizando el software mencionado.
II. MATERIALES Y EQUIPO:
  •  Arduino instalado. 
  • Tarjeta ARDUINO UNO
  • Componentes accesorios.
  • Guía de Laboratorio.
  • PC con Software
III. MARCO TEÓRICO:

   ARDUINO: 

Arduino es una compañía de fuente abierta y hardware abierto así como un proyecto y comunidad internacional que diseña y manufactura placas de desarrollo de hardware para construir dispositivos digitales y dispositivos interactivos que puedan detectar y controlar objetos del mundo real. Arduino se enfoca en acercar y facilitar el uso de la electrónica y programación de sistemas embebidos en proyectos multidisciplinarios. Los productos que vende la compañía son distribuidos como Hardware y Software Libre, bajo la Licencia Pública General de GNU (GPL) y la Licencia Pública General Reducida de GNU (LGPL),​permitiendo la manufactura de las placas Arduino y distribución del software por cualquier individuo. Las placas Arduino están disponibles comercialmente en forma de placas ensambladas o también en forma de kits hazlo tu mismo.

Los diseños de las placas Arduino usan diversos microcontroladores y microprocesadores. Generalmente el hardware consiste de un microcontrolador Atmel AVR, conectado bajo la configuración de "sistema mínimo" sobre una placa de circuito impreso a la que se le pueden conectar placas de expansión (shields) a través de la disposición de los puertos de entrada y salida presentes en la placa seleccionada. Las shields complementan la funcionalidad del modelo de placa empleada, agregando circuiteria, sensores y módulos de comunicación externos a la placa original. La mayoría de las placas Arduino pueden ser energizadas por un puerto USB o un puerto barrel Jack de 2.5mm. La mayoría de las placas Arduino pueden ser programadas a través del puerto serie que incorporan haciendo uso del Bootloader que traen programado por defecto. El software de Arduino consiste de dos elementos: un entorno de desarrollo (IDE) (basado en el entorno de processing y en la estructura del lenguaje de programación Wiring), y en el cargador de arranque (bootloader, por su traducción al inglés) que es ejecutado de forma automática dentro del microcontrolador en cuanto este se enciende. Las placas Arduino se programan mediante un computador, usando comunicación serie.

Arduino Uno - R3.jpg
      HARDWARE:


Arduino es un hardware libre. Los diseños de referencia de hardware se distribuyen bajo licencia Creative Commons Attribution Share-Alike 2.5 y están disponibles en el sitio web de Arduino. Los esquemáticos y archivos de montaje de componentes (PCBs) para algunas versiones de placas también están disponibles.



Aunque los diseños de hardware y software están disponibles bajo licencias de copyleft, los desarrolladores han solicitado que el nombre Arduino sea exclusivo del producto oficial y no se use para trabajos derivados sin antes solicitar permiso. El documento de política oficial sobre el uso del nombre Arduino enfatiza que el proyecto está abierto a incorporar el trabajo de otros en el producto oficial.​Varios productos compatibles con Arduino lanzados comercialmente han evitado incluir el nombre del proyecto Arduino en sus dispositivos al emplear nombres que terminan en «-duino».



La mayoría de las placas Arduino constan de un microcontrolador AVR Atmel-8 bits (ATmega8, ATmega168, ATmega328, ATmega1280, ATmega2560), cada microncontrolador consta de diversas cantidades de memoria flash, pines y funciones. Las placas utilizan pines/cabezales hembra de una o dos hileras que facilitan las conexiones e incorporación en otros circuitos.​



 Características de un Microcontrolador:

  • Velocidad del reloj u oscilador
  • Tamaño de palabra
  • Memoria: SRAM, Flash, EEPROM, ROM, etc..
  • I/O Digitales
  • Entradas Analógicas
  • Salidas analógicas (PWM)
  • DAC (Digital to Analog Converter)
  • ADC (Analog to Digital Converter)
  • Buses
  • UART
  • Otras comunicaciones.
IV. DESARROLLO EN CLASE 


Incremente un número en 150 unidades cada vez que se presione un pulsador y decremento de  dicho número en 50 unidades cada vez que se presione otro pulsador. Si el valor del número supera 1000 unidades, mostrar en el monitor serie la primera línea: “valor máximo”. Si el valor llega a ser menor o igual a 10, mostrar “valor mínimo”.



int Valvule = 0;  
 int Cuenta = 0; 
void setup() {
  pinMode(2, INPUT);
  pinMode(3, INPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
  Serial.begin(9600);
}

void loop() {

  if (digitalRead(2)==HIGH){

     Valvule = Valvule +150;
     Serial.println(Valvule);
     delay(300);
  }

  if ( Valvule == 1050){
    
     Serial.println("valor maximo");
     delay(900);
     digitalWrite(13,HIGH);
     digitalWrite(12,LOW);  
  }

   if (digitalRead(3)==HIGH){

     Valvule = Valvule - 50;
     Serial.println(Valvule);
     delay(300);
     Cuenta = Cuenta + 1;
   }
   
if ( Valvule == 0 && Cuenta > 1){
    
     Serial.println("valor minimo");
     digitalWrite(13,LOW);
     digitalWrite(12,HIGH);  
     Cuenta= 0;
 }
}



VÍDEO 






CONCLUSIONES 
  • Se concluye que en el siguiente laboratorio de programación con arduino, se necesito declarar una variable mas para poder realizar el ejerció ya que  nos ayuda para establecer una condición  importante para que se pare de contar.
  • Se concluye que el Monitor serial nos ayuda a observar los valores de salida de nuestra programación, es decir no va mostrar cada cambio que le hagamos a nuestro programa si hacemos que disminuya una variable o si aumenta pero es porque declaramos las funciones Serial.print o Serial.println. 
  • Se concluye que si es una entrada entradas y salidas digitales las tenemos de declarar y para eso Arduino nos ayuda con el con el comando pinMode y después tienes que escribir si es salida o entrada ( INPUT  o OUTPUT ).
     
OBSERVACIONES
  • Se observó, que la variable que agregamos Cuenta fue necesario para poder que salga en el Monitor Serial " valor mínimo" ya se que la utilizamos en una condición. 
  • Se observó, que en el monitor serie se muestra el mensaje de valor máximo respectivamente hasta que se presione el pulsador que desciende el valor, como posible solución se puede mencionar que fue necesario trabajar con los estados en que se encuentren los pines donde se conectó los pulsadores.
BIBLIOGRÁFICA 

http://arduino.cl/que-es-arduino/
https://es.wikipedia.org/wiki/Arduino
https://www.xataka.com/basics/que-arduino-como-funciona-que-puedes-hacer-uno
.

MICROCONTROLADORES

LABORATORIO 09
Programación de Arduino utilizando MBlock

I.  COMPETENCIAS ESPECIFICAS DE LA SESIÓN:
  • Programar la tarjeta Arduino UNO utilizando el lenguaje gráfico y comparar con lenguaje de texto.
  • Recibir datos de la tarjeta arduino en el monitor serie.
  • Realizar programación básica utilizando el software mencionado.
II. MATERIALES Y EQUIPO:
  •  Arduino instalado. 
  • Tarjeta ARDUINO UNO
  • Componentes accesorios.
  • Guía de Laboratorio.
  • PC con Software
III. MARCO TEÓRICO:

¿QUE ES ARDUINO ?

Arduino es una plataforma de desarrollo basada en una placa electrónica de hardware libre que incorpora un microcontrolador re-programable y una serie de pines hembra, los que permiten establecer conexiones entre el microcontrolador y los diferentes sensores y actuadores de una manera muy sencilla (principalmente con cables dupont).

Modelo del Microcontrolador:

El microcontrolador que lleva la placa Arduino UNO es el modelo ATmega328P de la marca Atmel. La «P» del final significa que este chip incorpora la tecnología «Picopower» (propietaria de Atmel), la cual permite un consumo eléctrico ligeramente menor comparándolo con el modelo equivalente sin «Picopower», ATmega328 (sin la «P»). Aunque el ATmega328P pueda trabajar a un voltaje menor y consumir menos corriente que el ATmega328, ambos modelos son funcionalmente idénticos, es decir, pueden ser remplazados el uno por el otro.


Al igual que ocurre con el resto de microcontroladores usados en otras placas Arduino, el ATmega328P tiene una arquitectura de tipo AVR, arquitectura desarrollada por Atmel y en cierta medida «competencia» de otras arquitecturas como por ejemplo la PIC del fabricante Microchip. Mas concretamente, el ATmega328P pertenece a la subfamilia de microcontroladores «megaAVR». Otras subfamilias de la arquitectura AVR son la «tinyAVR» (cuyos microcontroladores son mas limitados y se identifica con el nombre ATtiny) y la «XMEGA»(cuyos microcontroladores son mas capaces y se identifican con el nombre de ATxmega).

¿QUE ES MBLOCK?

es un entorno gráfico de programación por bloque para Arduino, que permite introducir de forma sencilla la programación y robótica en el aula. Se compone de 5 partes principalmente:

1. Grupo de instrucciones clasificadas por colores en las siguientes categorías:

  • Movimiento: Conjunto de instrucciones relacionadas con el control de los pines de la tarjeta de Arduino, así como el control del movimiento de cualquier personaje del escenario.
  • Apariencia: Instrucciones orientadas a modificar el aspecto de los personajes de nuestra aplicación. Para el caso de Arduino, es un conjunto de instrucciones que apenas se utiliza.
  • Sonido: Conjunto de instrucciones relacionadas con la elaboración de aplicaciones musicales, emitiendo sonidos y notas musicales.
  • Lápiz: Scratch nos ofrece la posibilidad de que los personajes dejen un rastro durante sus movimientos por el escenario como si arrastrase un lápiz durante su trayectoria.
  • Control: Las instrucciones incluídas en esta sección son impresindibles para crear la lógica de nuestros programas. Incluyen condicionales, bucles y llamadas de procedimientos.
    2. Instrucciones de programación: Las instrucciones de cada grupo corresponden a instrucciones de programación.
    3. Editor: Es la parte principal donde estructuramos y programamos nuestro programa.
  • Programas: Se compone de todas las instrucciones que hace funcionar el código que programemos.
  • Disfraces: Cada objeto puede tener diferentes apariencias o disfraces para utilizar a lo largo de nuestro programa.
  • Sonido: También es posible añadir o grabar sonidos y guardarlos para futuros usos.

3. Escenario o ventana principal: Es el resultado de nuestro programa.
4. Objetos y sprites: Distinguimos principalmente los objetos de tipo Arduino y Sprites.

  • Los objetos de tipo arduino son aquellos que interactuán con Arduino.
  • Los sprites son similares al entorno de scratch y no interactúan con Arduino.


DESARROLLO EN CLASE :

Primero creamos El disfraz para poder ayudar nos a entender nuestro programación que va ser de un semáforo y van a variar esto colores según lo correspondiente .




Después hemos programado en mBlock y donde la programación es en bloques pero esta se puede pasar a lenguaje arduino