Hacer un osciloscopio usando el SainSmart Mega2560 con la pantalla TFT LCD y el 3.5 "pantalla táctil del color (6 / 8 paso)

Paso 6: El osciloscopio

A continuación, encontrará el bosquejo para el osciloscopio. Antes de copiar y pegar el programa, vamos a revisar algunas limitaciones y explicar el programa.

He tenido que hacer una gran cantidad de investigación con el código, y muchos fragmentos han sido "prestados" de varias fuentes.

Divide el programa en varios subrutines para que sea más fácil de entender. El código está bien documentado, pero si tienes problemas para entenderlo, deje un comentario y yo voy a intentar explicarlo.

El ancho de banda del osciloscopio está limitada a aproximadamente 1 khz, pero hay margen de mejora.

La entrada es limitada a una forma de onda de pico a pico de 5 voltios, a menos que utilice un divisor del voltaje en la entrada y también limitada a formas de onda positivas de 0 a 5 voltios.

He utilizado algunos código que encontré en: http://www.microsmart.co.za/technical/2014/03/01/advanced-arduino-adc/ para ajustar el tiempo de la muestra de ADC.

Las funciones de gráficos y táctiles fueron modificadas y prestadas, de los ejemplos de Henning Karlsen en sus bibliotecas.

Utilicé un regulador de voltaje LM 317 y un temporizador IC 555 como un astable generados, para crear las señales utilizadas para comprobar la entrada del osciloscopio.

Esperamos que hayan disfrutado leyendo y esperamos construir este instructable. Si le resulta útil, por favor, vote por mí en los concursos.

Nota: Incluí el bosquejo, el UTFT y las bibliotecas de UTouch en el archivo libraries.zip para los problemas.

Copiar y pegar el bosquejo para el IDE de Arduino

---INICIAR PROGRAMA
/*--------------------------------------------------------------
Programa: OscopetouchLCDmega

Descripción: Osciloscopio Digital datos
en Color TFT LCD con pantalla táctil

Hardware: sainsmart mega2560 con 3.5" módulo tft lcd táctil pantalla y escudo kit
http://www.sainsmart.com/Home-page-View/sainsmart...

Software: Desarrollado utilizando el software de Arduino 1.0.3
Este programa requiere la biblioteca UTFT y el
UTouch biblioteca de Henning Karlsen.
Web: http://www.henningkarlsen.com/electronics
Versión 1.00
Fecha: 05 de abril de 2014

Autor: johnag
--------------------------------------------------------------*/

#include
#include
Declarar qué fuentes vamos a usar
extern uint8_t SmallFont [];
Inicializar la pantalla y tocar las funciones
UTFT myGLCD(ITDB32S,38,39,40,41);
UTouch myTouch(6,5,4,3,2);
Declarar variables
char buf [12];
int x, y;
int entrada = 0;
byte muestra [320];
byte OldSample [320];
int StartSample = 0;
int EndSample = 0;
int Max = 100;
int minutos = 100;
int modo = 0;
Tiempo de int = 1;
int tmode = 0;
int disparo = 0;
int SampleSize = 0;
int SampleTime = 0;
int dgvh;
Posh int = 50; conjunto 0v en rejilla horizontal
vsens int = 4; sensibilidad vertical

Definir varios prescaler de ADC
const unsigned char PS_16 = (1 << ADPS2);
const unsigned char PS_32 = (1 << ADPS2) | (1 << ADPS0);
const unsigned char PS_64 = (1 << ADPS2) | (1 << ADPS1);
const unsigned char PS_128 = (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);

---Subrutines Inicio---
---drenaje sub botones
void buttons() {}
myGLCD.setColor (0, 0, 255);
myGLCD.fillRoundRect (250, 1, 310, 50);
myGLCD.fillRoundRect (250, 55, 310, 105);
myGLCD.fillRoundRect (250, 110, 310, 160);
myGLCD.fillRoundRect (250, 165, 310, 215);
}
sub de posición---pantalla táctil
void touch() {}
mientras (myTouch.dataAvailable())
{
myTouch.read();
x=myTouch.getX();
y=myTouch.getY();
Delay(500);
Si ((y > = 1) & & (y < = 50)) / / Delay fila
{
Si ((x > = 250) & & (x < = 300)) / / botón de retardo
waitForIt (250, 1, 310, 50);
Mode = modo ++;
{
myGLCD.setColor (255, 0, 0);
myGLCD.drawRoundRect (250, 1, 310, 50);
Seleccionar tiempos de retardo
Si (modo == 0) tiempo = 0;
Si (modo == 1) tiempo = 1;
Si (modo == 2) tiempo = 2;
Si (modo == 3) tiempo = 5;
Si (modo == 4) tiempo = 10;
Si (modo == 5) tiempo = 20;
Si (modo == 6) tiempo = 30;
Si (modo == 7) tiempo = 50;
Si (modo == 8) tiempo = 100;
Si (modo == 9) tiempo = 200;
Si (modo == 10) tiempo = 500;
Si el modo (modo > 10) = 0;

}}

Si ((y > = 70) & & (y < = 120)) / / mecanismo del disparador fila
{
Si ((x > = 250) & & (x < = 300)) / / botón de disparo
waitForIt (250, 55, 310, 105);
TMODE = tmode ++;
{
myGLCD.setColor (255, 0, 0);
Seleccione el valor de activación de Software
myGLCD.drawRoundRect (250, 55, 310, 105);
Si (tmode == 1) Trigger = 0;
Si (tmode == 2) gatillo = 10;
Si (tmode == 3) gatillo = 20;
Si (tmode == 4) gatillo = 30;
Si (tmode == 5) gatillo = 50;
Si (tmode > 5) tmode = 0;
}}
Si ((y > = 130) & & (y < = 180)) / H posición fila
{
Si ((x > = 250) & & (x < = 300)) / / H posición del botón
waitForIt (250, 110, 310, 160);
Posh = Posh ++;

{
myGLCD.setColor (255, 0, 0);
myGLCD.drawRoundRect (250, 110, 310, 160);
myGLCD.clrScr();
Buttons();
Si Posh (Posh > 60) = 50;
}}}}
---Espere toque sub
void waitForIt (int x1, int y1, int x2, int y2)
{
mientras (myTouch.dataAvailable())
myTouch.read();
}
---drenaje sub red
void DrawGrid() {}

myGLCD.setColor (0, 200, 0);
para (dgvh = 0; dgvh < 5; dgvh ++) {}
myGLCD.drawLine (dgvh * 50, 0, dgvh * 50, 240);
myGLCD.drawLine (0, dgvh * 50, 245, dgvh * 50);
}
myGLCD.drawLine (245 0 245, 240);
myGLCD.drawLine (0, 239, 245, 239);
myGLCD.setColor (255, 255, 255);
myGLCD.drawRoundRect (250, 1, 310, 50);
myGLCD.drawRoundRect (250, 55, 310, 105);
myGLCD.drawRoundRect (250, 110, 310, 160);
myGLCD.drawRoundRect (250, 165, 310, 215);

}
---Espera de entrada mayor que sub de gatillo
{} void trigger()

mientras (entrada < gatillo) {entrada = analogRead (A0) * 5/100;
}}

---Subrutines fin---

void setup() {}
myGLCD.InitLCD();
myGLCD.clrScr();
myTouch.InitTouch();
myTouch.setPrecision(PREC_MEDIUM);
Buttons();
pinMode (0, entrada);
configurar el ADC
ADCSRA & = ~ PS_128; quitar de la biblioteca Arduino

puede elegir un prescaler desde abajo.
PS_16, PS_32, PS_64 o PS_128
ADCSRA | = PS_64; establecer nuestro propio prescaler
}
void loop() {}

{while(1)}
DrawGrid();
Touch();
Trigger();

Recoger los datos analógicos en una matriz

StartSample = micros();
para (int xpos = 0;
XPOS < 240; XPOS ++) {muestra [xpos] = analogRead (A0) * 5/102;
delayMicroseconds(dTime);
}
EndSample = micros();

Mostrar los datos analógicos recopilados de matriz
para (int xpos = 0; xpos < 239;
XPOS ++)
{
Borrar pantalla anterior
myGLCD.setColor (0, 0, 0);
myGLCD.drawLine (xpos + 1, 255-OldSample [xpos + 1] * vsens Posh, xpos + 2, 255-OldSample [xpos + 2] * vsens Posh);
Si (xpos == 0) myGLCD.drawLine (xpos + 1, 1, xpos + 1, 239);
Dibujar los nuevos datos
myGLCD.setColor (255, 255, 255);
myGLCD.drawLine (xpos, 255-muestra [xpos] * vsens Posh, xpos + 1, 255-muestra [xpos + 1] * vsens Posh);
}
Determinar el voltaje pico a pico de la muestra
Max = muestra [100];
Min = muestra [100];
para (int xpos = 0;
XPOS < 240; XPOS ++)
{
OldSample [xpos] = muestra [xpos];
Si (muestra [xpos] > Max) Max = muestra [xpos];
Si (muestra [xpos] < Min) Min = muestra [xpos];
}
Mostrar el tiempo de la muestra, tiempo de retardo y desencadenar a nivel
myGLCD.setBackColor (0, 0, 255);
myGLCD.setFont (SmallFont);
myGLCD.setBackColor (0, 0, 255);
myGLCD.print ("retardo", 260, 5);
myGLCD.print ("", 270, 20);
myGLCD.print (itoa (tiempo, buf, 10), 270, 20);
myGLCD.print ("Trig.", 260, 60);
myGLCD.print ("", 270, 75);
myGLCD.print (itoa (Trigger, buf, 10), 270, 75);
myGLCD.print ("H pos.", 260, 120);
myGLCD.print (itoa (Posh, buf, 10), 270, 135);
myGLCD.setBackColor (0, 0, 0);
SampleTime = (EndSample-StartSample) / 1000;
myGLCD.print ("seg.", 205, 210);
myGLCD.print ("", 280, 30);
myGLCD.print (itoa (SampleTime, buf, 10), 205, 220);
Rango de 0 a 64 * 78 = 4992 mV
SampleSize = (Max-Min) * 78;
myGLCD.print ("mVolt", 5, 210);
myGLCD.print (itoa (SampleSize, buf, 10), 5, 220);
myGLCD.print (itoa (analogRead (A0) * 4.15 / 10.23, buf, 10), 110, 220);

}}

---FIN PROGRAMA

Artículos Relacionados

Hacer un guante de trabajo con una pantalla táctil

Hacer un guante de trabajo con una pantalla táctil

puede hacerlo en pocos minutos sin mucho conocimiento.Invierno de subir (si estás en el hemisferio norte) y con el invierno viene frío y con el tiempo frío viene guantes.  Pero incluso en el frío probablemente todavía cuando llama tu teléfono.  Y aun
Estilo iPhone en cualquier pantalla táctil del teléfono celular con acceso a Internet

Estilo iPhone en cualquier pantalla táctil del teléfono celular con acceso a Internet

aquí cubriré establecer una página de inicio de LG Voyager a la página de myphonetoo apropiada para este efecto.Esto funciona mejor en un teléfono con una pantalla táctil.Hay que un sitio web desarrollado que parece un iPhone, todos los enlaces van a
Video: Haciendo su guante de trabajo con una pantalla táctil

Video: Haciendo su guante de trabajo con una pantalla táctil

este video te corre por el proceso rápido y fácil de personalizar cualquier guante de trabajo con una pantalla táctil como el iPad, iPhone, Palm Pre, etc..Esta es la versión en video de mi Instructable anterior que fue presentado recientemente en el
Microsoft Lumia 535 con la pantalla táctil rota

Microsoft Lumia 535 con la pantalla táctil rota

Lumia 535 RM-1090, 1091 RM, RM-1089 / RM-1092Cómo desmontar el teléfono por completo y cambiar /replace roto vidrio táctil, pantalla LCD, altavoz / buzzer, auricular, etc..Paso 1: -Apagar el teléfono y retire la batería y cualquier tarjeta SIM y la m
Sonido high-end con Control de pantalla táctil de 7 pulgadas basado en frambuesa Pi y Max2Play

Sonido high-end con Control de pantalla táctil de 7 pulgadas basado en frambuesa Pi y Max2Play

Con la llegada de la nueva oficial Raspberry Pi con pantalla táctil, estábamos muy contentos de encontrar aplicaciones para el mismo en nuestro sistema de Max2Play. Desde aplicaciones de audio han sido uno de nuestros focos principales de inicio, inm
Hacer televisores y DVDs accesibles - controlador de pantalla táctil grande

Hacer televisores y DVDs accesibles - controlador de pantalla táctil grande

sala de estudiantes y sala de estar estaban equipada con AVequipo, pero muchos de los estudiantes eran dependientes de personal de apoyo para cambiar de canales etc..Hemos creado un interfaz accesible rentable que permita a muchos denuestros alumnos
Sensor de humedad DHT11 con una pantalla lcd fácil!!!!!!

Sensor de humedad DHT11 con una pantalla lcd fácil!!!!!!

Hola, chicos hoy vamos a hacer de sensor de humedad DHT11 trabaja con una pantalla LCD.No es difícil para un principiante sólo cableado de que la pantalla LCD es la parte difícil.Permite así iniciar:):):):):):):):)!!!Paso 1: Reunir sus partes del cue
Cómo utilizar 2.4 pulgadas TFT LCD SPFD5408 con arduino MEGA 2560

Cómo utilizar 2.4 pulgadas TFT LCD SPFD5408 con arduino MEGA 2560

Este instructable le mostrará cómo para el SPFD5408 2.4 pulgadas lcd a la arduino MEGAPaso 1:Paso 2: bibliotecasAlgunos de ustedes pueden comprar esta pantalla LCD o el pensamiento de conseguiruno. Su una gran pantalla para la visualización de imágen
Reparación de pantalla táctil: Schlage BE469NXCAM716 Camelot cerrojo de pantalla táctil con tecnología Z-Wave

Reparación de pantalla táctil: Schlage BE469NXCAM716 Camelot cerrojo de pantalla táctil con tecnología Z-Wave

(Actualización: este servicio (en el primer cerrojo) sigue trabajando después de una semana de uso. El segundo cerrojo tenía los mismos problemas, sin embargo, después de reparar el cepillo flojo todavía no funciona. Aparece que el panel de tacto rea
Cómo hacer un osciloscopio de Arduino de bajo costo 16 MHz usando Excel y la pantalla del ordenador a pantalla

Cómo hacer un osciloscopio de Arduino de bajo costo 16 MHz usando Excel y la pantalla del ordenador a pantalla

A menudo un aficionado de electrónica será diseñar y construir algo sólo para encontrar que no se comportan la manera que él o ella prevista. A veces en estas situaciones el problema está relacionado con una señal eléctrica, sino que la materia se mu
Cómo - hacer un osciloscopio $25

Cómo - hacer un osciloscopio $25

Compré este osciloscopio DSO 138 Kit de $25 en línea para utilizar en proyectos de electrónica. Muchos entusiastas de la electrónicase recomienda conseguir un osciloscopio barato para un usuario por primera vez.Paso 1: $25 osciloscopio DIY kit - DSO
Cómo hacer un ibuane usando una pluma 3D

Cómo hacer un ibuane usando una pluma 3D

proyecto 1-2 horasSe necesita:• 3Doodler y plástico ABS• Pegamento; PVA, pegamento de spray y Super o plástico solvente• Lado cortador Epoxy masilla de modelar y esculpir herramientas• Las pinturas, pinceles y una bandeja de pintura• Modelado de reba
Hacer un collar usando fusibles eléctricos

Hacer un collar usando fusibles eléctricos

Hola Fellas!!Sabe usted que el hallazgo más temprano de la joyería fue fechado hace unos 25.000 años. Este sencillo collar de huesos de pescado fue encontrado en una cueva en Mónaco. Por supuesto, las joyas que usaban en los viejos tiempos no fue hec
Cómo hacer aretes brillantes usando pegamento caliente

Cómo hacer aretes brillantes usando pegamento caliente

Siempre prefiero tacos en vez de colgando pendientes cada vez que hay necesidad de cambio de pendientes. Lo contrario generalmente adhieren a una simple viga de oro. Me gusta tipo de rayas y pernos prisioneros estampados pero no habitual encontrarlos