HermannSW
27.04.2007, 00:37
Hallo,
hier zur grafischen Ausgabe der Fotosensorwerte ein Fotometer (siehe hier (http://de.wikipedia.org/wiki/Fotometer)), welches auch als Odometer (siehe hier (http://de.wikipedia.org/wiki/Odometer)) angepaßt werden könnte.
So sieht ein Output mit numerischer Ausgabe (abschaltbar) der Werte aus (Terminalemulation auf ANSI stellen!):
+ ------- ------- ------- -------+
|0 256 512 768 |
| # |987
| # |848
+--------------------------------+
Und hier ist das Fotometer (für Asuro Library 2.70rc3):
#include <asuro.h>
char ticks1024[]="+ ------- ------- ------- -------+\r\n"\
"|0 256 512 768 |\r\n"\
"|# |\r\n"\
"|# |\r\n"\
"+--------------------------------+\r\n";
int ol,or;
void CSI(void) { UartPutc(0x1B); UartPutc('['); }
void CLR(void) { CSI(); SerPrint("2J"); }
void GTO(int row, int col)
{
CSI();
PrintInt(row); UartPutc(';');
PrintInt(col); UartPutc('H');
}
void display1024(unsigned left, unsigned right, int numbers)
{
if (numbers) {
GTO(3,35); PrintInt(left); SerPrint(" ");
GTO(4,35); PrintInt(right); SerPrint(" ");
}
left/=32;
if (left>31) left=31;
if (left!=ol) {
GTO(3,2+ol); UartPutc(' ');
GTO(3,2+left); UartPutc('#');
ol=left;
}
right/=32;
if (right>31) right=31;
if (right!=or) {
GTO(4,2+or); UartPutc(' ');
GTO(4,2+right); UartPutc('#');
or=right;
}
}
void head1024(void)
{
CLR();
SerPrint(ticks1024);
ol=or=0;
}
int main(int argc, char *argv[])
{
unsigned int lineData[2];
Init();
FrontLED(ON);
head1024();
while (1)
{
LineData(lineData);
display1024(lineData[LEFT],lineData[RIGHT],1);
}
return 0;
}
Das MeterDemo.hex-Attachment veranschaulicht den Performance-Einfluß ohne und mit numerischer Werteausgabe (Endlosdemo).
hier zur grafischen Ausgabe der Fotosensorwerte ein Fotometer (siehe hier (http://de.wikipedia.org/wiki/Fotometer)), welches auch als Odometer (siehe hier (http://de.wikipedia.org/wiki/Odometer)) angepaßt werden könnte.
So sieht ein Output mit numerischer Ausgabe (abschaltbar) der Werte aus (Terminalemulation auf ANSI stellen!):
+ ------- ------- ------- -------+
|0 256 512 768 |
| # |987
| # |848
+--------------------------------+
Und hier ist das Fotometer (für Asuro Library 2.70rc3):
#include <asuro.h>
char ticks1024[]="+ ------- ------- ------- -------+\r\n"\
"|0 256 512 768 |\r\n"\
"|# |\r\n"\
"|# |\r\n"\
"+--------------------------------+\r\n";
int ol,or;
void CSI(void) { UartPutc(0x1B); UartPutc('['); }
void CLR(void) { CSI(); SerPrint("2J"); }
void GTO(int row, int col)
{
CSI();
PrintInt(row); UartPutc(';');
PrintInt(col); UartPutc('H');
}
void display1024(unsigned left, unsigned right, int numbers)
{
if (numbers) {
GTO(3,35); PrintInt(left); SerPrint(" ");
GTO(4,35); PrintInt(right); SerPrint(" ");
}
left/=32;
if (left>31) left=31;
if (left!=ol) {
GTO(3,2+ol); UartPutc(' ');
GTO(3,2+left); UartPutc('#');
ol=left;
}
right/=32;
if (right>31) right=31;
if (right!=or) {
GTO(4,2+or); UartPutc(' ');
GTO(4,2+right); UartPutc('#');
or=right;
}
}
void head1024(void)
{
CLR();
SerPrint(ticks1024);
ol=or=0;
}
int main(int argc, char *argv[])
{
unsigned int lineData[2];
Init();
FrontLED(ON);
head1024();
while (1)
{
LineData(lineData);
display1024(lineData[LEFT],lineData[RIGHT],1);
}
return 0;
}
Das MeterDemo.hex-Attachment veranschaulicht den Performance-Einfluß ohne und mit numerischer Werteausgabe (Endlosdemo).