Bueno, en vista de que ya tengo el programa en mi poder y así como los circuitos, simplemente voy a dejarles los archivos con las cosas necesarias.
Acá el apunte de los circuitos:
https://mega.nz/#!694RnQ6R!qWZPC8xzSQwp9Lj870W4qShS-DBzk9stBCRKRt4QIXc
y acá les dejo el programa del arduino:
https://mega.nz/#!H9JTCC4I!sNSEIdr-0s4SZ7f3xD1z_HjMIeaiBgR1BWE3e-Jup6I
Mostrando las entradas con la etiqueta variacion. Mostrar todas las entradas
Mostrando las entradas con la etiqueta variacion. Mostrar todas las entradas
viernes, 28 de agosto de 2015
miércoles, 19 de agosto de 2015
Proyecto: Sonómetro libre gigante (2)
Bueno, nuevamente les traigo el proyecto del sonómetro libre gigante, tengo más fotos y los circuitos.
Bueno, acá van las fotos:
Bueno, acá van las fotos:
Como se puede obvservar, hay distintos módulos (display, control de potencia, tratamiento analógico de la señal y el arduino que se encarga de hacer el muestreo en el display y unos cálculos).
Acá les dejo un link de todos los circuitos necesarios y en algunos días les dejo el programa:
domingo, 16 de agosto de 2015
¿Sonar?
Bueno, luego de hacer las publicaciones del medidor de distancia por ultrasonido, del servo y de la pantalla, se me ocurrió realizar un radar. En el título lo puse entre signos de pregunta, porque no sé hasta que punto es factible realizarlo, pero si es necesario lo vamos a realizar en 2 o 3 publicaciones.
No es un proyecto propiamente dicho porque no va a tener utilidad. Quizá se pregunten ¿porqué?, bueno la razón o razones son sencillas:
1) Tiene un alcance ridículamente limitado (en las publicación del ultrasonido pude ver que tenía un máximo de 2 metros aproximadamente)
2) Los tiempos van a ser cruciales, por lo que parecería que no se va a poder mostrar en tiempo real el objeto.
Pero a pesar de esas cosas voy a desarrollarlo por "amor al arte" y ver que sale, quizá se pueda conseguir algo interesante.
Entonces, para empezar, voy a reciclar código (como no podía ser de otra forma) de la publicación del servo, de la pantalla y del ultrasonido.
La idea sería mostrar en la pantalla los puntos que se consideran que bloqueen la "vista" del ultrasonido.
Sin más, les dejo el código:
No es un proyecto propiamente dicho porque no va a tener utilidad. Quizá se pregunten ¿porqué?, bueno la razón o razones son sencillas:
1) Tiene un alcance ridículamente limitado (en las publicación del ultrasonido pude ver que tenía un máximo de 2 metros aproximadamente)
2) Los tiempos van a ser cruciales, por lo que parecería que no se va a poder mostrar en tiempo real el objeto.
Pero a pesar de esas cosas voy a desarrollarlo por "amor al arte" y ver que sale, quizá se pueda conseguir algo interesante.
Entonces, para empezar, voy a reciclar código (como no podía ser de otra forma) de la publicación del servo, de la pantalla y del ultrasonido.
La idea sería mostrar en la pantalla los puntos que se consideran que bloqueen la "vista" del ultrasonido.
Sin más, les dejo el código:
//pantalla #include <Adafruit_GFX.h> // Core graphics library #include "SWTFT.h" // Hardware-specific library //algunos colores #define negro 0x0000 #define azul 0x001F #define rojo 0xF800 #define verde 0x07E0 #define cyan 0x07FF #define magenta 0xF81F #define amarillo 0xFFE0 #define blanco 0xFFFF //de la pantalla SWTFT tft; //para el touch #include <stdint.h> #include "TouchScreen.h" //declaraciones para el touch #define YP A1 // must be an analog pin, use "An" notation! #define XM A2 // must be an analog pin, use "An" notation! #define YM 7 // can be a digital pin #define XP 6 // can be a digital pin #define MINPRESSURE 10 #define MAXPRESSURE 1000 TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300); //servo #include <SoftwareServo.h> SoftwareServo servo1; //ultrasonido #define trigPin 32 #define echoPin 34 int x = 0, y = 0, x1 = 0, y1 = 0, check = 1; long distancia; void setup() { servo1.attach(30); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); tft.reset(); tft.begin(); tft.fillScreen(negro); tft.setRotation(3); tft.fillCircle(50, 50, 10, blanco); Serial.begin(9800); } void loop() { tft.fillScreen(negro); for (int val = 0; val <= 180; val++) { servo1.write(val); ultrasonido(); //obtenemos la distancia hasta el objeto tft.fillCircle((160-(distancia*cos(val))), (240-((distancia*sin(val))/2)), 2, blanco); //ubicamos el cursor en el medio abajo SoftwareServo::refresh(); //y situamos el punto donde esté el objeto } tft.fillScreen(negro); for (int val = 180; val >= 0; val--) { servo1.write(val); ultrasonido(); //obtenemos la distancia hasta el objeto tft.fillCircle((160-(distancia*cos(val))), (240-((distancia*sin(val))/2)), 2, blanco); //ubicamos el cursor en el medio abajo SoftwareServo::refresh(); //y situamos el punto donde esté el objeto } } void ultrasonido() { long duracion; a:; digitalWrite(trigPin, LOW); delayMicroseconds(5); digitalWrite(trigPin, HIGH); delayMicroseconds(15); digitalWrite(trigPin, LOW); duracion = pulseIn(echoPin, HIGH); SoftwareServo::refresh(); distancia = (duracion/2) / 29.1; if (distancia > 450) { goto a; //si el objeto está muy lejos volvemos a } //buscar el valor Serial.println(distancia); }
lunes, 10 de agosto de 2015
Proyecto: Sonómetro libre gigante (1)
Hoy les traigo un proyecto que realicé con otros estudiantes de la facultad FCEIA, más específicamente con el grupo GEII (Grupo de Experimentación Innovativa e Instrumental, por sus siglas en español).
![]() |
en su etapa final, haciendo las últimas pruebas antes de cerrar la caja. En esta etapa solo queda encender el dBA y calibrarlo (que se hace una vez cerrada la caja) |
Se trata de un sonómetro gigante que nos pidieron para medir el sonido de la calle. Consta de una plaqueta con varios circuitos (pre amplificador, amplificador, autorango y un verdadero valor eficaz), un arduino y un equipo de potencia. La plaqueta con los distintos circuitos, se encarga de preparar la señal y convertirla al verdadero valor eficaz para que el arduino (es un arduino UNO) lea el valor analógico y lo convierta a decibeles. Una vez convertido y procesado ese valor va al display (que consta de tiras de led simulando un 7 segmentos gigante). El consumo aproximado del display es de 3 a 4 amperes, por lo que ahí entra en juego la parte de potencia.
En otra entrada (cuando vuelva al GEII, porque ahora está en el receso de invierno) pondré algunos datos más, como los circuitos y el programa, así como algunas fotos y algún video.
En otra entrada (cuando vuelva al GEII, porque ahora está en el receso de invierno) pondré algunos datos más, como los circuitos y el programa, así como algunas fotos y algún video.
sábado, 1 de agosto de 2015
Prueba led variante
Hoy les traigo un programa sencillo que puede llegar a ser útil para ver distintas intensidades de un led, sin usar el pwm (de esta forma se puede obtener mayor resolución) el problema es que consume todo el tiempo de procesamiento.
unsigned long tiempo; int t = 12, g=0, h=6; void setup() { pinMode(9, OUTPUT); // Selecciono el pin 9 como salida } void loop() { tiempo = millis()+1000; // guardo la cantidad de milisegundos // que va a haber dentro de 1 segundo while (tiempo > millis()) { // digitalWrite(9, HIGH); // prendo el led delay(t - g); // durante un tiempo (t - g) digitalWrite(9, LOW); // apago el led delay(g); // durante un tiempo g } tiempo = millis()+1000; // // while (tiempo > millis()) { // digitalWrite(9, HIGH); // hago lo mismo que arriba, pero con delay(h); // h como variable en lugar de g digitalWrite(9, LOW); // delay(t-h); // } }
Suscribirse a:
Entradas (Atom)