Hola foreros! Muchas gracias por el interés! Confeso que ahora estoy un poco confuso con cual tema dar prioridad, porque estou teniendo problemas con el dinero que será aplicado a compra del GPS y el Transceiver, por problemas en el equipo de gestión del Aerodesign.
ASTROCAR:
estos metodos son muy bueno y aplicables en su momento pero en este caso ahorrarias pines del pic pero aumentarias recursos del micro como es la ram del pic y esas cosas hay que estudiar bien la factibilidad.
Es muy importante lo que has dicho, al tener todo el hardware basico hecho y programado, luego veo si es posible poner el LCD, el teclado y lo demas. No creo que voy a poder, pues com pocas cosas que hice ya tuve problemas con la RAM, bueno, se deve tambien a la falta de experiencia en estos temas, jeje... En realidad creo que la "administracion" del "poder" del PIC y "trabajar con muchos datos a la vez" son los pasos mas importantes de todo el proyecto, pues no adelanta mucho tener 20 sensores y todo mas conectado al PIC, y luego no sacar todo el provecho posible. Siempre trabajé con pocos datos, voy a tener muchas dificultades con eso. Os iba a preguntar sobre un tema que yo no conozco y que vi en otros hilos, que es la posibilidad de trabajar con 2 PIC's, siendo que uno seria solamente para manipulacion de datos (o algo asi).
RALF2:
Dop mis felicitaciones por el proyecto me dejaste loco con la interfaz grafica
Como la haces que programss empleas para ello?
Hola Ralf2! Muchas gracias!
A respecto de tu duda, no se si ya tienes facilidad con VC#, pero en todo caso a ver si te explico el paso a paso:
Lo programe em C#, usando el "Dundas Gauge" y "Dundas Chart" (luego se lo explico).
Lo primero que tienes que hacer es bajar el Visual C# Express (gratuito)
http://www.microsoft.com/express/vcsharp/ (tambien puede ser el Visual Basic Express, no cambia mucho, basicamente cosillas estructurales y asignación de variables). Si nunca has hecho nada con lenguajes orientada a objectos, no temas, es muy facil (empezar).
Luego, después de instalar el C#, en la pagina
http://www.dundas.com/, puedes bajar la version full evaluation de "Dundas Gauge" y "Dundas Chart", o comprar la versión Full, que tiene mucho más recursos. Si trabajas con adquisicion de datos, lo recomendo la full, pues facilita mucho al enseñar los datos en pantalla, y es muy bonito!
Luego, al tener instalado, estos son los pasos que segui en Visual C# Express para instalarlos:
Ahora solo tienes que pulsar en "Chart", o "GaugeContainer", y poner en tu "form", y saltara a la pantalla el Wizard como este (para los chart):
Veamos un ejemplo, para hacer una gráfica como esta (te servirá para
saber como cambiar propriedades de cualquier grafica, o gauge):
Pulsas, en "Chart", en el Wizard, elijes "Line" e dale al "Finish"
Tendras algo así:
Luego, con el componente selecionado, en la ventana de propriedades, cambias el
"BackColor" para Black,
"BackGradientEndColor" para "34;34;34"
y el "BackGradientType" para "HorizontalCenter"
Luego pulsas en Chart Areas
"ChartAreas",
y luego cambia "BackColor" para Black, BackGradientEndColor para "34;34;34"
y el BackGradientType para "VerticalCenter"
Luego pulsas en "Axes", "Y(Value)", le das un titulo (por ejemplo, "Variable), y cambia el color del titulo y del LabelStyle
Tendrás algo así:
Para añadir el numero de sensores (o lo que sea), que seran vistos, en la ventana de propriedades, pulsas en "Series", luego en "Add"
y añades cuantos "sensores" quieras! Elijas el tipo "line" para todos, y cambie su nombre para lo que desees, como "Potenciometro 1", etc!
Tendrás algo así:
Ahora en la ventana de propriedades pulsas en "Titles", en "Add", y Eliges un nombre para la Gráfica y el color, fuente, etc
Luego, en la ventana de propriedades pulsas en "Legends", y cambia las propriedades BackColor, BorderColor, BorderWidth, Alignment y Docking
Y tanaaaa! Tienes tu grafica personalizada y lista!
Ahora, a programar!
Lo primero que tienes que hacer es poner un timer al proyecto, y elegir el tiempo en el que se activará la subrutina de la grafica,
por ejemplo, 10ms...
Pulsas dos veces en el timer1, y este es un codigo ejemplo para que todo salga bien, en las condiciones establecidas
anteriormente:
private void timer1_Tick(object sender, EventArgs e)
{
int numberOfPointsInChart = 200;
int numberOfPointsAfterRemoval = 150;
// Simulate adding new data points
int numberOfPointsAddedMin = 1; //5
int numberOfPointsAddedMax = 1; //10
//chart1.ChartAreas["Default"].AxisX.Minimum = pointIndex - numberOfPointsAfterRemoval;
//chart1.ChartAreas["Default"].AxisX.Maximum = chart1.ChartAreas["Default"].AxisX.Minimum + numberOfPointsInChart;
//chart1.ChartAreas["Default"].AxisX.Minimum = minValue.ToOADate();
//chart1.ChartAreas["Default"].AxisX.Maximum = maxValue.ToOADate();
for (int pointNumber = 0; pointNumber < random.Next(numberOfPointsAddedMin, numberOfPointsAddedMax); pointNumber++)
{
chart1.Series["Sensor 1"].Points.AddXY(pointIndex + 1, (vScrollBar5.Value + 500));
chart1.Series["Sensor 2"].Points.AddXY(pointIndex + 1, vScrollBar5.Value);
chart1.Series["Sensor 3"].Points.AddXY(pointIndex + 1, (vScrollBar5.Value + 1000));
chart1.Series["Sensor 4"].Points.AddXY(pointIndex + 1, (vScrollBar5.Value - 2500));
chart1.Series["Sensor 5"].Points.AddXY(pointIndex + 1, vScrollBar5.Value - 1400);
chart1.Series["Sensor 6"].Points.AddXY(pointIndex + 1, (vScrollBar5.Value + 3300));
chart1.Series["Sensor 7"].Points.AddXY(pointIndex + 1, (vScrollBar5.Value - 1200));
chart1.Series["Sensor 8"].Points.AddXY(pointIndex + 1, vScrollBar5.Value + 2600);
chart1.Series["Sensor 9"].Points.AddXY(pointIndex + 1, (vScrollBar5.Value + 1100));
chart1.Series["Sensor 10"].Points.AddXY(pointIndex + 1, (vScrollBar5.Value - 7300));
++pointIndex;
}
// Adjust Y & X axis scale
chart1.ResetAutoValues();
// Keep a constant number of points by removing them from the left
while (chart1.Series["Sensor 1"].Points.Count > numberOfPointsInChart)
{
// Remove data points on the left side
while (chart1.Series["Sensor 1"].Points.Count > numberOfPointsAfterRemoval)
{
chart1.Series["Sensor 2"].Points.RemoveAt(0);
chart1.Series["Sensor 1"].Points.RemoveAt(0);
chart1.Series["Sensor 3"].Points.RemoveAt(0);
chart1.Series["Sensor 4"].Points.RemoveAt(0);
chart1.Series["Sensor 5"].Points.RemoveAt(0);
chart1.Series["Sensor 6"].Points.RemoveAt(0);
chart1.Series["Sensor 7"].Points.RemoveAt(0);
chart1.Series["Sensor 8"].Points.RemoveAt(0);
chart1.Series["Sensor 9"].Points.RemoveAt(0);
chart1.Series["Sensor 10"].Points.RemoveAt(0);
}
// Adjust X axis scale
chart1.ChartAreas["Default"].AxisX.Minimum = pointIndex - numberOfPointsAfterRemoval;
chart1.ChartAreas["Default"].AxisX.Maximum = chart1.ChartAreas["Default"].AxisX.Minimum + numberOfPointsInChart;
}
// Invalidate chart
chart1.Invalidate();
}
OJO: Las variables int numberOfPointsInChart y int numberOfPointsAfterRemoval = 150 son las mas importantes, indican el tamaño y el tiempo de la grafica. Juega con ellas y veras cual valor te gusta mas!
En este caso, para demonstracion, la fuente de datos es una VScrollBar. Las lineas quedarán com el valor que la VScrollBar tiene en
su propriedad "Value".
Pero los datos pueden venir de donde quieras, por ejemplo, de variables que almazenas los valores recebidor serialmente atraves del PIC!
Y es eso! Creo que ya puedes empezar algo, jejejeje
A respecto del XBEE Pro, tu crees que merece la pena para mi, mismo siendo 5 veces mas cara que el Laipac? (al menos por aqui! jejeje) Son tantas las ventajas?
Ya lo pensaré! Por lo que leí en las características si que son mejores, y ademas se quedan mas chulas en la placa, jejejejeje Pero todavia no se si en mi
caso, la relacion "precio X ventajas al Laipac" será buena!
Lo de las memorias SPI todavia ni idea, voy a leer algo!
Gracias!