Moin, moin zusammen. Ich möchte gerne meine ADC Messwerte über einen Tabelle in scalierte Werte umwandeln. Dazu habe ich eine Tabelle mit zwei Spalten und 1023 Zeilen erstellt. In der ersten Zeile steht das ADC Digit in der zweiten der zugehörige Wert scaliert. Ich möchte nun in C eine Funktion schreiben die den ADC Wert bekommt und den zugehörigen Wert ausgibt. Wie realisiert man das in C? Über eine for Schleife, oder besser eine if Schleife usw. habe wenig Erfahrung mit C deshalb diese vielleicht auch triviale Frage. MfG Stefan
Wieviele Werte kann ADC annehmen? 1024 (10 Bit), dann brauchst du doch nur eine Spalte... type_of_irgendwas skalierter_wert[1024] = { /* ... */ }; type_of_irgendwas mein_skalierter_messwert; unsigned int adc_messwert; /* 0..1023 valid */ mein_skalierter_messwert = skalierter_wert[adc_messwert /* zur Sicherheit: % 1024 */]; Gruß anderer Stefan
Ne habe nur einen Nutzbaren bereich von ca. 300 digits. Ist für ne Temperaturmessung. Hatte das jetzt so angedacht signed int ADC2Deg(unsigned int ADC) { Temp=Tabelle[ADC][1]; }
@ Stefan >Ne habe nur einen Nutzbaren bereich von ca. 300 digits. Ist für ne >Temperaturmessung. Dann brauchst du nur ein Array mit 300 Elementen und einer Spalte. Etwa so. int ADC2Deg[300]={1,2,3,4,5}; Die Intitialisierung muss du natürlich noch vervollständigen. >Hatte das jetzt so angedacht >signed int ADC2Deg(unsigned int ADC) >{ >Temp=Tabelle[ADC][1]; >} Im Prinzip richtig, aber du brauchst nur eine Spalte. Du solltest dir aber im klaren darüber sein, dass so eine Tabelle auf einem kleinen uC ziemlich ins Gewicht fällt. Das Verfahren ist zwar sehr schnell, verbaucht aber viel Speicher. Für eine langsame Temperaurmessung ist es meist besser eine Formel zu verwenden. MFG Falk
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.