Az analóg érzékelő várható maximum és minimum értékeinek meghatározása.
Utolsó felülvizsgálat: 2022.02.04 16:50
Ez a példa egy technikát mutat be az érzékelő bemenetének kalibrálására. A kártya az indítás után öt másodpercig méri az érzékelőt, és követi a kapott legmagasabb és legalacsonyabb értékeket. Ezek a szenzorleolvasások a vázlat végrehajtásának első öt másodpercében határozzák meg a minimális és maximális várható értékeket a ciklusban mért értékekhez.
Hardver szükséglet
Arduino kártya
LED
analóg érzékelő (egy fotoellenállás is megteszi)
10 kohm-os ellenállás
220 ohm-os ellenállás
összekötő vezetékek
dugdosós próbapanel (breadboard)
Az áramkör
Analóg érzékelő (pl. potenciométer, fényérzékelő) a 2. analóg bemeneten. LED a 9-es digitális kivezetésen.

Csatlakoztasson egy LED-et a 9-es digitális kivezetéshez 220 ohmos áramkorlátozó ellenállással sorba kapcsolva. Csatlakoztasson egy fotoellenállást az 5V-hoz, majd az analóg 0-s kivezetéshez 10 kohmos ellenállással a földhöz.
Vázlat

A kód
A setup előtt beállítja a minimális és a maximum kezdeti értékeit, például:
int sensorMin = 1023; // minimum érzékelő érték
int sensorMax = 0; // maximum érzékelő érték
Ezek visszásnak tűnhetnek. Kezdetben beállít minimumnak egy magas értéket, és ha minden eddiginél alacsonyabb értéket olvas, akkor elmenti új minimumként. Hasonlóképpen beállít maximálisnak egy alacsony értéket, és minden beolvasott magasabb értéknél menti az új maximumot, például:
// kalibrálás az első öt másodperc folyamán
while (millis() < 5000) {
sensorValue = analogRead(sensorPin);
// rögzítse az érzékelő maximális értékét
if (sensorValue > sensorMax) {
sensorMax = sensorValue;
}
// rögzítse az érzékelő minimális értékét
if (sensorValue < sensorMin) {
sensorMin = sensorValue;
}
}
Ily módon minden további mérési érték leképezhető a minimum és maximum közötti tartományra, így:
// alkalmazza a kalibrálást az érzékelő leolvasására
sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255);
Íme a teljes program:
/*
Calibration
Egy technikát mutat be az érzékelő bemenetének kalibrálására. Az érzékelő leolvasásaival
a vázlat végrehajtásának első öt másodpercében meghatározza az érzékelő kivezetéséhez
csatolt várható értékek minimumát és maximumát.
Az érzékelő minimális és maximális kezdeti értéke visszásnak tűnhet. Kezdetben beállít a minimumnak
egy magas értéket, és minden alacsonyabbra figyel, és elmenti új minimumként. Hasonlóképpen beállít
maximumnak egy alacsony értéket, és minden magasabb értékre figyel az új maximumként.
Az áramkör:
- analóg érzékelő (potenciométer megteszi), amely a 0 analóg bemenethez van csatlakoztatva
- A 9-es digitális kivezetésről a földre csatlakoztatott LED 220 ohmos ellenálláson keresztül
created 29 Oct 2008
by David A Mellis
modified 30 Aug 2011
by Tom Igoe
modified 07 Apr 2017
by Zachary J. Fields
Ez a kód nyilvános.
https://docs.arduino.cc/built-in-examples/analog/Calibration
*/
// Ezek az állandók nem változnak:
const int sensorPin = A0; // kivezetés, amelyhez az érzékelő csatlakozik
const int ledPin = 9; // kivezetés, amelyhez a LED csatlakozik
// változók:
int sensorValue = 0; // az éerékelő értéke
int sensorMin = 1023; // minimum érzékelő érték
int sensorMax = 0; // maximum érzékelő érték
void setup() {
// kapcsolja be a LED-et, hogy jelezze a kalibrációs időszak kezdetét:
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
// kalibrálás az első öt másodperc folyamán
while (millis() < 5000) {
sensorValue = analogRead(sensorPin);
// rögzítse az érzékelő maximális értékét
if (sensorValue > sensorMax) {
sensorMax = sensorValue;
}
// rögzítse az érzékelő minimális értékét
if (sensorValue < sensorMin) {
sensorMin = sensorValue;
}
}
// jelzi a kalibrációs időszak végét
digitalWrite(13, LOW);
}
void loop() {
// az érzékelő olvasása:
sensorValue = analogRead(sensorPin);
// ha az érzékelő értéke kívül esik a kalibrálás során látott tartományon
sensorValue = constrain(sensorValue, sensorMin, sensorMax);
// alkalmazza a kalibrálást az érzékelő leolvasására
sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255);
// halványítsa el a LED-et a kalibrált értékkel:
analogWrite(ledPin, sensorValue);
}
Tudj meg többet
További alapvető oktatóanyagokat a beépített példák részben talál.
Felfedezheti a nyelvi referenciát is, az Arduino programozási nyelv részletes gyűjteményét.