Arduino for Education
Endrer en tallrekke fra en lengde til en annen. Dvs. at tallområdet 0-1023 kan endres til 0-255. Er en verdi 511 i den første rekken, blir den 127 etter kommandoen map() er kjørt. Vi må gi kommandoen fem verdier. Verdien som skal endres, laveste vedi i den første tallrekken, høyeste vedi i den første tallrekken, laveste vedi i den nye tallrekken og høyeste vedi i den nye tallrekken.
PS: Høyeste vedi i den nye tallrekken kan være lavere enn laveste vedi i den nye tallrekken for å speilvende tallområder.
map (verdi, gmllav, gmlhøy, nylav, nyhøy)
verdi - verdien du vil endre
gmllav - laveste verdi i det "gamle" tallområdet.
gmlhøy - høyeste verdi i det "gamle" tallområdet.
nylav - laveste verdi i det nye tallområdet.
nyhøy - høyeste verdi i det nye tallområdet.
den nye verdien
int gammel = 0;
int ny = 0;
void setup() {
Serial.begin (9600);
}
void loop() {
for (gammel = 0; gammel < 1000; gammel++) {
ny = map (gammel, 0, 999, 0, 499);
Serial.print ("gammel er: ");
Serial.print (gammel, DEC);
Serial.print (" - Ny er: ");
Serial.println (ny, DEC);
}
}
Som tidligere nevnt bruker map () -funksjonen heltallsmatematikk. Så brøk kan bli undertrykt på grunn av dette. For eksempel vil brøk som 3/2, 4/3, 5/4 alle bli returnert som 1 fra map () -funksjonen, til tross for deres forskjellige faktiske verdier. Så hvis prosjektet ditt krever nøyaktige beregninger (f.eks. Spenning med tre desimaler), bør du vurdere å unngå map () og implementere beregningene manuelt i koden din selv.