Dubbi analogread e conversioni

Ciao a tutti! In questi giorni, essendo principiante, sto sbattendo la testa sugli ingressi analogi di arduino. Dopo aver spulciato tutto il forum e credo buona parte del web ho il cervello in fumo. Con arduino uno+ethernet shield vorrei leggere da un web server i valori di due pin analogici:
pin 0–> 1V deve essere pari a -35 e decrementare (ad esempio 0.5V=-60) importante il negativo
pin 1–> 1V deve essere pari a 1000 e decrementare (ad esempio 0.5V=500)
leggendo in giro e seguendo gli esempi ho creato la righe di codice in questo modo

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,1, 155 };
byte subnet[] = { 255,255,255, 0 };
byte gateway[] = { 192,168,1, 1 };

Server server(80);

void setup()
{
  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip, subnet, gateway);
  server.begin();
}

void loop()
{
  // listen for incoming clients
  Client client = server.available();
  if (client) {
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();

          // output the value of each analog input pin
          for (int analogChannel = 0; analogChannel < 1; analogChannel++) {
            client.print("Il segnale ricevuto corrisponde a -");
	    client.print((analogRead(0)?????? ) ;  //5V=1023 
            client.println(" dbm");
	  }
          for (int analogChannel = 1; analogChannel < 2; analogChannel++) {
            client.print("
 La potenza erogata dal TX è pari a ");//la funzione 
 serve per andare a capo
	    client.print((analogRead(1) * 0.005 ) * 21.10 ) ;  //5V=1023 0V=0 
            client.println(" W");
          }
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        } 
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
  }
}

Per quanto riguarda il web server nessun problema, ma proprio non riesco a capire il meccanismo della conversione.
Personalmente non mi interessa codice copia-incolla, ma vorrei appunto capire come funziona il calcolo della conversione, visto che oltretutto il pin 0 è in negativo.
Avrei pensato ad una proporzione tipo (per il pin 1, per lo 0 brancolo nel buio)
5:1023=1:1000 ma credo di essere fuori strada
Qualcuno mi aiuta ad abbattere questo ostacolo?
P.S. sono anche piuttosto ruggine in matematica

serve una proporzione. passo numero 1: 5v sta a 1024 , come 1V sta a X (5:1024=1:X) in questo modo trovi il valore analogRead per quando leggi 1V... (1024/5)*1=~205 dunque, ora sappiamo che se leggiamo 1V l'analogRead vale 205.

se dividiamo per 2 otteniamo il valore della lettura per 0.5V, ovvero 102

ora prendiamo l'equazione della retta: Y = mX+q

per il pin1: noi abbiamo 2 coppie di valori: y=-35 x=205 e y=-60 x=102 ora puoi fare un sistema: -35=m*205+q -60=m*102+q

se sottrai membro a membro ottieni: 25=103m+q quindi q=25-103m ora che hai trovato Q, la sostituisci in una delle due equazioni e trovi la M. A questo punto puoi trovare il valore numerico sia di M che di Q. a questo punto, ogni valore analogRead diventa la X, e la Y è il valore che hai cercato.

stesso procedimento per il pin2

Per fare questo procedimento, però, esiste già una funzione arduino detta map; se non erro: int y = map (x, 102, 205, -60, -35);

ps. si può risolvere con le proporzioni, ma questo metodo mi è venuto in mente subito, anche perchè basta sostituire l'equazione della retta con quella di parabola etc... ed avere tanti punti quante le incognite per poter avere anche delle curve (e di solito le cose in natura seguono un andamento curvilineo approssimabile in parabola

lesto: serve una proporzione. passo numero 1: 5v sta a 1024 , come 1V sta a X (5:1024=1:X) in questo modo trovi il valore analogRead per quando leggi 1V... (1024/5)*1=~205 dunque, ora sappiamo che se leggiamo 1V l'analogRead vale 205.

se dividiamo per 2 otteniamo il valore della lettura per 0.5V, ovvero 102

ora prendiamo l'equazione della retta: Y = mX+q

per il pin1: noi abbiamo 2 coppie di valori: y=-35 x=205 e y=-60 x=102 ora puoi fare un sistema: -35=m*205+q -60=m*102+q

se sottrai membro a membro ottieni: 25=103m+q quindi q=25-103m ora che hai trovato Q, la sostituisci in una delle due equazioni e trovi la M. A questo punto puoi trovare il valore numerico sia di M che di Q. a questo punto, ogni valore analogRead diventa la X, e la Y è il valore che hai cercato.

stesso procedimento per il pin2

Per fare questo procedimento, però, esiste già una funzione arduino detta map; se non erro: int y = map (x, 102, 205, -60, -35);

ps. si può risolvere con le proporzioni, ma questo metodo mi è venuto in mente subito, anche perchè basta sostituire l'equazione della retta con quella di parabola etc... ed avere tanti punti quante le incognite per poter avere anche delle curve (e di solito le cose in natura seguono un andamento curvilineo approssimabile in parabola

Come prima cosa ti ringrazio per l' ottima spiegazione, ma purtroppo le mie lacune rendono tutto ciò di non facile comprensione. Avrò riletto 20 volte con carta e penna alla mano ma nulla... Dunque: per il pin 0 posso ricavare diverse coppie di valori per rendere il tutto più preciso. Mi basta un tester ed un attenuatore, domani sicuramente lo faccio. Avendo più coppie di valori devo sempre sottrarre come hai fatto tu con due coppie? Fino a qui ci sono

25=103m+q

ma qui mi sono perso

quindi q=25-103m
ora che hai trovato Q, la sostituisci in una delle due equazioni e trovi la M. A questo punto puoi trovare il valore numerico sia di M che di Q.
a questo punto, ogni valore analogRead diventa la X, e la Y è il valore che hai cercato.

stesso procedimento per il pin2

come si trova q? ed m? San google non mi sta aiutando... http://www.google.it/url?sa=t&source=web&cd=1&sqi=2&ved=0CBgQFjAA&url=http%3A%2F%2Fskuola.tiscali.it%2Fmateriale%2Fretta.pdf&rct=j&q=y%20mx%2Bq&ei=3bUtTuzgAdOSgQeLvL2gCw&usg=AFQjCNEtX_F3cvwKBBCkl3b1wFeIK2XGrQ&sig2=C3u1hg4Y9xTce1chhWVk6Q&cad=rja Vediamo con il pin 1 y=1000 x=205 y=500 x=102 500=103m+q Fin qui non ci vuole un genio :) Grazie per la pazienza, poi penserò a tradurlo in codice.

una volta che hai trovato i valori q e m sono fissi, non serve rifare il calcolo, anzi, non farlo risparmi cpu. allora, una volta che hai il sistema, sottrai le 2 y, e le due x, errore mio, sottraendo anche le q ti ritrovi: 25=103m

quindi quì è facile trovare la M=25/103

ora metti il valore di M in una delle due equazioni di prima e risolvi. trovando la Q.

per rinfrescare la memoria: http://it.wikipedia.org/wiki/Sistema_di_equazioni

lesto:
una volta che hai trovato i valori q e m sono fissi, non serve rifare il calcolo, anzi, non farlo risparmi cpu.
allora, una volta che hai il sistema, sottrai le 2 y, e le due x, errore mio, sottraendo anche le q ti ritrovi:
25=103m

quindi quì è facile trovare la M=25/103

ora metti il valore di M in una delle due equazioni di prima e risolvi. trovando la Q.

per rinfrescare la memoria: http://it.wikipedia.org/wiki/Sistema_di_equazioni

Inizio a vedere uno spiraglio di luce
m=0.242
q=25-103*0.242 quindi 0,074
Dico bene?
Tradotto in codice (posto solo la parte interessata)

for (int analogChannel = 0; analogChannel < 1; analogChannel++) {
            client.print("Il segnale ricevuto corrisponde a -");
	    client.print((analogRead(0.074)) ;  //5V=1023 
            client.println(" dbm");
	  }
          for (int analogChannel = 1; analogChannel < 2; analogChannel++) {
            client.print("
 La potenza erogata dal TX è pari a ");//la funzione 
 serve per andare a capo
	    client.print((analogRead(0.074) ) ;  //5V=1023 0V=0 
            client.println(" W");
          }

la parte in codice non è corretta

Errore di copia incolla, sorry. Ho editato. Trovo interessante anche questo http://www.arduino.cc/en/Reference/Map

no, viene client.print( ( (analogRead(pinDaLeggere)*m )+q ) ; //5V=1023 0V=0

Grazie mille per la disponibilità e pazienza. In questi giorni sistemo il tutto e poi vi aggiornerò