Stap 2: codering
Allereerst moet u de gegevens uit de meter dat hoe het werkt in verschillende posities. Te doen die vracht naar de Triscometer_test.ino vijl en probeer het uit. De meter zal niet max in de test.
Nadat u de magische getallen voor de meter hebben bedacht, beginnen met het schrijven van de belangrijkste code. Uw metingen van de meter afwijken van de mijne.
Eerste de globale variabelen.
//
Dan setup.
void setup(){ Serial.begin(9600); pinMode(meter, OUTPUT); }
En dan het hoofdprogramma. U kunt zien dat het heeft een heleboel als-instructies. Deze overzichten bevatten alle informatie die de meter moet de functie op het huidige niveau warmte. Door te doen zo veel als verklaringen mogelijk u ervoor zorgen kunt dat de meter zo nauwkeurig als het is kan worden.
void loop() { float temperature = getVoltage(temperaturePin); temperature = (temperature - .6) * 100; Serial.println(temperature); if (temperature <40) { analogWrite(meter, level); level = 0; } if (temperature >45){ analogWrite(meter, level); level = level + meterMovement; level = 40; meterMovement = -meterMovement; delay(10); } if (temperature >50){ analogWrite(meter, level); level = level + meterMovement; level = 50; meterMovement = -meterMovement; delay(10); }if (temperature >55){ analogWrite(meter, level); level = level + meterMovement; level = 60; meterMovement = -meterMovement; delay(10); }if (temperature >60){ analogWrite(meter, level); level = level + meterMovement; level = 70; meterMovement = -meterMovement; delay(10); }if (temperature >65){ analogWrite(meter, level); level = level + meterMovement; level = 100; meterMovement = -meterMovement; delay(10);if (temperature >70){ analogWrite(meter, level); level = level + meterMovement; level = 130; meterMovement = -meterMovement; delay(10); }if (temperature >75){ analogWrite(meter, level); level = level + meterMovement; level = 150; meterMovement = -meterMovement; delay(10); }if (temperature >80){ analogWrite(meter, level); level = level + meterMovement; level = 180; meterMovement = -meterMovement; delay(10); }if (temperature >85){ analogWrite(meter, level); level = level + meterMovement; level = 210; meterMovement = -meterMovement; delay(10); } if (temperature >90){ analogWrite(meter, level); level = level + meterMovement; level = 235; meterMovement = -meterMovement; delay(10); }if (temperature >95){ analogWrite(meter, level); level = level + meterMovement; level = 250; meterMovement = -meterMovement; delay(10); } if (temperature <120){ analogWrite(meter, level); level = level + meterMovement; level = 255; meterMovement = -meterMovement; delay(10); } } delay(100); }// for the TMP36 float getVoltage(int pin){ return (analogRead(pin) * .004882814); }