Arduino map () - Methode - warum?
Ich war nur Blick auf einige Beispiel-code und stieß auf eine Zeile, die ich nicht ganz verstehen, warum es getan werden muss. Ich verstehe, dass Sie sich in einen analogen Wert. Dieser Wert liegt zwischen 0 und 1024 offenbar? Warum ist das so? Warum nimmt der Ausgang abgebildet werden müssen zwischen 0 und 255? Was bestimmt die Argumente, die hier verwendet werden? Die Zeile in Frage :
//map it to the range of the analog out:
outputValue = map(sensorValue, 0, 1024, 0, 255);
Hervorgehoben 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);
}
Vielen Dank für die Antworten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den analogen Ausgang nur dann einen zulässigen Bereich zwischen 0 und 255.
Daher der Wert zugeordnet werden, der innerhalb des zulässigen Bereichs.
Unterlagen für map-Methode ist hier: http://arduino.cc/en/Reference/map
Diese Erklärung kommt von einem Arduino-sensor-tutorial(unter dem 'Code' - header): http://arduino.cc/en/Tutorial/AnalogInOutSerial
Warum? Manchmal müssen Sie zum übersetzen von 0 bis 1023 in einer Reihe von ANDEREN Werten ALS 0 bis 1023 und die
map()
Funktion ist ein Versuch, um diese einfacher für Sie, den Ingenieur. Ich erkläre eine situation im detail auf dieses forum posten, wo ich bin in der Lage, konvertieren von 0 auf 90 oder 100 Indizes eines Arrays mit Werten von 0 bis 1023 Ganzzahlen in ein x-y-graphical plot!idx
reicht von 0 auf einen Wert nahe 100.test[idx]
ist die ADC-Werte, so im Bereich von 0 bis 1023.Also der obige code setzt ein x 0-~100 und y von 0-1023 in diese:
Mein build schreiben ist hier. (und als der 7-31-2013, ist in Arbeit)
Ich persönlich finde, dass es eine klare Darstellung des "warum" ist die beste Erklärung. Ich hoffe, meine Antwort hilft, jeder Infragestellung dieses "warum" wie ... warum.
map()
als eine Art von scaling-Funktion...? Sie sind willkommen, Fragen stellen, etc, auf dass forum. 🙂