You are on page 1of 11

Martes, 18 de Junio del 2019

Curso: Programación

Profesor: Ing Carlos Moreno

Tipo de Informe: Proyecto carro bombero.

Integrantes:

 Juan Manuel Castillo Aquino 18190215


 Gerson Paul Asmat Sosa 18190123
 Fabrizzio Xavier Rivera Mego 18190181
 Ronaldinho Huanuco Baltazar 18190140

Ciclo: 2019
Dev-C++
Antes de definir el Dev-C++, es necesario tener una
pequeña noción sobre el lenguaje en C++.

C++ es como la evolución del lenguaje C. La intención de


su creación fue el extender al exitoso lenguaje de
programación C con mecanismos que permitan la
manipulación de objetos. En ese sentido, desde el punto
de vista de los lenguajes orientados a objetos, el C++ es
un lenguaje híbrido.

Ahora bien, Dev-C++ es un IDE (Entorno de


desarrollo) para crear aplicaciones utilizando el lenguaje de programación C++ ideal para
crear programas pequeños en las que solo sea necesario demostrar el uso de estructuras
de control y estructuras de datos, estas aplicaciones se pueden compilar rápidamente y
ejecutar en forma de consola.

Además, Dev-C++ viene incluido con múltiples librerías y ficheros de ejemplo que permiten
codificar un algoritmo. En su instalación nos permite elegir múltiples idiomas (incluido el
español), incluye también explorador de clases y variables, plantillas, facilidad para instalar
librerías adicionales, etc.

Por consiguiente Dev-C++ es un compilador y entorno de desarrollo para C/C++ que


consiste en un editor de múltiples ventanas que integran un compilador, un enlace y una
ejecución que permite realizar aplicaciones sencillos y de fácil uso para cualquier persona
hasta aplicaciones complejas como la orientación a objetos.

Características

 Uso del compilador MinGW (Minimalist GNU for Windows).

 Práctico editor de código con coloreado de sintaxis, opciones de búsqueda,


reemplazar,

 Gran cantidad de opciones de configuración para personalizar el compilador, el


entorno o el propio editor.

 Inserción de marcadores y puntos de ruptura.

 Uso de atajos de teclado.

 Posibilidad de añadir, editar o eliminar herramientas.

 Selección de diferentes temas para la interfaz.


Ventajas

 Es de adquisición gratuita.

 Es fácil de descargar.

 Permite importar los proyectos realizados anteriormente en MS Visual C++.

 Se puede exportar código fuente o proyectos a HTML o RTF para subir códigos
a páginas Web y compartirlos.

 Es un editor muy completo.

 Tiene multitud de utilidades en paralelo.

 Incluye bibliotecas, librerías DLL y plantillas.

 Tiene incorporado ayuda en varios idiomas.

Desventajas.

 Es más pesado que otros programas similares.


Puerto paralelo
Definimos puerto paralelo a la conexión que permite el traspaso de datos que circulan
simultáneamente en un cable de forma bidireccional, permitiendo el traspaso de
información.

Lo que permite el puerto paralelo, en definitiva, es el intercambio simultáneo de paquetes


de bits a través de diferentes hilos. Cada puerto paralelo puede servir para enviar hasta 8
bits de forma simultánea, por 8 hilos distintos.

El puerto paralelo se encuentra en la parte posterior de las computadoras, se le reconoce


como una ranura de 25-pines (tipo DB-25) que sirve para conectar un dispositivo externo,
como una impresora. Paralelo significa que el dispositivo es capaz de recibir más de un bit
a la vez, es decir, que recibe varios bits en paralelo.

Físicamente podemos decir que el puerto paralelo de un PC se conecta al exterior del


mismo mediante la utilización de un conector hembra llamado DB25, que se compone de
los siguientes elementos:

-Líneas de tierra.
-8 pines de datos.
-5 líneas de estado.
-4 líneas de control.

Con el paso del tiempo, el avance de la tecnología ha permitido un crecimiento en la


velocidad de los puertos paralelos. Los primeros puertos paralelos funcionaban a una
velocidad de 2,4 megabytes por segundo. Sin embargo, ahora existen dos tipos de puertos
paralelos mucho más veloces:

-EPP (Puerto Paralelo Mejorado), que tiene la capacidad de alcanzar velocidades


comprendidas entre los 8 y los 16 megabytes por segundo.
-ECP (Puerto de Capacidad Mejorada). Este ha sido desarrollado por el trabajo en común
de dos importantes empresas, como son Microsoft y Hewlett Packard. Puede lograr las
mismas velocidades de funcionamiento que el anterior, pero tiene un matiz que le hace
diferente: un sistema gracias al cual de manera inmediata puede reconocer uno o varios
periféricos que se conecten.

La posibilidad de intercambiar información bidireccionalmente mediante diferentes hilos es


lo que distingue a los puertos paralelos de los puertos seriales o puertos series, que
permiten circular la información por un único hilo.

Además de todo esto, del puerto paralelo se pueden destacar otras señas de identidad:
-Dispone de una dirección de entrada / salida.
-El estándar posee tres registros de 8 bits, de datos, control y estado.
-Existe el puerto paralelo IDE, que se usa para conectar discos duros, grabadoras de CD,
etc.
-También está el puerto paralelo SCSI, que se emplea en los ordenadores de la firma Apple.

Los puertos paralelos podrían ser divididos en tres tipos:

 Puerto paralelo estándar (SPP)

-Unidireccional (4bits).

-Bidireccional (8 bits).

 Puerto paralelo mejorado (EPP)

 Puerto paralelo con compatibilidad extendida (ECP)


Puertos SPP (Puerto paralelo estándar)

Unidireccional:
La especificación original para el puerto paralelo era unidireccional, esto quiere decir que la
información solamente puede viajar en una dirección por cada pin.

El único puerto paralelo disponible en la IBM-PC original era usado para enviar información
de la computadora a un dispositivo, tal como la impresora. Su uso primario era enviar datos
a la impresora más no viceversa. Los puertos unidireccionales son capaces de transmitir
velocidades de aproximadamente 40-60 Kbytes por segundo.

Bidireccional:

Con la introducción del PS/2 en 1987, IBM ofreció un nuevo diseño de puerto paralelo
bidireccional. Este modo es comúnmente conocido como puerto paralelo bidireccional,
conocido como SPP (Standard Parallel Port) y ha reemplazado completamente el diseño
original.
Las comunicaciones bidireccionales permiten a cada dispositivo recibir y transmitir datos
por igual. Muchos dispositivos usan los pines del 2 al 9, originalmente diseñados para el
envío de datos. Pero los pines del 18 al 25, utilizados para tierra, pueden ser usados
también para datos. Esto permite una comunicación full-duplex (ambas direcciones a la
vez). Los puertos bidireccionales son capaces de transmitir velocidades entre los 80 y 300
Kbytes / Seg.

Puertos EPP (Puerto paralelo mejorado)


Los puertos paralelos mejorados EPP (Enhanced Parallel Port), fueron creados en 1991
por Intel, Xircom y Zenith, y permiten la transferencia de muchos más datos por segundo.
Fueron diseñados específicamente para dispositivos que no fueran impresoras que
querían ser conectados al puerto paralelo, usualmente equipos de almacenamiento que
necesitaban una mayor tasa de transferencia de datos. Su velocidad de transferencia está
entre 1 y 2 Mbytes / seg.

Puertos ECP (Puerto paralelo compatibilidad extendida)


Casi al mismo tiempo de la introducción de los puertos EPP, Microsoft y Hewlett Packard
anuncian en conjunto una nueva especificación en 1992, llamada ECP (Extended
Capabilities Port). Mientras que EPP estaba orientado a otros dispositivos, ECP fue
diseñado para proveer una mejor funcionalidad y velocidad a las impresoras.
Materiales:

 Puerto paralelo.
 Jumpers.
 Motor dc.
 Silicona.
 Llantas de juguete.
 Puente h L29H.
 Bomba de agua.
 Micro switch.
 Manguera de jeve.

Gráficos para la construcción del carro bombero:

Diseño del carro bombero

Diseño del bombero y su escalera


PROGRAMACION – R2D2- EN DEV C++

1. #include <iostream>
2. #include <stdio.h>
3. #include <conio.h>
4. #include <windows.h>
5. using namespace std;
6.
7. typedef short _stdcall (*inpfuncPtr)(short portaddr);
8. typedef void _stdcall (*oupfuncPtr)(short portaddr, short datu
m);
9. int idx=0;
10. int valport=0;
11. char cmd_act=0;
12. short currentVal = 0x00;
13.
14. #define HIGH 1
15. #define LOW 0
16.
17. void setDataBit(short index, short value) {
18. switch(index){
19. case 0:
20. if (value==0)
// Set Data[0] to 0
21. currentVal = (short) (currentVal &
0xFE);
22.
// aaaa aaaa currentVal
23.
// AND 1111 1110 mask
24.
// =========
25.
// aaaa aaa0 new currentVal
26. else
// Set Data[0] to 1
27. currentVal = (short) (currentVal |
0x01);
28.
// aaaa aaaa currentVal
29.
// OR 0000 0001 mask
30.
// =========
31.
// aaaa aaa1 new currentVal
32. break;
33.
34. case 1:
35. if (value==0) currentVal = (short) (currentVal
& 0xFD); // currentVal = aaaa aa0a
36. else
37. currentVal = (short) (currentVal
| 0x02); // currentVal = aaaa aa1a
38. break;
39.
40. case 2:
41. if (value==0) currentVal = (short) (currentVal
& 0xFB); // currentVal = aaaa a0aa
42. else currentVal = (short) (currentVal
| 0x04); // currentVal = aaaa a1aa
43. break;
44.
45. case 3:
46. if (value==0) currentVal = (short) (currentVal
& 0xF7); // currentVal = aaaa 0aaa
47. else currentVal = (short) (currentVal
| 0x08); // currentVal = aaaa 1aaa
48. break;
49.
50. case 4:
51. if (value==0) currentVal = (short) (currentVal
& 0xEF); // currentVal = aaa0 aaaa
52. else currentVal = (short) (currentVal
| 0x10); // currentVal = aaa1 aaaa
53. break;
54.
55. case 5:
56. if (value==0) currentVal = (short) (currentVal
& 0xDF); // currentVal = aa0a aaaa
57. else currentVal = (short) (currentVal
| 0x20); // currentVal = aa1a aaaa
58. break;
59.
60. case 6:
61. if (value==0) currentVal = (short) (currentVal
& 0xBF); // currentVal = a0aa aaaa
62. else currentVal = (short) (currentVal
| 0x40); // currentVal = a1aa aaaa
63. break;
64.
65. case 7:
66. if (value==0) currentVal = (short) (currentVal
& 0x7F); // currentVal = 0aaa aaaa
67. else currentVal = (short) (currentVal
| 0x80); // currentVal = 1aaa aaaa
68. break;
69.
70. default:
71. break;
72. }
73. }
74. void apAg(){
75. setDataBit(4,LOW); setDataBit(5,LOW);
76. }
77. void apCar(){
78. setDataBit(0,LOW); setDataBit(1,LOW);
79. setDataBit(2,LOW); setDataBit(3,LOW);
80. }
81. int main(void){
82.
83. HINSTANCE hLib;
84. inpfuncPtr inp32;
85. oupfuncPtr oup32;
86. printf("CARRO BOMBERO\n");
87. hLib = LoadLibrary("inpout32.dll");
88.
89. if (hLib == NULL) {
90. printf("LoadLibrary Failed.\n");
91. return -1;
92. }
93.
94. oup32 = (oupfuncPtr) GetProcAddress(hLib, "Out32");
95.
96. if (oup32 == NULL) {
97. printf("GetProcAddress for Oup32 Failed.\n");
98. return -1;
99. }
100. (oup32)(0x378,1); (oup32)(0x37A,0);
101. apCar(); (oup32)(0x378,currentVal);
102. while(1){
103. printf("\nDigite Comando: ");
104. cmd_act=getch();
105. printf("%c\n",cmd_act);
106. printf("Procesando comando\n");
107. if(cmd_act=='a'){ setDataBit(0,HIGH); setData
Bit(1,LOW);apAg();
108. setDataBit(2,HIGH); setData
Bit(3,LOW);(oup32)(0x378,currentVal);}//delante
109.
110. else if(cmd_act=='b'){ setDataBit(0,LOW); setDataB
it(1,HIGH);apAg();
111. setDataBit(2,LOW); setDataB
it(3,HIGH);(oup32)(0x378,currentVal);}//atras
112.
113. else if(cmd_act=='c'){ setDataBit(0,LOW); setDataB
it(1,HIGH);apAg();
114. setDataBit(2,HIGH); setData
Bit(3,LOW);(oup32)(0x378,currentVal);}//izquierda
115.
116. else if(cmd_act=='d'){ setDataBit(0,HIGH); setData
Bit(1,LOW);apAg();
117. setDataBit(2,LOW); setDataB
it(3,HIGH);(oup32)(0x378,currentVal);}//derecha
118.
119. else if(cmd_act=='e'){ setDataBit(4,HIGH); setData
Bit(5,LOW); apCar(); (oup32)(0x378,currentVal);} //Sacar
agua
120. else if(cmd_act=='f'){ setDataBit(4,LOW); setDataB
it(5,HIGH); apCar(); (oup32)(0x378,currentVal);} // Sonar
la sirena
121. else if(cmd_act=='g'){ setDataBit(6,HIGH); setData
Bit(7,LOW); apCar();apAg(); (oup32)(0x378,currentVal);} //
escalera sale
122. else if(cmd_act=='h'){ setDataBit(6,LOW); setData
Bit(7,HIGH);apCar();apAg(); (oup32)(0x378,currentVal);} //
escalera vuelve a su lugar
123. else if(cmd_act=='i'){ (oup32)(0x37A,1); apCar();apA
g(); (oup32)(0x378,currentVal);} //
124. else if(cmd_act=='j'){ (oup32)(0x37A,2); apCar();apA
g(); (oup32)(0x378,currentVal);} //
125. else if(cmd_act=='s'){ (oup32)(0x378,0); (oup32)(0x37
A,0);}
126. else if(cmd_act=='x'){ (oup32)(0x378,0); (oup32)(
0x37A,0); FreeLibrary(hLib); return 0;}
127.
128. else{printf("comando incorrecto\n"); }
129. }
130.
131. FreeLibrary(hLib);
132. return 0;
133.
134. }
135.