SlideShare a Scribd company logo
1 of 35
ARDUINO
10 COMPONENTES
EN ESTE TRABAJOPODREMOS OPSERVARALGUNOS
COMPONENTESDE ARDUINOY EL CODIGO
CORRESPONDIENTE
LUIS ENRIQUE HERNANDEZ ANIBAL Y KAREN LOERA
01/01/2015
INDICE-
CONTROL REMOTO………….3
RFID…………………………………5
MATRIZ DE LEDS…………….8
DISPLAY DE SEGMENTOS.9
LED RGB………………………..11
LCD………………………………..14
SENSOR DE HUMEDAD….16
SENSOR DE TEMPERATURA..17
RELEVADOR……………………27
MOTOR A PASOS……………29-31
CONTROL REMOTO
Objetivo-que la persona aprenda a controlar el control remoto del paquete
arduino y así aprenda más sobre arduino
En esta parte aprenderemos sobre el código , como conectar y su uso del control
remoto y arduino uno
Materiales- utilizar una placa de desarrollo Arduino UNO, y un receptor
infrarrojo con filtro pasa banda VS1838. Para hacer más didáctico el
experimento usaremos también una batería de 9 volt y un LED.
Conexión-
Código-
/ Cantidad de pulsos
#define TRAIN_LENGTH 32
// En microsegundos
#define LOW_LIMIT 600
#define HIGH_LIMIT 1800
#define INIT_LIMIT 4000
#define IN 2
#define LED 13
long start, delta = 0;
uint32_t value;
int pos = 0;
boolean has_value = false;
unsigned int key[10];
void inputPin() {
noInterrupts();
if (has_value) return;
if (digitalRead(IN) == HIGH) {
start = micros();
}
else {
delta = micros() - start;
if (delta < LOW_LIMIT) {
value <<= 1;
value |= 1;
++pos;
}
else if (delta < HIGH_LIMIT) {
value <<= 1;
value |= 0;
++pos;
}
else if (delta > INIT_LIMIT) {
value = 0;
pos = 0;
}
if (pos == TRAIN_LENGTH) {
has_value = true;
}
}
interrupts();
}
void setup()
{
key[0] = 0x9768;
key[1] = 0xCF30;
key[2] = 0xE718;
key[3] = 0x857A;
key[4] = 0xEF10;
key[5] = 0xC738;
key[6] = 0xA55A;
key[7] = 0xBD42;
key[8] = 0xB54A;
key[9] = 0xAD52;
Serial.begin(115200);
pinMode(IN, INPUT);
pinMode(LED, OUTPUT);
digitalWrite(LED, LOW);
attachInterrupt(0, inputPin, CHANGE);
}
void loop()
{
int i;
if (has_value) {
Serial.print("V: ");
Serial.println(value & 0x0000FFFF, HEX);
i = 0;
while(i<10 && (key[i] != (value & 0x0000FFFF))) ++i;
Serial.println(i);
while(i--) {
digitalWrite(LED, HIGH);
delay(400);
digitalWrite(LED, LOW);
delay(200);
}
has_value = false;
pos = 0;
}
}
Funcionamiento-
Cuando la persona presione uno de los botones del control el led se encenderá
dependiendo del botón presionado.
Conclusiones-
Mi conclusión es que con este proyecto podremos observar cómo se usa el
control remoto y es muy entretenido hacerlo funcionar
Fuentes-
http://geekytheory.com/protocolo-nec-receptor-ir-con-arduino/
RFID
OBJETIVO-QUE LA PERSONA APRENDA A USAR EL CONPONENTE Y LO
PUEDA CREAR CUANDO EL QUIERA PARA CUAL QUIER PROPOCITO
EN ESTE TRABAJO APRENDEREMOS A USA EL COMPONENTE RFID
MATERIALES - Módulo Lector RFID-RC522 RF y tarjeta – 1 Arduino
Uno – Cable USB serial CONEXIÓN A continuación se muestra una tabla
con los pines del módulo RFID RC552, así como la conexión que tendrá con el
Arduino UNO En la imagen de arriba se muestra la parte trasera del RFID
RC552, en la parte inferior de esta imagen esta muestra los nombres
correspondientes de los pines.
CODIGO-
#include
#include
RFID rfid(10,5);
void setup()
{
Serial.begin(9600);
SPI.begin(); rfid.init();
}
unsigned char het[16]={'H','E','T','P','R','O',' ','R','F','I','D',' ','5','5','2',' '}; //Declaracion
de cadena de caracteres
unsigned char *writeData=het; //asigna het a char tipo puntero
unsigned char *str; //char tipo puntero utilizado para la función de lectura de
un bloque
void loop()
{
if (rfid.isCard()) {
rfid.write(8,writeData); //Función escritura (num de bloque, string)
rfid.read(8,str); //Función lectura (num de bloque, str) guarda lo que está
en el bloque a str
Serial.print(str[0]); //Imprime lo que se guardó en str de la funcion read
}
rfid.halt();
}
FUNCIONAMIENTO-
ES QUE LA PERSONA OBSERVE COMO ES QUE ESTAN FUNCIONANDO
LOS HOTELES CON CERRADURAS Y LA PUEDA CREAR PARA SI MISMO
CONCLUSIONES –
ES QUE LA CREACION DE ESL RFID ES MUY UTIL PARA OBSERVAR LO
QUE SON LAS PUERTAS ELECTRONICAS
FUENTES-
http://hetpro-store.com/TUTORIALES/arduino/comunicacion/modulo-lector-rfid-
rc522-rf-con-arduino/
MATRIZ DE LEDS
OBJETIVO-QUE LA PERSONA APRENDA A USAR EL CONPONENTE Y LO
PUEDA CREAR CUANDO EL QUIERA PARA CUAL QUIER PROPOCITO
EN ESTE TRABAJO PODREMOS OPSERVAR COMO UTILIZAR EL MATRIZ
DE LEDS Y SU CONFIGURACION
MATERIALES-
MATRIZ DE LEDS 8X8,ARDUINO,CIRCUITO INTEGRADOR,
CODIGO-
FUNCIONAMIENTO-
CONCLUSION-
MI CONCLUSION ES QUE ESTO PUEDE AYUDAR A LAS PERSONAS A DAR
HERMOSOS MENSAJES PARA CUALQUIER OCACION
DISPLAY DE 7 SEGMENTOS
OBJETIVO-QUE LA PERSONA APRENDA A USAR EL CONPONENTE Y LO
PUEDA CREAR CUANDO EL QUIERA PARA CUAL QUIER PROPOCITO
EN ESTE TRABAJO PODREMOS OPSERVAR COMO UTILIZAR EL DISPLAY
DE 7 SEGMENTOS Y SU CONFIGURACION
MATERIALES-
DISPLAY DE 7 SEGMENTOS, ARDUINO, PROTOBUARD, Y PUENTES
CONEXIÓN-
CODIGO-
int led = 13;
int led1 = 12;
int led2 = 11;
int led3 = 10;
int led4 = 9;
int led5 = 8;
int led6 = 7;
void setup() { pinMode(led, OUTPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
}
void loop() { digitalWrite(led2, HIGH);
delay(1000);
digitalWrite(led2, LOW);
//numero cero
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
delay(1000); digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW); //numero uno
digitalWrite(led1, HIGH);
digitalWrite(led4, HIGH);
delay(1000);
digitalWrite(led1, LOW);
digitalWrite(led4, LOW);
//numero dos
digitalWrite(led4, HIGH);
digitalWrite(led6, HIGH);
delay(1000);
digitalWrite(led4, LOW);
digitalWrite(led6, LOW);
//numero tres
digitalWrite(led3, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led5, HIGH);
delay(1000);
digitalWrite(led3, LOW);
digitalWrite(led6, LOW);
digitalWrite(led5, LOW);
//numero cuatro
digitalWrite(led, HIGH);
digitalWrite(led6, HIGH);
delay(1000);
digitalWrite(led, LOW);
digitalWrite(led6, LOW);
//numero cinco
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
//numero seis
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led2, HIGH);
delay(1000);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW); digitalWrite(led2, LOW); //numero siete
delay(1000); //numero ocho
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
delay(1000);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
//numero nueve
}
FUNCIONAMIENTO-
ES QUE PUEDAN COLOCARLE NUEMOS Y ESTE ARA EL CONTEO DE
TODOS COMO DEL 0-9 O 1-5 ETC.
FUENTE
http://panamahitek.com/control-de-display-7-segmentos-mediante-pulsadores/
LED RGB
OBJETIVO-QUE LA PERSONA APRENDA A USAR EL CONPONENTE Y LO
PUEDA CREAR CUANDO EL QUIERA PARA CUAL QUIER PROPOCITO
EN ESTE TRABAJO PODREMOS OPSERVAR COMO UTILIZAR LOS LED RGB
Y SU CONFIGURACION
MATERIALES-
- 1 placa Arduino Uno
- Jumpers para Conexo
- 3 Resistores de 330 Ohms - 0,25W
- 1 LED RGB
CODIGO-
/ Firmware para Controle de Cores do LED RGB
#define RED 3 // Define o pino 3 com PWM como RED
#define BLUE 5 // Define o pino 5 com PWM como BLUE
#define GREEN 6 // Define o pino 6 com PWM como GREEN
int red = 255, green = 255, blue = 255; // valores de 0 a 255 (variá-los para obter
cores diferentes).
void setup() {
pinMode (RED, OUTPUT); // Pino 3 declarado como saída
pinMode (BLUE, OUTPUT); // Pino 5 declarado como saída
pinMode (GREEN, OUTPUT); // Pino 6 declarado como saída
}
void loop() {
analogWrite (GREEN, green); // Envia o sinal de "green" para o terminal de cor
verde do LED
analogWrite (BLUE, blue); // Envia o sinal de "blue" para o terminal de cor azul
do LED
analogWrite (RED, red); // Envia o sinal de "red" para o terminal de cor
vvermelha do LED
}
FUNCION-
EN ESTE PODRAS AOPSERVAR DEPENDIENDO DEL CODIGO EL CAMBIO
DE COLORES QUE EFECTARUA EL LED Y ASI PODRAS CAMBIARLO A TU
GUSTO
CONCLUSION-
ES QUE ESTO PUEDE AYUDAR PASA FUTUROS PROTECTOS DE ARDUINO
A GRAN ESCALA
FUENTE-
http://geekytheory.com/tutorial-arduino-controlar-un-led-rgb-utilizando-
potenciometros/
LCD
OBJETIVO-QUE LA PERSONA APRENDA A USAR EL CONPONENTE Y LO
PUEDA CREAR CUANDO EL QUIERA PARA CUAL QUIER PROPOCITO
EN ESTE TRABAJO PODREMOS OPSERVAR COMO UTILIZAR LA
PANTALLA LCD Y HACER SU CONFIGURACION
MATERIALES-
PANTALLA LCD,ARDUINO UNO.
CODIGO-
/*
Ejemplo de uso de display LCD 16x2. Usando la librería LiquidCrystal
library compatible con el driver de Hitachi HD44780 driver
*/
// incluimos la libreria LiquidCrystal
#include
// inicializamos la librería con los numeros pins del interfaz
// cada LCD puede llevar sus propios numeros
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);
void setup() {
// establecemos el numero de columnas y filas del display
lcd.begin(16, 2);
// enviamos el mensaje a mostrar en el display
lcd.print("ajpdsoft");
}
void loop() {
// enviamos la posicion del cursor al display
// (nota: la linea 1 es la segunda fila, empieza a contar en 0
lcd.setCursor(0, 1);
// mostramos el numero de segundos desde el inicio del programa
lcd.print(millis()/1000);
}
FUNCIONAMIENTO –
EN EL PODRAS OBSERVAR LOS MENSAJES QUE PREVIA MENTE
ESCRIBISTE
CONCLUSION-ES ESTE PROYECTO PODREMOS OPSERVAR COMO
FUNCIONA LA PANTALLA LCD
FUENTES- http://panamahitek.com/uso-de-pantalla-lcd-con-arduino/
SENSOR DE HUMEDAD
OBJETIVO-QUE LA PERSONA APRENDA A USAR EL CONPONENTE Y LO
PUEDA CREAR CUANDO EL QUIERA PARA CUAL QUIER PROPOCITO
EN ESTE TRABAJO PODREMOS OPSERVAR COMO UTILIZAR EL SENSOR
DE HUMEDAD Y HACER SU CONFIGURACION
MATERIALES-
SENSOR DHT11,ARDUINO Y PUENTES
CODIGO-
#include "DHT.h" //cargamos la librería DHT
#define DHTPIN 2 //Seleccionamos el pin en el que se //conectará el sensor
#define DHTTYPE DHT11 //Se selecciona el DHT11 (hay //otros DHT)
DHT dht(DHTPIN, DHTTYPE); //Se inicia una variable que será usada por
Arduino para comunicarse con el sensor
void setup() {
Serial.begin(9600); //Se inicia la comunicación serial
dht.begin(); //Se inicia el sensor
}
void loop() {
float h = dht.readHumidity(); //Se lee la humedad
float t = dht.readTemperature(); //Se lee la temperatura
//Se imprimen las variables
Serial.println("Humedad: ");
Serial.println(h);
Serial.println("Temperatura: ");
Serial.println(t);
delay(2000); //Se espera 2 segundos para seguir leyendo //datos
}
FUNCIONAMIENTO-
QUE LA PERSONA PUEDA DETECTAR LA TTEMPERATURA DEL
AMBIENTE
CONCLUSION-
QUE LA PERSONA PUEDA DETECTAR DIFERENTES ELEMENTOS COMO
LA HUMEDAD DEL AMBIENTE
FUENTE-
http://panamahitek.com/dht11-sensor-de-humedadtemperatura-para-arduino/
SENSOR DE TEMPERATURA
OBJETIVO-QUE LA PERSONA APRENDA A USAR EL CONPONENTE Y LO
PUEDA CREAR CUANDO EL QUIERA PARA CUAL QUIER PROPOCITO
EN ESTE TRABAJO PODREMOS OPSERVAR COMO UTILIZAR EL SENSOR
DE TEMPERATURA Y HACER SU CONFIGURACION
MATERIALES-
SENSOR DE TEMPERATURA, ARDUINO,PANTALLA LCD,PUENTES
CODIGO-
#include
#include
#define ThermistorPIN 1 // Analog Pin 1
#define NUM_KEYS 5
/*
Circuito del dispaly LCD:
* LCD RS pin to digital pin 8
* LCD Enable pin to digital pin 9
* LCD D4 pin to digital pin 4
* LCD D5 pin to digital pin 5
* LCD D6 pin to digital pin 6
* LCD D7 pin to digital pin 7
* LCD BL pin to digital pin 10
* KEY pin to analogl pin 0
*
* Esquema del sensor de temperatura:
* [Ground] -- [10k-pad-resistor] -- | -- [10k thermistor] --[Vcc (5v)]
* |
* Analog Pin 1
*/
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);
const int numeroDeMenus=6;
char tituloMenu[numeroDeMenus][16] = {
"Fijar Temp.: ",
"Fijar Tiempo:",
"Kp: ",
"Kd: ",
"Ki: ",
"Intensidad: " };
int adc_key_val[5] ={
50, 200, 400, 600, 800 };
int adc_key_in;
int key=-1;
int oldkey=-1;
boolean luzEncendida=true;
boolean cursorActivo=false;
boolean enMenu=false;
unsigned long time;
unsigned long tiempoPID;
byte numeroLecturas=0;
int x=0;
int signo=0;
char temp[10];
int lecturas[100];
byte numeroLectura=0;
//int lectura=0;
int maximo, minimo, diferencia, t1, t2, t3;
byte consigna=25;
byte tiempo=1;
byte kp=1;
byte kd=1;
byte ki=1;
byte intensidad=10;
void setup()
{
cargarConfig();
pinMode(10, OUTPUT);
analogWrite(10,intensidad*25);
Serial.begin(9600);
lcd.clear();
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("www.ajpdsoft.com");
lcd.setCursor(0,1);
lcd.print("C.Ventanas v1.0 ");
delay(2000);
// lcd.setCursor(0,0);
// lcd.print("Muevase con las ");
// lcd.setCursor(0,1);
// lcd.print("teclas direccion");
// delay(4000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Temperatura: ");
lcd.setCursor(0,1);
int lectura=getTemp(1);
sprintf(temp, "%3d%c%1d%cC", lectura/100, '.', lectura/10%10,223);
lcd.print(temp);
time = millis();
tiempoPID = millis();
}
void loop()
{
int lectura = getTemp(ThermistorPIN);
lecturas[numeroLectura++] = lectura;
if (millis()-time > 20000) { // Si han pasado mas de 20 segundos apagamos la
luz
digitalWrite(10, LOW);
luzEncendida=false;
}
if (millis()-time > 7000) { // Si han pasado mas de 7 segundos salimos del menu
if (enMenu) guardarConfig();
enMenu = false;
x=0;
time = millis();
// }
// if (!enMenu) {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Temperatura: ");
lcd.setCursor(0,1);
sprintf(temp, "%3d%c%1d%cC", lectura/100, '.', lectura/10%10,223);
lcd.print(temp);
// Serial.print("Temperatura[");
// Serial.print(numeroLectura);
// Serial.print("]: ");
// Serial.println(temp);
}
if (millis()-time > 5000) { // Si han pasado mas de 5 segundos apagamos el
cursor
lcd.noBlink();
cursorActivo=false;
}
adc_key_in = analogRead(0); // Leemos el valor de la pulsacion
key = get_key(adc_key_in); // Obtenemos el boton pulsado
if (key != oldkey) // if keypress is detected
{
delay(50); // Espera para evitar los rebotes de las pulsaciones
adc_key_in = analogRead(0); // Leemos el valor de la pulsacion
key = get_key(adc_key_in); // Obtenemos el boton pulsado
if (key != oldkey)
{
time = millis(); // TODO: falta la comprobacion de si se ha desbordado el
tiempo
if (!luzEncendida) { // Al pulsar cualquier tecla encendemos la pantalla
analogWrite(10,intensidad*25);
luzEncendida=true;
}
else { // si la pantalla esta encendida seguimos funcionando normalmente
oldkey = key;
char accion = 0;
if (key >=0){ // Si se ha pulsado cualquier tecla
lcd.blink(); // Mostramos el cursor parpadeando
cursorActivo=true;
}
if ((key == 0) && (enMenu)){ // Se ha pulsado la tecla derecha
x++;
if (x>numeroDeMenus-1) x=numeroDeMenus-1;
}
if ((key == 1) && (enMenu)) { // Se ha pulsado la tecla arriba
accion++;
}
if ((key == 2) && (enMenu)) { // Se ha pulsado la tecla abajo
accion = accion-1;
}
if ((key == 3) && (enMenu)) { // Se ha pulsado la tecla izquierda
x--;
if (x<0) x = 0;
}
if (key == 4){ // Se ha pulsado la tecla de seleccion
}
enMenu = true;
lcd.clear();
lcd.setCursor(0,0);
lcd.print(tituloMenu[x]);
lcd.setCursor(0,1);
switch (x) {
case 0: // Estamos en fijar temperatura
consigna += accion;
lcd.print(consigna);
lcd.print((char)223);
lcd.print("C");
break;
case 1: // Estamos en fijar tiempo
tiempo += accion;
lcd.print(tiempo);
lcd.print("0 seg.");
break;
case 2: // Estamos en Kp.
kp += accion;
lcd.print(kp);
break;
case 3: // Estamos en Kd.
kd += accion;
lcd.print(kd);
break;
case 4: // Estamos en Ki.
ki += accion;
lcd.print(ki);
break;
case 5: // Estamos en Ki.
intensidad += accion;
if (intensidad > 254) intensidad = 0;
if (intensidad > 10) intensidad = 10;
lcd.print(intensidad);
lcd.print("0%");
analogWrite(10,intensidad*25);
break;
}
}
}
}
if ((numeroLectura > 99) && (numeroLecturas < 2)) {
long suma = 0;
maximo = -10000;
minimo = 10000;
for (int i=0; i < 100; i++){
suma = suma + lecturas[i];
if (lecturas[i] > maximo) {
maximo = lecturas[i];
}
if (lecturas[i] < minimo) {
minimo = lecturas[i];
}
// Serial.print("Temperatura[");
// Serial.print(i);
// Serial.print("]: ");
// Serial.println(lecturas[i]);
}
diferencia = maximo - minimo;
suma = suma / 100;
// Si la diferencia es superior a un grado
//es que ha habido un error en la lectura
if (diferencia > 100) {
Serial.println("Lectura no valida");
// TODO: Descartar lectura y repetir la medida
}
else {
numeroLecturas++;
t3=t2;
t2=t1;
t1=suma;
}
Serial.print("Suma: ");
Serial.println(suma);
/* Serial.print("Media: ");
Serial.print(suma/100);
Serial.print(",");
Serial.println(suma/10%10);
Serial.print("Maximo: ");
Serial.print(maximo/100);
Serial.print(",");
Serial.print(maximo/10%10);
Serial.print(" - Minimo: ");
Serial.print(minimo/100);
Serial.print(",");
Serial.print(minimo/10%10);
Serial.print(" - Diferencia: ");
Serial.print(diferencia/100);
Serial.print(",");
Serial.println(diferencia/10%10); */
}
if (numeroLectura > 99) {
// Cuando se termina de tomar las 100
//lecturas empezamos de nuevo por la primera
numeroLectura = 0;
}
PID();
delay(10);
// Si se desborda millis() empieza otra
//vez por cero, ocurre cada 50 dias
if (millis() < time){
time = millis();
}
}
void PID(){
// Si se desborda millis() empieza otra
// vez por cero, ocurre cada 50 dias
if (millis() < tiempoPID){
tiempoPID = millis();
}
// Si no ha pasado todavía el timepo de ciclo del PID
if (millis() < tiempoPID + (tiempo*10*1000)){
// entonces mantenemos la fuerza y esperamos mas tiempo
// s = sActualPID;
}
else if (numeroLecturas >= 2){
numeroLecturas--;
Serial.print("Distancia a la consigna: ");
Serial.print(t1-consigna*100);
Serial.print(" - Velocidad: ");
Serial.println(t1-t2);
tiempoPID = millis();
}
}
// Convertimos el valor leido en analogico
// en un numero de boton pulsado
int get_key(unsigned int input)
{
int k;
for (k = 0; k < NUM_KEYS; k++)
{
if (input < adc_key_val[k])
{
return k;
}
}
if (k >= NUM_KEYS)k = -1; // Error en la lectura.
return k;
}
int temperaturaFicticia = 2450;
int ptf= 0;
int getTemp(byte input)
{
int celsius = Thermistor(analogRead(input))*100;
return celsius;
temperaturaFicticia += (random(7)-3-ptf);
if (temperaturaFicticia > 2800) ptf = 1;
if (temperaturaFicticia < 2000) ptf = 0;
return temperaturaFicticia;
}
float pad = 10000; // balance/pad resistor value, set this to
// the measured resistance of your pad resistor
// float thermr = 10000; // thermistor nominal resistance
float Thermistor(int RawADC) {
long Resistance;
float Temp; // Dual-Purpose variable to save space.
Resistance=((1024 * pad / RawADC) - pad);
// Saving the Log(resistance) so not to calculate it 4 times later
Temp = log(Resistance);
Temp = 1 / (0.001129148 + (0.000234125 * Temp) +
(0.0000000876741 * Temp * Temp * Temp));
Temp = Temp - 273.15; // Convert Kelvin to Celsius
return Temp; // Devolver temperatura
}
boolean cargarConfig(){
if ((EEPROM.read(0) == 27) && (EEPROM.read(1) == 28) &&
(EEPROM.read(2) == 13) && (EEPROM.read(3) == 18)) {
// Comprobamos que la eeprom tenga una
// configuracion valida con numeros concretos
// solo cargamos el valor de la configuracion si los valores coinciden
if (EEPROM.read(4) == EEPROM.read(5)) consigna = EEPROM.read(4);
if (EEPROM.read(6) == EEPROM.read(7)) tiempo = EEPROM.read(6);
if (EEPROM.read(8) == EEPROM.read(9)) kp = EEPROM.read(8);
if (EEPROM.read(10) == EEPROM.read(11)) kd = EEPROM.read(10);
if (EEPROM.read(12) == EEPROM.read(13)) ki = EEPROM.read(12);
if (EEPROM.read(14) == EEPROM.read(15)) intensidad = EEPROM.read(14);
return true;
}
return false;
}
void guardarConfig(){
EEPROM.write(0,27);
EEPROM.write(1,28);
EEPROM.write(2,13);
EEPROM.write(3,18);
// Ponemos nmeros concretos en el comienzo
// de la EEPROM para confirmar que tiene valores correctos.
EEPROM.write(4,consigna);
EEPROM.write(5,consigna); // almacenamos los valores 2 veces
EEPROM.write(6,tiempo);
EEPROM.write(7,tiempo); // almacenamos los valores 2 veces
EEPROM.write(8,kp);
EEPROM.write(9,kp); // almacenamos los valores 2 veces
EEPROM.write(10,kd);
EEPROM.write(11,kd); // almacenamos los valores 2 veces
EEPROM.write(12,ki);
EEPROM.write(13,ki); // almacenamos los valores 2 veces
EEPROM.write(14,intensidad);
EEPROM.write(15,intensidad); // almacenamos los valores 2 veces
}
FUNCIONAMIENTO-ESTE PROYECTO PUEDE CALCULAR LA
TEMPERATURA EN EL AMBIENTE
CONCLUSION-QUE LA PERSONA PUEDA DETECTAR LA TEMPERATURA
DEL AMBIENTE Y QUE SEPA CUAL ES
FUENTE- http://rcmcomputointegrado.blogspot.mx/2012/05/proyecto-arduino-
sensor-de-temperatura.html
RELEVADOR
OBJETIVO-QUE LA PERSONA APRENDA A USAR EL CONPONENTE Y LO
PUEDA CREAR CUANDO EL QUIERA PARA CUAL QUIER PROPOCITO
EN ESTE TRABAJO PODREMOS OPSERVAR COMO UTILIZAR EL SENSOR
DE TEMPERATURA Y HACER SU CONFIGURACION
MATERIALES-
ARDUINO UNO,RELEVADOR,PROPODUARD,PUENTES,LEDSY PILA DE 9
VOLTS
CODIGO-
int RELAY = 2;
void Set up() {
pinMode(RELAY,OUTPUT);
}
void loop(){
digitalwrite(Relay,HIGH);
delay(2000);
digitalwrite(Relay,LOW);
delay(2000);
}
FUNCIONAMIENTO-
EN ESTE PROYECTO PODREMOS OPSERVAR EL FUNCIONAMIENTO DE EL
RELEVADOR ES EL QUE TRANSFORMA LA ENERGIA PARA
TRANSMITIRLA ATODOS
CONCLUSION-
ES ESTE PROYECTO PUDE OBSERVAR PARA QUE SIRVE UN RELEVADOR Y
LOS TANTOS USOS QUE TIENE
FUENTE-AMIGOS MITICOS
MOTOR A PASOS
OBJETIVO-QUE LA PERSONA APRENDA A USAR EL CONPONENTE Y LO
PUEDA CREAR CUANDO EL QUIERA PARA CUAL QUIER PROPOCITO
EN ESTE TRABAJO PODREMOS OPSERVAR COMO UTILIZAR EL SENSOR
DE TEMPERATURA Y HACER SU CONFIGURACION
MATERIALES-
-Arduino
-Servomotor/es (En este caso he usado un servomotor miniaturizado, por su
reducido consumo de energía, apto para arduino)
-Cables M/M para conexión fácil, fiable y flexible entre Arduino, ProtoBoard y
Servo, aunque recomiendo coger el pack de 100, por un precio asequible y no
tener que andar estirando nunca más (Pack de 100 cables Premium M/M)
-Placa de protipado (Si no se dispone ya de una)
CODIGO-
1. #include <Servo.h>
2.
3. Servo servo1; // Crea un Objeto servo
4. int posicion; // Variable de la posicion del servo
5.
6. void setup()
7. {
8. servo1.attach(2); // Selecionamos el pin 2 como el pin de control para els
ervo
9. }
10.
11. void loop()
12. {
13.
14. posicion = 150; // Establecemos el valor de la posicion a 150º
15. posicion = map(posicion, 0, 1023, 0, 179); // Establecemos la relacion en
tre los grados de giro y el PWM
16. /* Con el mapa de valores anterior establecemos una relacin proporciona
l */
17. /* entre el pulso minimo 0 con el grado minimo, 0 tambien y el pulso ma
ximo*/
18. /* 1023 con el grado maximo, 179*/
19. servo1.write(posicion); // Escribimos la posicion con el mapa de
valores al servo
20. delay(150); // Y le damos un tiempo para que sea capaz de
moverse
21. }
FUNCION-
AL INSERTAR EL CODIGO Y CARGAR ESTE SE MOVERA EN 180 GRADOS Y
NO MAS LENTO O RAPIDO DEPENDIENDO DE COMO LO DESEES
CONCLUSION-
ESTE PROYECTO PUEDE SER MUY YAMATIVO YAQUE CON EL MOTOR A
PASOS PUEDES CREAR DIFERENTES COSAS COMO UN CARRO O UNA
MANO MECANICA.
FUENTE-
http://diymakers.es/mover-motores-paso-paso-con-arduino/
GRACIAS POR SU ATENCION Y ESPERO QUE EL TRABAJO LES SEA
DE AYUDA

More Related Content

What's hot

62962340 manual-arduino-uno
62962340 manual-arduino-uno62962340 manual-arduino-uno
62962340 manual-arduino-uno
Angelik Hdez
 
Arduino(Tipos y su Programacion)
Arduino(Tipos y su Programacion)Arduino(Tipos y su Programacion)
Arduino(Tipos y su Programacion)
Oscar Pastrana
 
Taller de Arduino - ¿Qué es Arduino?
Taller de Arduino - ¿Qué es Arduino?Taller de Arduino - ¿Qué es Arduino?
Taller de Arduino - ¿Qué es Arduino?
mrquesito
 
Manual de operación arduino cabezal
Manual de operación arduino cabezalManual de operación arduino cabezal
Manual de operación arduino cabezal
XxScioNxX
 
Curso introducción a arduino
Curso introducción a arduinoCurso introducción a arduino
Curso introducción a arduino
FabLabLeon
 
Como controlar una carga con un Arduino
Como controlar una carga con un ArduinoComo controlar una carga con un Arduino
Como controlar una carga con un Arduino
miguel cruz
 

What's hot (20)

Tutorial arduino 03 programación
Tutorial arduino 03   programaciónTutorial arduino 03   programación
Tutorial arduino 03 programación
 
Mis proyectos con Arduino
Mis proyectos con ArduinoMis proyectos con Arduino
Mis proyectos con Arduino
 
62962340 manual-arduino-uno
62962340 manual-arduino-uno62962340 manual-arduino-uno
62962340 manual-arduino-uno
 
Sistema de localización de objetos basado en tecnología de Código Abierto de ...
Sistema de localización de objetos basado en tecnología de Código Abierto de ...Sistema de localización de objetos basado en tecnología de Código Abierto de ...
Sistema de localización de objetos basado en tecnología de Código Abierto de ...
 
Apuntes arduino nivel_pardillo
Apuntes arduino nivel_pardilloApuntes arduino nivel_pardillo
Apuntes arduino nivel_pardillo
 
Manual arduino programació
Manual arduino programacióManual arduino programació
Manual arduino programació
 
Introducción a Arduino
Introducción a ArduinoIntroducción a Arduino
Introducción a Arduino
 
Arduino(Tipos y su Programacion)
Arduino(Tipos y su Programacion)Arduino(Tipos y su Programacion)
Arduino(Tipos y su Programacion)
 
Tipos de arduino y sus caracteristicas
Tipos de arduino y sus caracteristicasTipos de arduino y sus caracteristicas
Tipos de arduino y sus caracteristicas
 
Taller de Arduino - ¿Qué es Arduino?
Taller de Arduino - ¿Qué es Arduino?Taller de Arduino - ¿Qué es Arduino?
Taller de Arduino - ¿Qué es Arduino?
 
Interfaz visual basic 6 y arduino
Interfaz visual basic 6 y arduinoInterfaz visual basic 6 y arduino
Interfaz visual basic 6 y arduino
 
Manual de operación arduino cabezal
Manual de operación arduino cabezalManual de operación arduino cabezal
Manual de operación arduino cabezal
 
Arduino c++ y puerto serie
Arduino c++ y puerto serieArduino c++ y puerto serie
Arduino c++ y puerto serie
 
Equipo7 Arduino
Equipo7 ArduinoEquipo7 Arduino
Equipo7 Arduino
 
Taller arduino intermedio
Taller arduino intermedio Taller arduino intermedio
Taller arduino intermedio
 
Curso introducción a arduino
Curso introducción a arduinoCurso introducción a arduino
Curso introducción a arduino
 
Open hardware - Primeros pasos con Arduino
Open hardware - Primeros pasos con ArduinoOpen hardware - Primeros pasos con Arduino
Open hardware - Primeros pasos con Arduino
 
Como controlar una carga con un Arduino
Como controlar una carga con un ArduinoComo controlar una carga con un Arduino
Como controlar una carga con un Arduino
 
Entrada digital con arduino y visual studio 2015
Entrada digital con arduino y visual studio 2015Entrada digital con arduino y visual studio 2015
Entrada digital con arduino y visual studio 2015
 
Arduino
ArduinoArduino
Arduino
 

Similar to Arduino componentes

La electricidad y la electronica tarjeta arduino.
La electricidad y la electronica  tarjeta arduino.La electricidad y la electronica  tarjeta arduino.
La electricidad y la electronica tarjeta arduino.
DanielaSanchez255
 

Similar to Arduino componentes (20)

Proyecto de arduino
Proyecto de arduinoProyecto de arduino
Proyecto de arduino
 
Señales con arduino y DAC
Señales con arduino y DACSeñales con arduino y DAC
Señales con arduino y DAC
 
CONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINOCONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINO
 
CONTADOR BINARIO ASCENDENTE DE 8 BITS CON ARDUINO
CONTADOR BINARIO ASCENDENTE DE 8 BITS CON ARDUINOCONTADOR BINARIO ASCENDENTE DE 8 BITS CON ARDUINO
CONTADOR BINARIO ASCENDENTE DE 8 BITS CON ARDUINO
 
Basicos arduino
Basicos arduinoBasicos arduino
Basicos arduino
 
Básicos arduino
Básicos arduinoBásicos arduino
Básicos arduino
 
Tarjeta arduino
Tarjeta arduinoTarjeta arduino
Tarjeta arduino
 
DISEÑO DE UN DETECTOR DE VELOCIDAD CON ARDUINO
DISEÑO DE UN DETECTOR DE VELOCIDAD CON ARDUINODISEÑO DE UN DETECTOR DE VELOCIDAD CON ARDUINO
DISEÑO DE UN DETECTOR DE VELOCIDAD CON ARDUINO
 
La electricidad y la electronica tarjeta arduino.
La electricidad y la electronica  tarjeta arduino.La electricidad y la electronica  tarjeta arduino.
La electricidad y la electronica tarjeta arduino.
 
Tarjeta arduino (1)
Tarjeta arduino (1)Tarjeta arduino (1)
Tarjeta arduino (1)
 
Tarjeta arduino (1)
Tarjeta arduino (1)Tarjeta arduino (1)
Tarjeta arduino (1)
 
Tarjeta arduino (1)
Tarjeta arduino (1)Tarjeta arduino (1)
Tarjeta arduino (1)
 
La electricidad y la electrónica tarjeta arduino.
La electricidad y la electrónica  tarjeta arduino. La electricidad y la electrónica  tarjeta arduino.
La electricidad y la electrónica tarjeta arduino.
 
La electricidad y la electronica tarjeta arduino.
La electricidad y la electronica  tarjeta arduino.La electricidad y la electronica  tarjeta arduino.
La electricidad y la electronica tarjeta arduino.
 
[Arqui1]practica2 200815555
[Arqui1]practica2 200815555[Arqui1]practica2 200815555
[Arqui1]practica2 200815555
 
Trababajo sobre placa arduino
Trababajo sobre placa arduinoTrababajo sobre placa arduino
Trababajo sobre placa arduino
 
Tarjeta arduino
Tarjeta arduinoTarjeta arduino
Tarjeta arduino
 
Manual Arduino Electronica
Manual Arduino Electronica  Manual Arduino Electronica
Manual Arduino Electronica
 
La electricidad y la electronica tarjeta arduino.
 La electricidad y la electronica  tarjeta arduino. La electricidad y la electronica  tarjeta arduino.
La electricidad y la electronica tarjeta arduino.
 
Placa arduino
Placa arduinoPlaca arduino
Placa arduino
 

More from Luis Enrique Hernandez Anibal

More from Luis Enrique Hernandez Anibal (20)

Mini proyecto usando arduino
Mini proyecto usando arduinoMini proyecto usando arduino
Mini proyecto usando arduino
 
A
A A
A
 
Sistema de archivos
Sistema de archivosSistema de archivos
Sistema de archivos
 
Topologias
TopologiasTopologias
Topologias
 
Subneteo
SubneteoSubneteo
Subneteo
 
Servidor php
Servidor phpServidor php
Servidor php
 
Servidor mysql
Servidor mysqlServidor mysql
Servidor mysql
 
Servidor http(web)
Servidor http(web)Servidor http(web)
Servidor http(web)
 
Servidor ftp
Servidor ftpServidor ftp
Servidor ftp
 
Servidor dhcp
Servidor dhcpServidor dhcp
Servidor dhcp
 
Red wifi
Red wifiRed wifi
Red wifi
 
Red punto a punto ,en estrella y
Red punto a punto ,en estrella yRed punto a punto ,en estrella y
Red punto a punto ,en estrella y
 
Red de area local
Red de area localRed de area local
Red de area local
 
Protocolos de enrutamiento
Protocolos de enrutamientoProtocolos de enrutamiento
Protocolos de enrutamiento
 
Medios de transmicion
Medios de transmicionMedios de transmicion
Medios de transmicion
 
I.c.a.s
I.c.a.sI.c.a.s
I.c.a.s
 
Estandares ieee y ansi
Estandares ieee y ansiEstandares ieee y ansi
Estandares ieee y ansi
 
Dispositivos de expancion
Dispositivos de expancionDispositivos de expancion
Dispositivos de expancion
 
Clasificacion de redes
Clasificacion de redesClasificacion de redes
Clasificacion de redes
 
Cable directo , cruzado y rollover
Cable directo , cruzado y rolloverCable directo , cruzado y rollover
Cable directo , cruzado y rollover
 

Arduino componentes

  • 1. ARDUINO 10 COMPONENTES EN ESTE TRABAJOPODREMOS OPSERVARALGUNOS COMPONENTESDE ARDUINOY EL CODIGO CORRESPONDIENTE LUIS ENRIQUE HERNANDEZ ANIBAL Y KAREN LOERA 01/01/2015
  • 2. INDICE- CONTROL REMOTO………….3 RFID…………………………………5 MATRIZ DE LEDS…………….8 DISPLAY DE SEGMENTOS.9 LED RGB………………………..11 LCD………………………………..14 SENSOR DE HUMEDAD….16 SENSOR DE TEMPERATURA..17 RELEVADOR……………………27 MOTOR A PASOS……………29-31
  • 3. CONTROL REMOTO Objetivo-que la persona aprenda a controlar el control remoto del paquete arduino y así aprenda más sobre arduino En esta parte aprenderemos sobre el código , como conectar y su uso del control remoto y arduino uno Materiales- utilizar una placa de desarrollo Arduino UNO, y un receptor infrarrojo con filtro pasa banda VS1838. Para hacer más didáctico el experimento usaremos también una batería de 9 volt y un LED. Conexión-
  • 4. Código- / Cantidad de pulsos #define TRAIN_LENGTH 32 // En microsegundos #define LOW_LIMIT 600 #define HIGH_LIMIT 1800 #define INIT_LIMIT 4000 #define IN 2 #define LED 13 long start, delta = 0; uint32_t value; int pos = 0; boolean has_value = false; unsigned int key[10]; void inputPin() { noInterrupts(); if (has_value) return; if (digitalRead(IN) == HIGH) { start = micros(); } else { delta = micros() - start; if (delta < LOW_LIMIT) {
  • 5. value <<= 1; value |= 1; ++pos; } else if (delta < HIGH_LIMIT) { value <<= 1; value |= 0; ++pos; } else if (delta > INIT_LIMIT) { value = 0; pos = 0; } if (pos == TRAIN_LENGTH) { has_value = true; } } interrupts(); } void setup() { key[0] = 0x9768; key[1] = 0xCF30; key[2] = 0xE718; key[3] = 0x857A; key[4] = 0xEF10; key[5] = 0xC738; key[6] = 0xA55A; key[7] = 0xBD42; key[8] = 0xB54A; key[9] = 0xAD52; Serial.begin(115200); pinMode(IN, INPUT); pinMode(LED, OUTPUT); digitalWrite(LED, LOW); attachInterrupt(0, inputPin, CHANGE); } void loop() {
  • 6. int i; if (has_value) { Serial.print("V: "); Serial.println(value & 0x0000FFFF, HEX); i = 0; while(i<10 && (key[i] != (value & 0x0000FFFF))) ++i; Serial.println(i); while(i--) { digitalWrite(LED, HIGH); delay(400); digitalWrite(LED, LOW); delay(200); } has_value = false; pos = 0; } } Funcionamiento- Cuando la persona presione uno de los botones del control el led se encenderá dependiendo del botón presionado. Conclusiones- Mi conclusión es que con este proyecto podremos observar cómo se usa el control remoto y es muy entretenido hacerlo funcionar Fuentes- http://geekytheory.com/protocolo-nec-receptor-ir-con-arduino/
  • 7. RFID OBJETIVO-QUE LA PERSONA APRENDA A USAR EL CONPONENTE Y LO PUEDA CREAR CUANDO EL QUIERA PARA CUAL QUIER PROPOCITO EN ESTE TRABAJO APRENDEREMOS A USA EL COMPONENTE RFID MATERIALES - Módulo Lector RFID-RC522 RF y tarjeta – 1 Arduino Uno – Cable USB serial CONEXIÓN A continuación se muestra una tabla con los pines del módulo RFID RC552, así como la conexión que tendrá con el Arduino UNO En la imagen de arriba se muestra la parte trasera del RFID RC552, en la parte inferior de esta imagen esta muestra los nombres correspondientes de los pines. CODIGO- #include #include
  • 8. RFID rfid(10,5); void setup() { Serial.begin(9600); SPI.begin(); rfid.init(); } unsigned char het[16]={'H','E','T','P','R','O',' ','R','F','I','D',' ','5','5','2',' '}; //Declaracion de cadena de caracteres unsigned char *writeData=het; //asigna het a char tipo puntero unsigned char *str; //char tipo puntero utilizado para la función de lectura de un bloque void loop() { if (rfid.isCard()) { rfid.write(8,writeData); //Función escritura (num de bloque, string) rfid.read(8,str); //Función lectura (num de bloque, str) guarda lo que está en el bloque a str Serial.print(str[0]); //Imprime lo que se guardó en str de la funcion read } rfid.halt(); } FUNCIONAMIENTO- ES QUE LA PERSONA OBSERVE COMO ES QUE ESTAN FUNCIONANDO LOS HOTELES CON CERRADURAS Y LA PUEDA CREAR PARA SI MISMO
  • 9. CONCLUSIONES – ES QUE LA CREACION DE ESL RFID ES MUY UTIL PARA OBSERVAR LO QUE SON LAS PUERTAS ELECTRONICAS FUENTES- http://hetpro-store.com/TUTORIALES/arduino/comunicacion/modulo-lector-rfid- rc522-rf-con-arduino/ MATRIZ DE LEDS OBJETIVO-QUE LA PERSONA APRENDA A USAR EL CONPONENTE Y LO PUEDA CREAR CUANDO EL QUIERA PARA CUAL QUIER PROPOCITO
  • 10. EN ESTE TRABAJO PODREMOS OPSERVAR COMO UTILIZAR EL MATRIZ DE LEDS Y SU CONFIGURACION MATERIALES- MATRIZ DE LEDS 8X8,ARDUINO,CIRCUITO INTEGRADOR, CODIGO-
  • 11. FUNCIONAMIENTO- CONCLUSION- MI CONCLUSION ES QUE ESTO PUEDE AYUDAR A LAS PERSONAS A DAR HERMOSOS MENSAJES PARA CUALQUIER OCACION
  • 12. DISPLAY DE 7 SEGMENTOS OBJETIVO-QUE LA PERSONA APRENDA A USAR EL CONPONENTE Y LO PUEDA CREAR CUANDO EL QUIERA PARA CUAL QUIER PROPOCITO EN ESTE TRABAJO PODREMOS OPSERVAR COMO UTILIZAR EL DISPLAY DE 7 SEGMENTOS Y SU CONFIGURACION MATERIALES- DISPLAY DE 7 SEGMENTOS, ARDUINO, PROTOBUARD, Y PUENTES CONEXIÓN-
  • 13. CODIGO- int led = 13; int led1 = 12; int led2 = 11; int led3 = 10; int led4 = 9; int led5 = 8; int led6 = 7; void setup() { pinMode(led, OUTPUT); pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); pinMode(led4, OUTPUT); pinMode(led5, OUTPUT); pinMode(led6, OUTPUT); } void loop() { digitalWrite(led2, HIGH); delay(1000); digitalWrite(led2, LOW); //numero cero digitalWrite(led2, HIGH); digitalWrite(led3, HIGH); digitalWrite(led4, HIGH); digitalWrite(led5, HIGH); digitalWrite(led6, HIGH); delay(1000); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); digitalWrite(led5, LOW); digitalWrite(led6, LOW); //numero uno digitalWrite(led1, HIGH); digitalWrite(led4, HIGH); delay(1000); digitalWrite(led1, LOW);
  • 14. digitalWrite(led4, LOW); //numero dos digitalWrite(led4, HIGH); digitalWrite(led6, HIGH); delay(1000); digitalWrite(led4, LOW); digitalWrite(led6, LOW); //numero tres digitalWrite(led3, HIGH); digitalWrite(led6, HIGH); digitalWrite(led5, HIGH); delay(1000); digitalWrite(led3, LOW); digitalWrite(led6, LOW); digitalWrite(led5, LOW); //numero cuatro digitalWrite(led, HIGH); digitalWrite(led6, HIGH); delay(1000); digitalWrite(led, LOW); digitalWrite(led6, LOW); //numero cinco digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); //numero seis digitalWrite(led4, HIGH); digitalWrite(led5, HIGH); digitalWrite(led6, HIGH); digitalWrite(led2, HIGH); delay(1000); digitalWrite(led4, LOW); digitalWrite(led5, LOW); digitalWrite(led6, LOW); digitalWrite(led2, LOW); //numero siete delay(1000); //numero ocho digitalWrite(led5, HIGH); digitalWrite(led6, HIGH); delay(1000);
  • 15. digitalWrite(led5, LOW); digitalWrite(led6, LOW); //numero nueve } FUNCIONAMIENTO- ES QUE PUEDAN COLOCARLE NUEMOS Y ESTE ARA EL CONTEO DE TODOS COMO DEL 0-9 O 1-5 ETC. FUENTE http://panamahitek.com/control-de-display-7-segmentos-mediante-pulsadores/ LED RGB OBJETIVO-QUE LA PERSONA APRENDA A USAR EL CONPONENTE Y LO PUEDA CREAR CUANDO EL QUIERA PARA CUAL QUIER PROPOCITO EN ESTE TRABAJO PODREMOS OPSERVAR COMO UTILIZAR LOS LED RGB Y SU CONFIGURACION MATERIALES- - 1 placa Arduino Uno - Jumpers para Conexo - 3 Resistores de 330 Ohms - 0,25W - 1 LED RGB
  • 16. CODIGO- / Firmware para Controle de Cores do LED RGB #define RED 3 // Define o pino 3 com PWM como RED #define BLUE 5 // Define o pino 5 com PWM como BLUE #define GREEN 6 // Define o pino 6 com PWM como GREEN int red = 255, green = 255, blue = 255; // valores de 0 a 255 (variá-los para obter cores diferentes). void setup() { pinMode (RED, OUTPUT); // Pino 3 declarado como saída pinMode (BLUE, OUTPUT); // Pino 5 declarado como saída pinMode (GREEN, OUTPUT); // Pino 6 declarado como saída } void loop() { analogWrite (GREEN, green); // Envia o sinal de "green" para o terminal de cor verde do LED analogWrite (BLUE, blue); // Envia o sinal de "blue" para o terminal de cor azul do LED analogWrite (RED, red); // Envia o sinal de "red" para o terminal de cor vvermelha do LED } FUNCION- EN ESTE PODRAS AOPSERVAR DEPENDIENDO DEL CODIGO EL CAMBIO DE COLORES QUE EFECTARUA EL LED Y ASI PODRAS CAMBIARLO A TU GUSTO
  • 17. CONCLUSION- ES QUE ESTO PUEDE AYUDAR PASA FUTUROS PROTECTOS DE ARDUINO A GRAN ESCALA FUENTE- http://geekytheory.com/tutorial-arduino-controlar-un-led-rgb-utilizando- potenciometros/ LCD OBJETIVO-QUE LA PERSONA APRENDA A USAR EL CONPONENTE Y LO PUEDA CREAR CUANDO EL QUIERA PARA CUAL QUIER PROPOCITO EN ESTE TRABAJO PODREMOS OPSERVAR COMO UTILIZAR LA PANTALLA LCD Y HACER SU CONFIGURACION MATERIALES- PANTALLA LCD,ARDUINO UNO. CODIGO- /* Ejemplo de uso de display LCD 16x2. Usando la librería LiquidCrystal library compatible con el driver de Hitachi HD44780 driver
  • 18. */ // incluimos la libreria LiquidCrystal #include // inicializamos la librería con los numeros pins del interfaz // cada LCD puede llevar sus propios numeros LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7); void setup() { // establecemos el numero de columnas y filas del display lcd.begin(16, 2); // enviamos el mensaje a mostrar en el display lcd.print("ajpdsoft"); } void loop() { // enviamos la posicion del cursor al display // (nota: la linea 1 es la segunda fila, empieza a contar en 0 lcd.setCursor(0, 1); // mostramos el numero de segundos desde el inicio del programa lcd.print(millis()/1000); }
  • 19. FUNCIONAMIENTO – EN EL PODRAS OBSERVAR LOS MENSAJES QUE PREVIA MENTE ESCRIBISTE CONCLUSION-ES ESTE PROYECTO PODREMOS OPSERVAR COMO FUNCIONA LA PANTALLA LCD FUENTES- http://panamahitek.com/uso-de-pantalla-lcd-con-arduino/ SENSOR DE HUMEDAD OBJETIVO-QUE LA PERSONA APRENDA A USAR EL CONPONENTE Y LO PUEDA CREAR CUANDO EL QUIERA PARA CUAL QUIER PROPOCITO EN ESTE TRABAJO PODREMOS OPSERVAR COMO UTILIZAR EL SENSOR DE HUMEDAD Y HACER SU CONFIGURACION MATERIALES- SENSOR DHT11,ARDUINO Y PUENTES CODIGO- #include "DHT.h" //cargamos la librería DHT #define DHTPIN 2 //Seleccionamos el pin en el que se //conectará el sensor #define DHTTYPE DHT11 //Se selecciona el DHT11 (hay //otros DHT)
  • 20. DHT dht(DHTPIN, DHTTYPE); //Se inicia una variable que será usada por Arduino para comunicarse con el sensor void setup() { Serial.begin(9600); //Se inicia la comunicación serial dht.begin(); //Se inicia el sensor } void loop() { float h = dht.readHumidity(); //Se lee la humedad float t = dht.readTemperature(); //Se lee la temperatura //Se imprimen las variables Serial.println("Humedad: "); Serial.println(h); Serial.println("Temperatura: "); Serial.println(t); delay(2000); //Se espera 2 segundos para seguir leyendo //datos } FUNCIONAMIENTO- QUE LA PERSONA PUEDA DETECTAR LA TTEMPERATURA DEL AMBIENTE CONCLUSION- QUE LA PERSONA PUEDA DETECTAR DIFERENTES ELEMENTOS COMO LA HUMEDAD DEL AMBIENTE FUENTE- http://panamahitek.com/dht11-sensor-de-humedadtemperatura-para-arduino/
  • 21. SENSOR DE TEMPERATURA OBJETIVO-QUE LA PERSONA APRENDA A USAR EL CONPONENTE Y LO PUEDA CREAR CUANDO EL QUIERA PARA CUAL QUIER PROPOCITO EN ESTE TRABAJO PODREMOS OPSERVAR COMO UTILIZAR EL SENSOR DE TEMPERATURA Y HACER SU CONFIGURACION MATERIALES- SENSOR DE TEMPERATURA, ARDUINO,PANTALLA LCD,PUENTES CODIGO- #include #include #define ThermistorPIN 1 // Analog Pin 1 #define NUM_KEYS 5 /* Circuito del dispaly LCD: * LCD RS pin to digital pin 8 * LCD Enable pin to digital pin 9 * LCD D4 pin to digital pin 4 * LCD D5 pin to digital pin 5 * LCD D6 pin to digital pin 6 * LCD D7 pin to digital pin 7 * LCD BL pin to digital pin 10 * KEY pin to analogl pin 0 * * Esquema del sensor de temperatura: * [Ground] -- [10k-pad-resistor] -- | -- [10k thermistor] --[Vcc (5v)] * |
  • 22. * Analog Pin 1 */ LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7); const int numeroDeMenus=6; char tituloMenu[numeroDeMenus][16] = { "Fijar Temp.: ", "Fijar Tiempo:", "Kp: ", "Kd: ", "Ki: ", "Intensidad: " }; int adc_key_val[5] ={ 50, 200, 400, 600, 800 }; int adc_key_in; int key=-1; int oldkey=-1; boolean luzEncendida=true; boolean cursorActivo=false; boolean enMenu=false; unsigned long time; unsigned long tiempoPID; byte numeroLecturas=0; int x=0; int signo=0; char temp[10]; int lecturas[100]; byte numeroLectura=0; //int lectura=0; int maximo, minimo, diferencia, t1, t2, t3; byte consigna=25; byte tiempo=1; byte kp=1; byte kd=1; byte ki=1; byte intensidad=10; void setup() {
  • 23. cargarConfig(); pinMode(10, OUTPUT); analogWrite(10,intensidad*25); Serial.begin(9600); lcd.clear(); lcd.begin(16, 2); lcd.setCursor(0,0); lcd.print("www.ajpdsoft.com"); lcd.setCursor(0,1); lcd.print("C.Ventanas v1.0 "); delay(2000); // lcd.setCursor(0,0); // lcd.print("Muevase con las "); // lcd.setCursor(0,1); // lcd.print("teclas direccion"); // delay(4000); lcd.clear(); lcd.setCursor(0,0); lcd.print("Temperatura: "); lcd.setCursor(0,1); int lectura=getTemp(1); sprintf(temp, "%3d%c%1d%cC", lectura/100, '.', lectura/10%10,223); lcd.print(temp); time = millis(); tiempoPID = millis(); } void loop() { int lectura = getTemp(ThermistorPIN); lecturas[numeroLectura++] = lectura; if (millis()-time > 20000) { // Si han pasado mas de 20 segundos apagamos la luz digitalWrite(10, LOW); luzEncendida=false; } if (millis()-time > 7000) { // Si han pasado mas de 7 segundos salimos del menu if (enMenu) guardarConfig(); enMenu = false; x=0; time = millis(); // } // if (!enMenu) { lcd.clear();
  • 24. lcd.setCursor(0,0); lcd.print("Temperatura: "); lcd.setCursor(0,1); sprintf(temp, "%3d%c%1d%cC", lectura/100, '.', lectura/10%10,223); lcd.print(temp); // Serial.print("Temperatura["); // Serial.print(numeroLectura); // Serial.print("]: "); // Serial.println(temp); } if (millis()-time > 5000) { // Si han pasado mas de 5 segundos apagamos el cursor lcd.noBlink(); cursorActivo=false; } adc_key_in = analogRead(0); // Leemos el valor de la pulsacion key = get_key(adc_key_in); // Obtenemos el boton pulsado if (key != oldkey) // if keypress is detected { delay(50); // Espera para evitar los rebotes de las pulsaciones adc_key_in = analogRead(0); // Leemos el valor de la pulsacion key = get_key(adc_key_in); // Obtenemos el boton pulsado if (key != oldkey) { time = millis(); // TODO: falta la comprobacion de si se ha desbordado el tiempo if (!luzEncendida) { // Al pulsar cualquier tecla encendemos la pantalla analogWrite(10,intensidad*25); luzEncendida=true; } else { // si la pantalla esta encendida seguimos funcionando normalmente oldkey = key; char accion = 0; if (key >=0){ // Si se ha pulsado cualquier tecla lcd.blink(); // Mostramos el cursor parpadeando cursorActivo=true; } if ((key == 0) && (enMenu)){ // Se ha pulsado la tecla derecha x++; if (x>numeroDeMenus-1) x=numeroDeMenus-1; } if ((key == 1) && (enMenu)) { // Se ha pulsado la tecla arriba
  • 25. accion++; } if ((key == 2) && (enMenu)) { // Se ha pulsado la tecla abajo accion = accion-1; } if ((key == 3) && (enMenu)) { // Se ha pulsado la tecla izquierda x--; if (x<0) x = 0; } if (key == 4){ // Se ha pulsado la tecla de seleccion } enMenu = true; lcd.clear(); lcd.setCursor(0,0); lcd.print(tituloMenu[x]); lcd.setCursor(0,1); switch (x) { case 0: // Estamos en fijar temperatura consigna += accion; lcd.print(consigna); lcd.print((char)223); lcd.print("C"); break; case 1: // Estamos en fijar tiempo tiempo += accion; lcd.print(tiempo); lcd.print("0 seg."); break; case 2: // Estamos en Kp. kp += accion; lcd.print(kp); break; case 3: // Estamos en Kd. kd += accion; lcd.print(kd); break; case 4: // Estamos en Ki. ki += accion; lcd.print(ki); break; case 5: // Estamos en Ki. intensidad += accion; if (intensidad > 254) intensidad = 0; if (intensidad > 10) intensidad = 10;
  • 26. lcd.print(intensidad); lcd.print("0%"); analogWrite(10,intensidad*25); break; } } } } if ((numeroLectura > 99) && (numeroLecturas < 2)) { long suma = 0; maximo = -10000; minimo = 10000; for (int i=0; i < 100; i++){ suma = suma + lecturas[i]; if (lecturas[i] > maximo) { maximo = lecturas[i]; } if (lecturas[i] < minimo) { minimo = lecturas[i]; } // Serial.print("Temperatura["); // Serial.print(i); // Serial.print("]: "); // Serial.println(lecturas[i]); } diferencia = maximo - minimo; suma = suma / 100; // Si la diferencia es superior a un grado //es que ha habido un error en la lectura if (diferencia > 100) { Serial.println("Lectura no valida"); // TODO: Descartar lectura y repetir la medida } else { numeroLecturas++; t3=t2; t2=t1; t1=suma; } Serial.print("Suma: "); Serial.println(suma); /* Serial.print("Media: "); Serial.print(suma/100);
  • 27. Serial.print(","); Serial.println(suma/10%10); Serial.print("Maximo: "); Serial.print(maximo/100); Serial.print(","); Serial.print(maximo/10%10); Serial.print(" - Minimo: "); Serial.print(minimo/100); Serial.print(","); Serial.print(minimo/10%10); Serial.print(" - Diferencia: "); Serial.print(diferencia/100); Serial.print(","); Serial.println(diferencia/10%10); */ } if (numeroLectura > 99) { // Cuando se termina de tomar las 100 //lecturas empezamos de nuevo por la primera numeroLectura = 0; } PID(); delay(10); // Si se desborda millis() empieza otra //vez por cero, ocurre cada 50 dias if (millis() < time){ time = millis(); } } void PID(){ // Si se desborda millis() empieza otra // vez por cero, ocurre cada 50 dias if (millis() < tiempoPID){ tiempoPID = millis(); } // Si no ha pasado todavía el timepo de ciclo del PID if (millis() < tiempoPID + (tiempo*10*1000)){ // entonces mantenemos la fuerza y esperamos mas tiempo // s = sActualPID; } else if (numeroLecturas >= 2){ numeroLecturas--; Serial.print("Distancia a la consigna: "); Serial.print(t1-consigna*100);
  • 28. Serial.print(" - Velocidad: "); Serial.println(t1-t2); tiempoPID = millis(); } } // Convertimos el valor leido en analogico // en un numero de boton pulsado int get_key(unsigned int input) { int k; for (k = 0; k < NUM_KEYS; k++) { if (input < adc_key_val[k]) { return k; } } if (k >= NUM_KEYS)k = -1; // Error en la lectura. return k; } int temperaturaFicticia = 2450; int ptf= 0; int getTemp(byte input) { int celsius = Thermistor(analogRead(input))*100; return celsius; temperaturaFicticia += (random(7)-3-ptf); if (temperaturaFicticia > 2800) ptf = 1; if (temperaturaFicticia < 2000) ptf = 0; return temperaturaFicticia; } float pad = 10000; // balance/pad resistor value, set this to // the measured resistance of your pad resistor // float thermr = 10000; // thermistor nominal resistance float Thermistor(int RawADC) { long Resistance; float Temp; // Dual-Purpose variable to save space.
  • 29. Resistance=((1024 * pad / RawADC) - pad); // Saving the Log(resistance) so not to calculate it 4 times later Temp = log(Resistance); Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp * Temp * Temp)); Temp = Temp - 273.15; // Convert Kelvin to Celsius return Temp; // Devolver temperatura } boolean cargarConfig(){ if ((EEPROM.read(0) == 27) && (EEPROM.read(1) == 28) && (EEPROM.read(2) == 13) && (EEPROM.read(3) == 18)) { // Comprobamos que la eeprom tenga una // configuracion valida con numeros concretos // solo cargamos el valor de la configuracion si los valores coinciden if (EEPROM.read(4) == EEPROM.read(5)) consigna = EEPROM.read(4); if (EEPROM.read(6) == EEPROM.read(7)) tiempo = EEPROM.read(6); if (EEPROM.read(8) == EEPROM.read(9)) kp = EEPROM.read(8); if (EEPROM.read(10) == EEPROM.read(11)) kd = EEPROM.read(10); if (EEPROM.read(12) == EEPROM.read(13)) ki = EEPROM.read(12); if (EEPROM.read(14) == EEPROM.read(15)) intensidad = EEPROM.read(14); return true; } return false; } void guardarConfig(){ EEPROM.write(0,27); EEPROM.write(1,28); EEPROM.write(2,13); EEPROM.write(3,18); // Ponemos nmeros concretos en el comienzo // de la EEPROM para confirmar que tiene valores correctos. EEPROM.write(4,consigna); EEPROM.write(5,consigna); // almacenamos los valores 2 veces EEPROM.write(6,tiempo); EEPROM.write(7,tiempo); // almacenamos los valores 2 veces EEPROM.write(8,kp); EEPROM.write(9,kp); // almacenamos los valores 2 veces EEPROM.write(10,kd); EEPROM.write(11,kd); // almacenamos los valores 2 veces EEPROM.write(12,ki);
  • 30. EEPROM.write(13,ki); // almacenamos los valores 2 veces EEPROM.write(14,intensidad); EEPROM.write(15,intensidad); // almacenamos los valores 2 veces } FUNCIONAMIENTO-ESTE PROYECTO PUEDE CALCULAR LA TEMPERATURA EN EL AMBIENTE CONCLUSION-QUE LA PERSONA PUEDA DETECTAR LA TEMPERATURA DEL AMBIENTE Y QUE SEPA CUAL ES FUENTE- http://rcmcomputointegrado.blogspot.mx/2012/05/proyecto-arduino- sensor-de-temperatura.html RELEVADOR OBJETIVO-QUE LA PERSONA APRENDA A USAR EL CONPONENTE Y LO PUEDA CREAR CUANDO EL QUIERA PARA CUAL QUIER PROPOCITO EN ESTE TRABAJO PODREMOS OPSERVAR COMO UTILIZAR EL SENSOR DE TEMPERATURA Y HACER SU CONFIGURACION MATERIALES- ARDUINO UNO,RELEVADOR,PROPODUARD,PUENTES,LEDSY PILA DE 9 VOLTS
  • 31. CODIGO- int RELAY = 2; void Set up() { pinMode(RELAY,OUTPUT); } void loop(){ digitalwrite(Relay,HIGH); delay(2000); digitalwrite(Relay,LOW); delay(2000); }
  • 32. FUNCIONAMIENTO- EN ESTE PROYECTO PODREMOS OPSERVAR EL FUNCIONAMIENTO DE EL RELEVADOR ES EL QUE TRANSFORMA LA ENERGIA PARA TRANSMITIRLA ATODOS CONCLUSION- ES ESTE PROYECTO PUDE OBSERVAR PARA QUE SIRVE UN RELEVADOR Y LOS TANTOS USOS QUE TIENE FUENTE-AMIGOS MITICOS MOTOR A PASOS OBJETIVO-QUE LA PERSONA APRENDA A USAR EL CONPONENTE Y LO PUEDA CREAR CUANDO EL QUIERA PARA CUAL QUIER PROPOCITO EN ESTE TRABAJO PODREMOS OPSERVAR COMO UTILIZAR EL SENSOR DE TEMPERATURA Y HACER SU CONFIGURACION MATERIALES- -Arduino -Servomotor/es (En este caso he usado un servomotor miniaturizado, por su reducido consumo de energía, apto para arduino) -Cables M/M para conexión fácil, fiable y flexible entre Arduino, ProtoBoard y Servo, aunque recomiendo coger el pack de 100, por un precio asequible y no tener que andar estirando nunca más (Pack de 100 cables Premium M/M) -Placa de protipado (Si no se dispone ya de una)
  • 33. CODIGO- 1. #include <Servo.h> 2. 3. Servo servo1; // Crea un Objeto servo 4. int posicion; // Variable de la posicion del servo 5. 6. void setup() 7. { 8. servo1.attach(2); // Selecionamos el pin 2 como el pin de control para els ervo 9. } 10. 11. void loop() 12. { 13. 14. posicion = 150; // Establecemos el valor de la posicion a 150º 15. posicion = map(posicion, 0, 1023, 0, 179); // Establecemos la relacion en tre los grados de giro y el PWM 16. /* Con el mapa de valores anterior establecemos una relacin proporciona l */ 17. /* entre el pulso minimo 0 con el grado minimo, 0 tambien y el pulso ma ximo*/ 18. /* 1023 con el grado maximo, 179*/ 19. servo1.write(posicion); // Escribimos la posicion con el mapa de valores al servo 20. delay(150); // Y le damos un tiempo para que sea capaz de moverse
  • 34. 21. } FUNCION- AL INSERTAR EL CODIGO Y CARGAR ESTE SE MOVERA EN 180 GRADOS Y NO MAS LENTO O RAPIDO DEPENDIENDO DE COMO LO DESEES CONCLUSION- ESTE PROYECTO PUEDE SER MUY YAMATIVO YAQUE CON EL MOTOR A PASOS PUEDES CREAR DIFERENTES COSAS COMO UN CARRO O UNA MANO MECANICA. FUENTE- http://diymakers.es/mover-motores-paso-paso-con-arduino/
  • 35. GRACIAS POR SU ATENCION Y ESPERO QUE EL TRABAJO LES SEA DE AYUDA