martes, 10 de diciembre de 2013

proyecto de programacion




PROGRAMACIÓN ESTRUCTURADA


Sensor de temperatura





Programación estructurada

Alumno: Terrazas Flores Omar Antonio.

Profesora: Ángela Colunga.

Materia: Programación Estructurada.

Proyecto: sensor de temperatura.

Fecha: 10 de diciembre del 2013







Introducción
Los sensores de temperatura son dispositivos que transforman los cambios de temperatura en cambios en señales eléctricas que son procesados por equipo eléctrico o electrónico.
El sensor de temperatura es un proyecto interesante, basado en un circuito electrónico con su base fuente el arduino, y el sensor de temperatura colocados sobre una placa con base metálica llamada Protoboard la cual conduce electricidad.
 El proyecto puede parecer sencillo pero en la parte de la programación, para los principiantes en esta rama de la electrónica, puede ser un poco complejo.
Le invitamos para que observe las características de este Circuito y sus beneficios para quienes lo utilizan.





Justificación
El proyecto electrónico fue pensado en ayudar a los aparatos electrónicos que deben mantener una temperatura ambiente y que en ocasiones comienzan a tomar temperaturas que no son normales o dañan al circuito, esperando tener una mayor duración del aparato donde se está ejecutando este circuito.




Objetivo
Nuestro objetivo es que el cliente, persona, que aplique este proyecto en su instrumento electrónico o cualquier otra cosa que necesite una temperatura ambiente o una temperatura no muy elevada, el circuito pueda regular la temperatura y con esto ayudándole a alargar la vida de su instrumento para ahorrarle un mayor gasto y que la persona este conforme cumpliendo con lo que el cliente desea.


Marco teórico
      Nuestra teoría es, que todo flujo de corriente eléctrica en un circuito genera calor, por lo tanto, necesitamos un proyecto el cual nos ayude a regular la temperatura cuando la calor generada se ha incrementado demasiado.
      En conclusión de la investigación realizada, la mayoría de los aparatos electrónicos debido al flujo de corriente eléctrica, necesitan un controlador regulador de temperatura.


Desarrollo del proyecto
      a) Análisis de datos
Primero conectamos el circuito y hacemos la programación que a continuación se nos indica, Una vez armado y programado el circuito vamos a calentar el sensor con un encendedor,
el cual ira subiendo la temperatura. El sensor cuenta con varios led de diferentes colores los cuales se irán encendiendo conforme valla subiendo la temperatura. El primer led es color verde y permanecerá encendido mientras la temperatura no sube de 15gc.
 El segundo led es amarillo y encenderá a partir de los 17gc.
El tercer y cuarto led son rojos y encenderán a partir de los 25gc y 30gc.
 Cuando encienda el 4to led sonara una alarma la cual a sido insertada en serie con el led.
Una vez que dejemos de calentar el circuito conforme valla bajando la temperatura los led se irán apagando uno por uno.
 

b) Solución del proyecto
      Alargar la vida del aparato donde se aplicara.
      Ahorrar dinero.
      Un uso en horas más alargado del equipo que se está utilizando.



c) Codificación
#define L1 13     // Led verde
#define L2 12     // Led verde
#define L3 11     // Led amarillo
#define L4 10     // Led rojo
#define L5 9      // Led rojo
#define sensor_temp 0   // Sensor de temperatura conectado a pin A0 de Arduino (analogico)
int temperatura = 0;        // Variable para almacenar la temperatura en grados
int valor_sensor = 0;       // Variable para almacenar el valor crudo del sensor de temperatura
                                       // (de 0 - 1024)
void setup() {
  Serial.begin(9600);     // Empezar comunicacion serie con la computadora
  // Seteamos puertos como salida para leds + entrada para el sensor de temperatura
  pinMode(L1,OUTPUT);
  pinMode(L2,OUTPUT);
  pinMode(L3,OUTPUT);
  pinMode(L4,OUTPUT);
  pinMode(L5,OUTPUT);
  pinMode(sensor_temp,INPUT);
}
void loop ()
{
  valor_sensor = analogRead(sensor_temp);      // Leer el calor del sensor (valor de 0 a 1024)
  temperatura = (5.0 * valor_sensor * 100.0)/1024.0;  // Calcular temperatura en C con formula
  Serial.print(temperatura);   // Mandar temperatura a la laptop
  Serial.println("C");                 // Mandar el simbolo de grados y pasar a la siguiente linea
  delay(300);                         // Espera 5 segundos antes de empezar de nuevo
 

                                        // proporcional a la intesidad de luz obtenida anteriormente
  if (temperatura <= 17)  // si la temperatura es  menor o igual a 17  se encendera el L1
  {
    digitalWrite (L1, HIGH);
    digitalWrite (L2, LOW);
    digitalWrite (L3, LOW);
    digitalWrite (L4, LOW);
    digitalWrite (L5, LOW);
  }
 
if (temperatura > 17 && temperatura <= 21) // si la temperatura es mayor y menor o igual a 21 se encendera el L1 +L2
  {
    digitalWrite (L1, HIGH);
    digitalWrite (L2, HIGH);
    digitalWrite (L3, LOW);
    digitalWrite (L4, LOW);
    digitalWrite (L5, LOW);
  }
 
  if (temperatura > 21 && temperatura <= 25) // Si la temperatura es mayor y menor o igual a 25 se encendera el L1+L2+L3
  {
    digitalWrite (L1, HIGH);
    digitalWrite (L2, HIGH);
    digitalWrite (L3, HIGH);
    digitalWrite (L4, LOW);
    digitalWrite (L5, LOW);
  }
 
  if (temperatura > 25 && temperatura <= 29) // si la temperatura es mayor y menor o igual a 29 se encendera L1+L2+L3+L4
  {
    digitalWrite (L1, HIGH);
    digitalWrite (L2, HIGH);
    digitalWrite (L3, HIGH);
    digitalWrite (L4, HIGH);
    digitalWrite (L5, LOW);
  }
 
  if (temperatura > 29 && temperatura <= 33) // si la temperatura es mayor y menor a 33 se encenderan  L1+L2+L3+L4+L5
  {
    digitalWrite (L1, HIGH);
    digitalWrite (L2, HIGH);
    digitalWrite (L3, HIGH);
    digitalWrite (L4, HIGH);
    digitalWrite (L5, HIGH);
  }

}

d) Ejecución del programa
El programador debe introducir el código de programación, después verificar el código y cargarlo a la placa.
Está es una imagen del programa al cargar.



Manual de programación
Para realizar los siguientes pasos de programación debemos descargar el programa arduino uno de la página oficial anteriormente dada.
      Paso 1 : declaramos las entradas que estaremos utilizando y las salidas de los puertos para los led y el sensor de temperatura:
#define L1 13     // Led verde
#define L2 12     // Led verde
#define L3 11     // Led amarillo
#define L4 10     // Led rojo
#define L5 9      // Led rojo
#define sensor_temp 0  
int temperatura = 0; int valor_sensor = 0;
      Paso 2:
      Declaramos la fórmula de la temperatura: temperatura = (5.0 * valor_sensor * 100.0)/1024.0;
      La del sensor: valor_sensor = analogRead(sensor_temp);
      Paso 3 :
      Declaramos a que temperatura queremos que se enciendan los led.

      Paso 4: verificamos y cargamos el programa al arduino.




Manual de armado de circuito
La siguiente imagen muestra cómo debemos conectar el circuito al arduino y al Protoboard.

Conclusión
El circuito se puede aplicar en infinidad de aparatos electrónicos, videojuegos, computadoras, en la calefacción del hogar, en el automóvil, etc…, Por ello nos deja claro que es muy útil y de vital importancia en los  aparatos electrónicos, ya que nos brinda beneficios materiales y sobre todo económicos, además nos resulta practico y accesible ya que los podemos encontrar en cualquier electrónica de componentes. Con esto podemos constar que el cliente quedara satisfecho con este producto.
Glosario
  Arduino uno: Arduino es una plataforma de hardware libre, basada en una placa con un microcontrolador y un entorno de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos multidisciplinares.
      Componentes electrónicos.
      Sensor lm35: El LM35 es un sensor de temperatura integrado de precisión, cuya tensión de salida es linealmente proporcional a temperatura en C (grados centígrados).
      Protoboard:  es un tablero con orificios conectados eléctricamente entre sí, habitualmente siguiendo patrones de líneas, en el cual se pueden insertar componentes electrónicos y cables para el armado y prototipo de circuitos electrónicos y sistemas similares.
      Computadora.
      El programa utilizado para la programación de este circuito se obtiene de la página oficial de arduino y es totalmente gratuito, pero debemos tener cuidado al descargar el programa correcto dependiendo de qué tipo de placa arduino tengamos en mano.
      Página oficial de descarga: http://arduino.cc/en/Main/Software

Protoboard: es un tablero con orificios conectados eléctricamente entre sí, habitualmente siguiendo patrones de líneas, en el cual se pueden insertar componentes electrónicos y cables para el armado y prototipo de circuitos electrónicos y sistemas similares
Hardware: son los dispositivos físicos como la placa base, la CPU o el monitor.
Micro-controladores: es un circuito integrado programable, capaz de ejecutar las órdenes grabadas en su memoria.

Bibliografía y referencias
La información del proyecto, circuito, imágenes, etc., fueron obtenidos de las siguientes páginas de internet.
Arduino1.0.5


jueves, 16 de mayo de 2013

EJERCICIO EN CLASE 16 MAYO 2013


//ejercicio en clase 16 de mayo del 2013
//villatoro hernandez omar 12211273
//barragan hernandez antonio 12211230
//terrazas flores omar antonio 12211831
#include <iostream.h>
#include <conio.h>
#include <fstream.h>
#include <stdio.h>
void salida_datos_file()
{
ofstream salida;
salida.open("C://Datos//nombres.txt",ios::app);
int i,n;
char name[30];
cout<<" Cuantos nombres desea almacenar: ";
cin>>n;
for(i=1;i<=n;i++)
{
   cout<<" Nombre = ";
 gets(name);
 salida<<name<<endl;
 }
 salida.close();
 }

void entrada_datos_file()
{
ifstream entrada;
entrada.open("C://Datos//nombres.txt");
 char name[30];
 cout<<"\nListado de nombre\n";
 entrada.getline(name,30);
 cout<<name<<endl;
 while(!entrada.eof())
 {
 entrada.getline(name,30);
 cout<<name<<endl;
 }
  entrada.close();
  }

int main()
{
char continuar;
  do
  {
  salida_datos_file();
    cout<<"\n\nDeseas registrar otro nombre (s/n) ==>";
    cin>>continuar;
  }
  while(continuar=='s' || continuar=='S');
  entrada_datos_file();
  getch();
  }





martes, 7 de mayo de 2013

PRACTICA NO.6 6 MAYO DEL 2013


/*Practica 6  07/05/13
Barragan Hernandez Antonio 12211230
Villatoro Hernandez Omar 12211273
Terrazas Flores Omar A. 12211831  */
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
template <class T>
void lecturaDatos(T a [10][10], int n, int m);
template <class T>
void desplegarDatos(T a [10][10], int n, int m);
template <class T>
void sumarArreglos(T a [10][10], T b[10][10], T c[10][10], int n, int m);
template <class T>
void multArreglos(T a [10][10], T b[10][10], T c[10][10], int n, int m);
int main ()
{
float primero [10][10], segundo [10][10], tercero [10][10], tercer[10][10];
lecturaDatos(primero,4,4);
cout<<endl<<endl;
lecturaDatos(segundo,4,4);
sumarArreglos(primero,segundo,tercero,4,4);
multArreglos(primero,segundo,tercer,4,4);
cout<<"\nLas matrices originales son\n\n";
cout<<"La matriz primero\n";
desplegarDatos(primero,4,4);
cout<<endl<<endl;
desplegarDatos(segundo,4,4);
cout<<"\nLa suma de los arreglos es\n\n";
desplegarDatos(tercero,4,4);
cout<<"\nLa multiplicacion de los arreglos es\n\n";
desplegarDatos(tercer,4,4);
getch();
}
template <class T>
void lecturaDatos(T a[10][10], int n, int m)
{
int r,c;
for(r=0;r<n;r++)
{
for(c=0;c<m;c++)
{
cout<<"numero["<<(r+1)<<" , "<<(c+1)<<" ]: ";
cin>>a[r][c];
}
}
}
template <class T>
void desplegarDatos(T a[10][10], int n, int m)
{
int r,c;
for(r=0;r<n;r++)
{
for(c=0;c<m;c++)
{
cout<<a[r][c]<<"\t";
}
cout<<endl;
}
}
template <class T>
void sumarArreglos(T a[10][10],T b[10][10],T c[10][10], int n, int m)
{
int r,c1;
for(r=0;r<n;r++)
{
for(c1=0;c1<m;c1++)
{
c[r][c1]=a[r][c1] + b[r][c1];
}
}
}
template <class T>
void multArreglos(T a[10][10],T b[10][10],T c[10][10], int n, int m)
{
int r,c1;
for(r=0;r<n;r++)
{
for(c1=0;c1<m;c1++)
{
c[r][c1]=a[r][c1] * b[r][c1];
}
}
}





/*Practica 6  07/05/13
Barragan Hernandez Antonio 12211230
Villatoro Hernandez Omar 12211273
Terrazas Flores Omar A. 12211831  */
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
template <class T>
void generarVal(T a [10][10], int n, int m);
template <class T>
void desplegarDatos(T a [10][10], int n, int m);
template <class T>
void datoMayor(T a[10][10],int n, int m, T &mayor, int & posr, int & posc);
int main ()
{
int valores[10][10], posRmayor=0, posCmayor=0, mayor=0;
generarVal(valores,5,5);
cout<<"Matriz Original de 5x5\n\n";
desplegarDatos(valores,5,5);
datoMayor(valores,5,5,mayor,posRmayor,posCmayor);
cout<<"\nEl dato mayor es "<<mayor<<endl;
cout<<"Renglon: "<<(posRmayor+1)<<" Columna: "<<(posCmayor+1)<<endl;
getch();
}
template <class T>
void generarVal(T a[10][10], int n, int m)
{
int r,c;
srand(time(NULL));
for(r=0;r<n;r++)
{
for(c=0;c<m;c++)
{
a[r][c]=rand()% 1000 +1 ;
}
}
}
template <class T>
void desplegarDatos(T a[10][10], int n, int m)
{
int r,c;
for(r=0;r<n;r++)
{
for(c=0;c<m;c++)
{
cout<<a[r][c]<<"\t";
}
cout<<endl;
}
}
template <class T>
void datoMayor(T a[10][10],T &mayor, int & posr, int posc, int n, int m)
{
int r,c;
mayor=a[0][0];
posr=0;
posc=0;
for(r=0;r<n;r++)
{
for(c=0;c<m;c++)
{
if(a[r][c]>mayor)
{
mayor=a[r][c];
posr=r;
posc=c;
}
}
}
}





//problema3 practica 6 9 mayo 2013
//villatoro hernandes omar 12211273
//barragan hernandez antonio 12211230
//terrazas flores omar antonio 12211831
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
 template <class T>
 void leerDatos( T a[10][10], int n, int m);
template <class T>
void generarVal(T a[10][10], int n, int m);
template <class T>
void desplegarDatos(T a[10][10],int n, int m);
template <class T>
void intercambioMatriz(T a[10][10],T b[10][10], int n, int m);
int main()
{
int a[10][10],b[10][10];
cout<<"Generando aleatoriamente los datos de la matriz A \n\n";
generarVal(a,4,4);
intercambioMatriz(a,b,4,4);
cout<<"\n\nMatriz A\n";
desplegarDatos(a,4,4);
cout<<"\n\n Matriz B\n";
desplegarDatos(b,4,4);

getch();
   }
template <class T>
 void leerDatos( T a[10][10], int n, int m)
 {
 int r,c;
 for(r=0;r<n;r++)
{
for(c=0;c<m;r++)
{
cout<<" Dato["<<(r+1)<<","<<(c+1)<<"]: ";
cin>>a(r)(c);
}
}
}

template <class T>
void generarVal(T a[10][10], int n, int m)
{
int r,c;
   srand(time(NULL));
for(r=0;r<n;r++)
{
for(c=0;c<m;c++)
{
a[r][c]=rand()% 10;
}
}
}
template <class T>
void desplegarDatos(T a[10][10], int n, int m)
{
   int r,c;

 for(r=0;r<n;r++)
 {
 for(c=0;c<m;c++)
 {
 cout<<a[r][c]<<"\t";
 }
 cout<<endl;
 }
 }
 template <class T>
 void intercambioMatriz(T a[10][10],T b[10][10], int n, int m)
 {
   int r,c;

 for(r=0;r<n;r++)
 {
 for(c=0;c<m;c++)
 {
 b[c][r]=a[r][c];
 }
 }
 }






//problema4 practica 6 9 mayo 2013
//villatoro hernandes omar 12211273
//barragan hernandez antonio 12211230
//terrazas flores omar antonio 12211831
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
 template <class T>
 void leerDatos( T a[10][10], int n, int m);
template <class T>
void generarVal(T a[10][10], int n, int m);
template <class T>
void desplegarDatos(T a[10][10],int n, int m);
template <class T>
T diagonalP(T a[10][10], int n, int m);
template <class T>
T diagonalInversa(T a[10][10], int n, int m);
template <class T>
void intercambioMatriz(T a[10][10],T b[10][10], int n, int m);
int main()
{
int a[10][10],b[10][10];
cout<<"Generando aleatoriamente los datos de la matriz A \n\n";
generarVal(a,5,5);
//intercambioMatriz(a,b,4,4);
cout<<"\n\nMatriz A\n";
desplegarDatos(a,5,5);
cout<<"\n\nLa suma de la diagonal principal : "<<diagonalP(a,5,5)<<endl;
cout<<"\n\nLa suma de la diagonal inversa : "<<diagonalInversa(a,5,5)<<endl;


getch();
   }
template <class T>
 void leerDatos( T a[10][10], int n, int m)
 {
 int r,c;
 for(r=0;r<n;r++)
{
for(c=0;c<m;r++)
{
cout<<" Dato["<<(r+1)<<","<<(c+1)<<"]: ";
cin>>a(r)(c);
}
}
}

template <class T>
void generarVal(T a[10][10], int n, int m)
{
int r,c;
   srand(time(NULL));
for(r=0;r<n;r++)
{
for(c=0;c<m;c++)
{
a[r][c]=rand()% 10;
}
}
}
template <class T>
void desplegarDatos(T a[10][10], int n, int m)
{
   int r,c;

 for(r=0;r<n;r++)
 {
 for(c=0;c<m;c++)
 {
 cout<<a[r][c]<<"\t";
 }
 cout<<endl;
 }
 }
 template <class T>
T diagonalP(T a[10][10], int n, int m)
{
int i;
T suma=0;
for(i=0;i<n;i++)
{
suma=suma+a[i][i];
}
return suma;
}
template <class T>
T diagonalInversa(T a[10][10], int n, int m)
{
int i,j=m-1;
T suma=0;
for(i=0;i<n;i++)
{
suma=suma+a[i][j];
j--;
}
return suma;
}
 template <class T>
 void intercambioMatriz(T a[10][10],T b[10][10], int n, int m)
 {
   int r,c;

 for(r=0;r<n;r++)
 {
 for(c=0;c<m;c++)
 {
 b[c][r]=a[r][c];
 }
 }
 }







//problema 5 practica 6 14 mayo 2013
//villatoro hernandez omar 12211273
//barragan hernandez antonio 12211230
//terrazas flores omar antonio 12211831
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>

void leerDatos(float a[3][4]);
void mostrarDatos(float a[3][4]);
void imprimirRangoV(float a[3][4], int &cm60,int &c60m70,int &c70m80,int &c80m90,int &c90);
int main()
{
float voltajes[3][4];
int c1=0,c2=0,c3=0,c4=0,c5=0;
leerDatos(voltajes);
cout<<"mostrar voltajes\n\n";
mostrarDatos(voltajes);
imprimirRangoV (voltajes,c1,c2,c3,c4,c5);
cout<<"cantidad de voltajes\n\n";
cout<<"menores a 60: "<<c1<<endl;
cout<<"moyores o iguales a 60 pero menor a 70 :"<<c2<<endl;
cout<<"moyores o iguales a 70 pero menor a 80 :"<<c3<<endl;
cout<<"moyores o iguales a 80 pero menor a 90 :"<<c4<<endl;
cout<<"moyores o iguales a 90 :"<<c5<<endl;
getch();
}
void leerDatos(float a[3][4])
{
int r,c;
cout<<"introduce los siguientes datos\n\n " ;
for(r=0;r<3;r++)
{
 for(c=0;c<4;c++)
 {
 cout<<"Voltaje[ "<<(r+1)<<" , "<<(c+1)<<"]: ";
 cin>>a[r][c];
 }
}
}
void mostrarDatos(float a[3][4])
{
int r,c;
for(r=0;r<3;r++)
{
 for(c=0;c<4;c++)
 {
  cout<<a[r][c]<<"\t";
  }
  cout<<endl;
  }
  }
void imprimirRangoV(float a[3][4], int &cm60,int &c60m70,int &c70m80,int &c80m90,int &c90)
{
 int r,c;
cm60=c60m70=c70m80=c80m90=c90=0;
for(r=0;r<3;r++)
{
 for(c=0;c<4;c++)
 {
 if(a[r][c] < 60)
 { cm60++;
 }
 else
{
  if(a[r][c] < 70)
  { c60m70++;
  }
  else
 {
    if(a[r][c] < 80)
    { c70m80++;
    }
  else
  {
    if(a[r][c] < 90)
     { c80m90++;
     }
    else
    {
     c90++;
    }
  }
 }
}
}
}
}







//problema 6 practica 6 14 mayo 2013
//villatoro hernandez omar 12211273
//barragan hernandez antonio 12211230
//terrazas flores omar antonio 12211831
#include <iostream.h>
#include <conio.h>

void leerDatos(int a[7][6], char nombresP[6][20]);
void mostrarDatos(int a[7][6], char nombresP[6][20]);
void TotalesP(int a[7][6]);

int main()
{
int prod[7][6];
char nPlantas[6][20];

leerDatos(prod,nPlantas);
TotalesP(prod);
cout<<"\n\nreporte semanal de productividad\n\n";
cout<<"planta dia 1  dia 2  dia 3  dia 4  dia 5  Total\n\n";
mostrarDatos(prod,nPlantas);
getch();
}
void leerDatos(int a[7][6], char nombresP[6][20])
{
int r,c;
for(r=0;r<6;r++)
{
cin.ignore();
cout<<"Nombre de la planta"<<(r+1)<<" : ";
cin.getline(nombresP[r],20,'\n');
 for(c=0;c<5;c++)
 {
 cout<<"Produccion dia "<<(c+1)<<" : ";
 cin>>a[r][c];
 }
 }
}
void mostrarDatos(int a[7][6], char nombresP[6][20])
{
 int r,c;
for(r=0;r<7;r++)
 {
cout<<nombresP[r]<<"\t";
  for(c=0;c<6;c++)
 {
 cout<<a[r][c]<<"\t";
 }
 cout<<endl;
 }
}
void TotalesP(int a[7][6])
{
 int r,c, suma=0;
 for(r=0;r<6;r++)
 {
suma=0;
for(c=0;c<5;c++)
 {
suma=suma+a[r][c];
 }
a[r][5]=suma;
 }
for(c=0;c<5;c++)
{
suma=0;
for(r=0;r<6;r++)
{
 suma=suma+a[r][c];
 }
 a[6][c]=suma;
 }

 suma=0;
 for(r=0;r<6;r++)
 {
 suma=suma+a[r][5];
 }
 a[6][5]=suma;
 }