title: Arduino map() method - why?
body: <p>I was just looking at some example code and came across a line, I don't fully understand why it needs to be done. I understand that you are taking in an analog value. This value is between 0 and 1024 apparently? Why is this? Why does the output need to be mapped between 0 and 255? What dictates the arguments that are used here? The line in question : </p>
  
  <pre><code>   // map it to the range of the analog out:
        outputValue = map(sensorValue, 0, 1024, 0, 255); 
  </code></pre>
  
  <p>Highlighted in the code : </p>
  
  <pre><code>created 29 Dec. 2008
   Modified 4 Sep 2010
   by Tom Igoe
  
   This example code is in the public domain.
  
   */
  
  // These constants won't change.  They're used to give names
  // to the pins used:
  const int analogInPin = A0;  // Analog input pin that the potentiometer is attached to
  const int analogOutPin = 9; // Analog output pin that the LED is attached to
  
  int sensorValue = 0;        // value read from the pot
  int outputValue = 0;        // value output to the PWM (analog out)
  
  void setup() {
    // initialize serial communications at 9600 bps:
    Serial.begin(9600); 
  }
  
  void loop() {
    // read the analog in value:
    sensorValue = analogRead(analogInPin);            
    **// map it to the range of the analog out:
    outputValue = map(sensorValue, 0, 1024, 0, 255);**  
    // change the analog out value:
    analogWrite(analogOutPin, outputValue);           
  
    // print the results to the serial monitor:
    Serial.print("sensor = " );                       
    Serial.print(sensorValue);      
    Serial.print("\t output = ");      
    Serial.println(outputValue);   
  
    // wait 10 milliseconds before the next loop
    // for the analog-to-digital converter to settle
    // after the last reading:
    delay(10);                     
  }
  </code></pre>
  
  <p>Thanks very much for the replies.</p>