Eğitimler
AnalogInOutSerial
Bu örnek, bir analog giriş pininin nasıl okunacağını, sonucun 0 ila 255 arasında bir aralıkla nasıl eşleneceğini, bir LED'i kısmak veya aydınlatmak ve değerleri yazdırmak için bir çıkış piminin darbe genişliği modülasyonunu (PWM) ayarlamak için bu sonucu kullanın Arduino Yazılımının (IDE) seri monitörü.
Gerekli Donanım
- Arduino veya Genuino Kurulu
- Potansiyometre
- Kırmızı LED
- 220 ohm direnç
Devre
Tencerenizden bir pimi 5V'ye, orta pimi analog pim 0'a ve kalan pimi şasiye bağlayın. Ardından, bir seri LED ile dijital pim 9'a 220 ohm akım sınırlama direnci bağlayın. LED'in uzun, pozitif ayağı (anot), dirençten gelen çıkışa, daha kısa, negatif bacak (katot) toprağa bağlı olmalıdır.
Şematik
Kod
Aşağıdaki çizimde, iki pin ataması (potansiyometremiz için analog 0 ve outputValue
için dijital 9) ve iki değişken ( sensorValue
ve outputValue
setup()
sonra, setup()
işlevinde yaptığınız tek şey seri iletişim başlatmaktır.
Ardından, ana döngüde, potansiyometreden okunan ham analog değerini saklamak için sensorValue
atanır. analogRead
0 ila 1023 arasında bir analogWrite
aralığı ve yalnızca 0 ila 255 arasında bir analogWrite
aralığı vardır, bu nedenle potansiyometreden gelen verilerin LED'i karartmak için kullanmadan önce daha küçük aralığa sığacak şekilde dönüştürülmesi gerekir.
Bu değeri dönüştürmek için map () adında bir işlev kullanın:
outputValue = map(sensorValue, 0, 1023, 0, 255);
outputValue
, potansiyometreden ölçeklenen değere eşit outputValue
şekilde atanır. map()
beş bağımsız değişkeni kabul eder: Eşlenecek değer, giriş verilerinin düşük aralık ve yüksek değerleri ile yeniden eşlenecek verilerin düşük ve yüksek değerleri. Bu durumda, sensör verileri orijinal aralığı 0 ila 1023 ila 0 ila 255 arasında eşlenir.
Daha sonra yeni eşlenen sensör verileri, potansiyometre döndürüldüğünde LED'in analogOutPin
karartmasına veya parlaklığına gönderilir. Son olarak, hem ham hem de ölçeklenmiş sensör değerleri Arduino Software (IDE) seri monitör penceresine sabit bir veri akışında gönderilir.
Analog input, analog output, serial output
Reads an analog input pin, maps the result to a range from 0 to 255 and uses
the result to set the pulse width modulation (PWM) of an output pin.
Also prints the results to the Serial Monitor.
The circuit:
- potentiometer connected to analog pin 0.
Center pin of the potentiometer goes to the analog pin.
side pins of the potentiometer go to +5V and ground
- LED connected from digital pin 9 to ground
created 29 Dec. 2008
modified 9 Apr 2012
by Tom Igoe
This example code is in the public domain.
http:egitim.aspx?e=AnalogInOutSerial
*/
// These constants won't change. They're used to give names to the pins used:
const int analogInPin = A0; // Analog input pin that the potentiometer is attached to
const int analogOutPin = 9; // Analog output pin that the LED is attached to
int sensorValue = 0; // value read from the pot
int outputValue = 0; // value output to the PWM (analog out)
void setup() {
// initialize serial communications at 9600 bps:
Serial.begin(9600);
}
void loop() {
// read the analog in value:
sensorValue = analogRead(analogInPin);
// map it to the range of the analog out:
outputValue = map(sensorValue, 0, 1023, 0, 255);
// change the analog out value:
analogWrite(analogOutPin, outputValue);
// print the results to the Serial Monitor:
Serial.print("sensor = ");
Serial.print(sensorValue);
Serial.print("\t output = ");
Serial.println(outputValue);
// wait 2 milliseconds before the next loop for the analog-to-digital
// converter to settle after the last reading:
delay(2);
}
See Also
- map()
- analogRead()
- analogWrite()
- serial()
- AnalogInput- Bir LED'in yanıp sönmesini kontrol etmek için bir potansiyometre kullanın.
- AnalogWriteMega- Arduino veya Genuino Mega kartı kullanarak 12 LED'i tek tek açıp kapatın.
- Calibration- Beklenen analog sensör değerleri için bir maksimum ve minimum tanımlayın.
- Fading- Bir LED'in solması için bir analog çıkış (PWM pin) kullanın.
- Smoothing- Bir analog girişin çoklu okumalarını düzgünleştirin.