(Solucionado)Osciloscopio LCD TFT adafruit añadir canal

Hola buenas

hola estoy trabajando en un proyecto de un osciloscopio con una lcd adafruit
la pregunta es que el codigo que consegui hasta ahora solo tiene una linea es decir un canal
el problema que tengo es que quiero añadirle otro canal mas pero no se como hacerlo
por favor necesito ayuda debido a que me corre prisa el proyecto
gracias
adjunto el codigo porque es demasiado grande

También os pongo el link de donde saque el proyecto
http://www.belajarduino.com/2016/06/lcd-tft-membuat-digital-oscilloscope.html?m=1

saludos :o :slight_smile:
y gracias de antemano

osciloscopio1.ino (17.3 KB)

O simplemente no leiste el código o era mas fácil preguntar que leerlo. Esta muy claro mira :

const int ad_ch0 = 6;                   // Analog 6 pin for channel 0
const int ad_ch1 = 5;                   // Analog 5 pin for channel 1

Tienes dos canales en pines 5 y 6 Switch en Analog 3.

Esta es la función que lee el ad y como veras dice byte ch o sea el canal seleccionado sea 0 o 1.

inline unsigned long adRead(byte ch, byte mode, int off)
{
  unsigned long a = analogRead(ch);
  a = ((a+off)*VREF[ch == ad_ch0 ? range0 : range1]+512) >> 10;
  a = a>=(LCD_HEIGHT+1) ? LCD_HEIGHT : a;
  if (mode == MODE_INV)
    return LCD_HEIGHT - a;
  return a;
}

Coloca el link de donde extrajiste el código para ver mas información sobre el hardware.

Esto me respondiste por privado Enlace

El link indica que todo esta hecho para un UNO.

Porque no explicas bien que quieres hacer?

Hola de nuevo escribo esto para explicar un poco mejor el proyecto. Buscando por internet encontré este enlace de un osciloscopio con un lcd tft adafruit de 2.4.me gusto el diseño que tenia lo cual lo copié y lo pegue todo compilo bien y se ve en la pantalla el problema viene ahora. En el Arduino uno que es el que estoy utilizando hay 5 pines analógicos lo cual puedo agregar hasta cinco canales. Yo solo quiero añadir 3 mas pero nunca e trabajado con estas LCD y no se como programarlas el osciloscopio lo quiero para hacer un monitor ecg pero primero necesito añadirle 3 canales más

Agradezco mucho la ayuda

Saludos Tomas

Ahora comprendo pero es mucho trabajo.

Un ECG muestra varios canales simultáneos. Eso requeriría que el AD disponga de buffers circulares, y cambiar todo el modo en que este código esta funcionado. Tendrias que trabajar con mucho cuidado para que todo sea fluido a pesar de que las señales ECG son lentas.

No hablamos de un ancho de banda alto. Posible es pero muy laborioso.

De momento solo me hace falta tener el osciloscopio porque con un canal funciona debido a que la placa que lee las pulsaciones el oxigeno y demás ya la tengo porque la hice yo

Todo el proyecto es un caos y te explico porque! EL UNO es pequeño para albergar tantas cosas. Sencillamente no puede asi que considera un MEGA o DUE (la mejor eleccion) para la tarea.

#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4

El display esta usando A0, A1, A2, A3 y A4 Luego veamos esto

const int ad_sw = 10;                   // Analog 3 pin for switches
const int ad_ch0 = 6;                   // Analog 6 pin for channel 0
const int ad_ch1 = 5;                   // Analog 5 pin for channel 1

Dice usar A3 de nuevo con un switch pero ya estaba en contacto con LCD_CS Dice usar A5 y A6 asi que ya no es un UNO sino un NANO o un Mega/DUE

De modo que estas en problemas si tienes un UNO. Yo vi el link y el habla de un UNO pero eso no es compatible con A6, a menos que este cableado pero el link es pobre en información.

Te aconsejo usar un MEGA/DUE (mejor este último) y una placa grafica correspondiente.

Con el DUE tendras 12 canales AD y muchos mas pines para redirigir controles I/O.

const int ad_ch0 = A5; // Analog 5 pin for channel 5 const int ad_ch1 = A6; // Analog 6 pin for channel 6 const int ad_ch0 = A7; // Analog 7 pin for channel 7 const int ad_ch1 = A8; // Analog 8 pin for channel 8 const int ad_ch0 = A9; // Analog 9 pin for channel 9 const int ad_ch1 = A10; // Analog 10 pin for channel 10[/code]

hay muchos cambios que hacer

byte range0 = RANGE_MIN, ch0_mode = MODE_OFF;  // CH0
short ch0_off = 204;
byte range1 = RANGE_MIN, ch1_mode = MODE_ON;  // CH1
short ch1_off = 204;

repetir para los demas y asi en cada caso.

Ok entonces cojo el mega y redirijo todo ok Te aviso cuando lo haga porque el mega no lo tengo aquí

Gracias