LineData im Hyperterminal ausgeben
Hallo!
Ich möchte die Daten der beiden Fototransistoren auf der Unterseite von ASURo im Hypertermianl programm auslesen. Allerdings kommen dort nur kryptographische Zeichen an. Habe gelesen, dass von den Fototransistoren 16Bit Werte zurückkommen und man diese erst mit der Funtion itoa() in ASCII umwandeln muss. Das habe ich versucht, jedoch ohne Erfolg. Es kommen immer noch kryptographische Zeichen an.
Hier mal mein Code:
Code:
#include "asuro.h"
#include "stdlib.h"
int main(void)
{
//Speicherbereich für die Integer-Werte der Fototransistoren anlegen
unsigned int data[2];
unsigned char Wert;
//Microcontroller in Ausgangszustand
Init();
//FrontLED anschalten
FrontLED(ON);
//Werte der Fototransistoren einlesen
LineData(data);
//in ASCII umwandeln
itoa(data[1],Wert,10);
//Werte an Computer senden
SerWrite(Wert,4);//links(T9)
while(1);
return 0;
}
Vielen Dank für eure Hilfe!
mfg
.patrick
atmega8 adc Wert auf Seriell formatiert ausgeben
Besten Dank für den Anschub.
Damit andere auch was davon haben, hier das fertige Programm.
/* Das Programm liest die Linien-Fototransistoren des Asuro aus und
und gibt die Werte über die serielle Schnittstelle an z.B. Hyperterminal aus.
Es werden ca. 2 Wertepaare pro Sekunde ausgegeben (bei 2400bit/s) .
Anforderungen: WinAVR aStudio4b460.exe und asuro_v261.zip (die beigefuegten asuro.c und asuro.h musst du in das Verzeichnis zum Quellcode kopieren.
Viel Spass
*/
#include "asuro.h"
#include "stdlib.h"
int main(void)
{
Init();
while(1)
{
unsigned int data[2]; //Initialisiert zwei Int-werte hintereinander
LineData(data); //Übergibt der Funktion den "data"-array, die schreibt die beiden Werte rein
//data[0]=data[0]/10+100; // rechnen klappt auch
SerWrite("linker FotoSensor = ",21); //Text direkt senden
PrintInt(data[0]); //Zelleninhalt ausgeben
SerWrite("\r\n",1); //neue Zeile
SerWrite("rechter FotoSensor = ",21); //Text direkt senden
PrintInt(data[1]); //Zelleninhalt ausgeben
SerWrite("\r\n",1); //neue Zeile
SerWrite("\r\n",1); //neue Zeile
}
return 0;
}
atmega8 adc to seriell Hyperterminal
Hallo,
hast ja recht ; verbessert.
SerWrite("\r",1); spuckte vorher auch nur ein Zeichen aus.
Sieht jetzt immer noch gleich aus (siehe unten).
Rechnen mit Zellen war nur als Beispiel gedacht, brauche ich auch noch später.
Danke Bernd
/* Das Programm liest die Linien-Fototransistoren des Asuro aus und
und gibt die Werte über die serielle Schnittstelle an z.B. Hyperterminal aus.
Es werden ca. 2 Wertepaare pro Sekunde ausgegeben (bei 2400bit/s) .
Anforderungen: WinAVR aStudio4b460.exe und asuro_v261.zip (die beigefuegten asuro.c und asuro.h musst du in das Verzeichnis zum Quellcode kopieren.
Output in Hyperterminal innerhalb ca. einer Sekunde:
linker FotoSensor = 101
rechter FotoSensor = 102
linker FotoSensor = 1
rechter FotoSensor = 1
linker FotoSensor = 0
rechter FotoSensor = 0
Viel Spass Bernd
Code:
*/
#include "asuro.h"
int main(void)
{
unsigned int data[2]; //Initialisiert zwei Int-werte hintereinander
Init();
while(1)
{
LineData(data); //uebergibt der Funktion den "data"-array, die schreibt die beiden Werte rein
//data[0]=data[0]/10+100; // wer moechte, rechnen klappt auch prima!!!
SerWrite("linker FotoSensor = ",21); //Text direkt senden
PrintInt(data[0]); //Zelleninhalt ausgeben
SerWrite("\r",1); //neue Zeile
SerWrite("rechter FotoSensor = ",21); //Text direkt senden
PrintInt(data[1]); //Zelleninhalt ausgeben
SerWrite("\r",1); //neue Zeile
SerWrite("\r",1); //neue Zeile
}
return 0;
}