PDA

Visualizza la versione completa : [C] programma sensore di temperatura


politecnicher
21-08-2014, 12:08
Salve, mi servirebbe un aiuto in questo programma:

Sivuole linearizzare un sensore di temperatura, che fornisce un'uscita tra0 e 100 mV, mediante una spezzata. Sperimentalmente sono statitrovati
iseguenti punti di ginocchio della spezzata: (20 mV, 15 gradi),
(55mV, 27 gradi). Inoltre a 0 mV si fa corrispondere 0 gradi e a 100 mv
35gradi.
Realizzareun programma che permetta di introdurre da tastiera un valore
ditensione fornito dal sensore, calcoli e stampi il valore ditemperatura
espressoin gradi.

io ho fatto così:



#include <stdio.h>

int main()
{
float tensione, temperatura;

printf("Inserisci valore di tensione da 0 a 100 mV ");
scanf("%f", &tensione);

if (tensione <= 20){
temperatura=((15/20)*tensione);
printf("Temperatura= %f", temperatura);
}
else if (20<tensione<=55){
temperatura= ((12/35)*tensione +(289/35));
printf("temperatura= %f", temperatura);
}
else if (55<tensione<=100){
temperatura=((8/45)*tensione + (775/45));
printf("temperatura= %f", temperatura);
}

return 0;
}


Nei 3 casi ho calcolato le 3 diverse rette passanti per i due punti(che nel primo tratto sono (0,0) e (20,15), nel secondo (20,15) e (55,27) e nel terzo (55,27) e (100, 35), dove sulle ascisse vi è la tensione e sulle ordinate la temperatura.
Però non funge. qualcuno sa dirmi dove sbaglio? Grazie mille.

Alex'87
21-08-2014, 12:44
Non puoi fare confronti di quel tipo.

if (0 < A < 100) // ERRORE

if (A > 0 && A < 100) // OK

E occhio che la divisione tra interi è un intero (e magari non è quello che vuoi)

politecnicher
21-08-2014, 12:50
Non puoi fare confronti di quel tipo.

if (0 < A < 100) // ERRORE

if (A > 0 && A < 100) // OK

E occhio che la divisione tra interi è un intero (e magari non è quello che vuoi)

Grazie, ecco dove sbagliavo.

Alex'87
21-08-2014, 15:01
Promemoria per la prossima volta: "non funge" non vuol dire nulla.
In questo caso il problema era PALESE ma altre volte non è così: riporta sempre errori di compilazione, errori a runtime o comportamenti inaspettati.

Loading