Stap 3: De Code
door Christian Liljedahl
Christian.liljedahl.dk
Meetcellen zijn lineair. Dus zodra u hebben vastgesteld dat twee paren van de gegevens, kunt u de rest Interpoleer.
Stap 1: Upload deze schets naar je arduino board
U moet twee ladingen van goed weten gewicht. In dit voorbeeld A = 10 kg. B = 30 kg
Zet op belasting A
Lees de vertoning van de analoge waarde (dit is analogvalA)
Zet bij het laden van B
Lees de analoge waarde B
Voer je eigen analoge waarden hier
zweven loadA = 10; kg
int analogvalA = 200; analoge lezing genomen met lading A op de cel van de belasting
zweven loadB = 30; kg
int analogvalB = 600; analoge lezing genomen met lading B op de cel van de belasting
Uploaden van de schets weer, en bevestigen, dat de kilo-lezing van de seriële uitgang nu klopt, met behulp van uw bekende ladingen
zweven analogValueAverage = 0;
Hoe vaak doen we lezingen?
lange tijd = 0; //
int timeBetweenReadings = 200; Wij willen een lezing elke 200 ms;
VOID Setup {}
Serial.begin(9600);
}
void loop {}
int analogValue = analogRead(0);
Running gemiddelde - We vlot de lezingen die een klein beetje
analogValueAverage = 0.99 * analogValueAverage + 0,01 * analogValue;
Is het tijd om af te drukken?
if(Millis() > tijd + timeBetweenReadings) {}
float load = analogToLoad(analogValueAverage);
Serial.Print ("analogValue:"); Serial.println(analogValueAverage);
Serial.Print ("laden:"); Serial.println(Load,5);
tijd = millis();
}
}
zweven analogToLoad(float analogval) {}
met behulp van een aangepaste kaart-functie, omdat de standaard arduino kaart uitsluitend mailtoepasing int
float load = mapfloat (analogval, analogvalA, analogvalB, loadA, loadB);
terug van de belasting;
}
mapfloat zweven (float x, float in_min, drijven in_max, out_min drijven, zweven out_max)
{
terugkeer (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}