PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Alkoholgehalt messen einfache Rechnung



xbgamer
03.10.2009, 12:57
Servus ich will den Alkohol Gehalt in einem Gefäß ermitteln.
Hierzu habe ich ein Gefäß in dem am Boden ein Drucksensor eingebaut ist und oben im Deckel ein Distanzsensor.
Temperatur wird im moment vernachlässigt.

Ich habe dann mit hilfe meines Buches die Formel PA/(g*h)=rho versucht in einem C Programm einzuarbeiten und mit dem PC zu testen. Jedoch kommt da immer der selbe Wert raus egal was ich eingebe:

/*bspl0001.c*/
#include <stdio.h>
int main(void){
float x,y;
printf("\n\t2.Rechenprogramm\n");
printf("\nBitte x eingeben in mbar:");
scanf("%f",&x);
printf("Bitte y eingeben in m;");
scanf("%f",&y);
printf("\n (%f*100)/((%f*9,81) ist %f",x,y,(x*100)/(y*9,81));


Woran kann das liegen?

Searcher
03.10.2009, 13:48
Hi,
kann C zwar nicht, möchte mich aber Einarbeiten.

Laut http://www.rn-wissen.de/index.php/C-Tutorial#Ein-_und_Ausgabe-Funktionen läßt printf nur Standartdatentypen zu. Du versuchst innerhalb von printf zu rechnen. Könnte es daran liegen?

Gruß
Searcher

xbgamer
03.10.2009, 13:52
also in meinem buch ist es eben genauso abgedruckt nur die letzte zeile habe ich verändert und anstelle deren ihrer rechnung meine eingesetzt somit müsste es ja auch funktionieren. hat ja mit ihrem beispiel auch funktioniert.

Searcher
03.10.2009, 14:01
um den Fehler einzugrenzen bzw auszuschließen, könntest Du ja mal die Rechnung vor dem printf machen. Vielleicht könntest du auch das Buchbeispiel 1:1 (mit allen Leerzeichen) hier posten...

sternst
03.10.2009, 16:37
Der Fehler ist ein Komma statt eines Punktes.

xbgamer
03.10.2009, 17:19
Danke dass wars. noch ne kurze frage wie sieht es eigentlich mit nem atmega aus mit analog werten? wie kann ich die einlesen und in welchem datentyp liegen die mir dann vor real oder int oder was anderes?

BurningBen
03.10.2009, 23:09
die kannst du über die adc-pins einlesen, Code dazu habe ich grade nicht da, kannst du mit den Datenblättern aber einfach zusammenbasteln.

Dann bekommst du einen int-wert zwischen 0 und 1024. (abhängig von der auflösung des adcs auch mehr oder weniger)

xbgamer
04.10.2009, 09:24
ja ich hab nur nen controller mit nem 10bit analog digital wandler somit stimmen 1024 bei mir.

oberallgeier
04.10.2009, 09:46
... über die adc-pins einlesen ... Dann bekommst du einen int-wert zwischen 0 und 1024 ...
... controller mit nem 10bit analog digital wandler somit stimmen 1024 bei mir.Das mag nun etwas pingelig klingen, aber die Controler sind so pingelig: der Messwert vom ADC bei 10 Bit Auflösung ist maximal 1023. Zusammen mit dem Wert Null sind das dann 1024 Werte. Wäre der maximale Wert 1024, dann wär schon - und nur - das elfte Bit gesetzt (das nicht existiert *ggg*). Also bitte: vertut euch nicht.