Nybörjare Arduino (13 / 15 steg)
Steg 13: Arbeta med Analog indata
Innan du använder analoga data för att styra andra saker i programmet, kan du behöva skala det eller begränsa det mellan några min och max. Anta exempelvis att du vill använda läsningen från din analog ingång för att styra ljusstyrkan i en LED med analogWrite(). analogRead() returnerar nummer mellan 0 och 1023, men analogWrite() accepterar endast tal mellan 0 och 255. I detta fall kan du använda map() för att skala intervallet av värden som kommer från analogRead() till något lämpligt för analogWrite();karta (värde, fromLow, fromHigh, toLow, laboratoriumtohighkobolt) - skala en rad till en annan. Map() accepterar fyra ingångar: värde vi försöker skala, minuten av spänna vi skalning från spänna vi skalning från minuten av spänna vi skalning till max och spänna vi skalning till max.
Här är ett exempel:
analog ingång med karta
int potPin = A0;
int ledPin = 9;
void setup() {
pinMode (ledPin, produktionen);
Serial.BEGIN(9600);
}
void loop() {
int analogVal = analogRead (potPin), //analogVal är mellan 0 och 1023
int scaledVal = karta (analogVal, 0, 1023, 0, 255); //scaled val är mellan 0 och 255
Serial.Print ("analogVal =");
Serial.Print(analogVal);
Serial.Print ("scaledVal =");
Serial.Print(scaledVal);
analogWrite (ledPin, scaledVal);
}
Också check ute constrain(x, a, b) - begränsar ett antal x mellan en och b. Om x är mindre än en tvinga returnerar en, är x är större än b begränsa avkastningen b, annars tvinga returnerar x.