AnalogInput

Bu örnekte bir değişken direnç (bir potansiyometre veya bir fotodirenç) kullanıyoruz, değerini bir Arduino veya Genuino kartının bir analog girişini kullanarak okuyoruz ve dahili LED'in yanıp sönme oranını buna göre değiştiriyoruz. Direncin analog değeri voltaj olarak okunur, çünkü analog girişler bu şekilde çalışır.

Gerekli Donanım

  • Arduino veya Genuino Kurulu
  • Potansiyometre veya
  • 10K ohm fotodirenç ve 10K ohm direnç
  • pim 13 üzerinde dahili LED veya
  • 220 ohm direnç ve kırmızı LED

Devre

Bir potansiyometre ile büyütmek için resme tıklayın

Bir fotodirenç ile görüntüyü büyütmek için tıklayın

Üç kabloyu Arduino veya Genuino kartına bağlayın. Birincisi, potansiyometrenin dış pimlerinden birinden toprağa gider. İkincisi, 5 volttan potansiyometrenin diğer dış pimine gider. Üçüncüsü analog giriş 0'dan potansiyometrenin orta pinine gider.

Bu örnek için, kartın 13 numaralı pime takılı dahili LED'ini kullanmak mümkündür. Ek bir LED kullanmak için, daha uzun bacağını (pozitif bacak veya anot) 220 ohm direnç ile seri olarak 13 numaralı dijital pime, ve 13 no'lu pimin yanındaki toprak (GND) pimine daha kısa bacak (negatif bacak veya katot).

Bir fotorezistöre dayanan devre, yüksek emicili Analog girişinin voltajı ölçmesine izin vermek için bir direnç bölücü kullanır. Bu girişler hemen hemen hiç akım çekmez, bu nedenle Ohm yasası uyarınca, direncin değerine bakılmaksızın, 5V'a bağlı bir direncin diğer ucunda ölçülen voltaj her zaman 5V'dur. Fotodirenç değeri ile orantılı bir voltaj elde etmek için bir direnç bölücü gereklidir. Bu devre değişken bir direnç, sabit bir direnç kullanır ve ölçüm noktası dirençlerin ortasındadır. Ölçülen voltaj (Vout) şu formülü takip eder:

Vout = Vin * (R2 / (R1 + R2))

Vin, 5V, R2 10k ohm ve R1, karanlıkta 1M ohm'dan gün ışığında (10 lümen) 10k ohm'a ve parlak ışık veya güneş ışığında (> 100 lümen) 1k ohm'dan daha az olan fotodirenç değeridir.

Şematik

büyütmek için resme tıklayın
Potansiyometre

büyütmek için resme tıklayın
Fotodirenç

Kod

Bu kroki başında, değişken sensorPin sizin potansiyometre takılı analog pin 0, için için ayarlanır ve ledPin Ayrıca, başka bir değişken oluşturacağız dijital pim 13 olarak ayarlanır sensorValue değerler sensörden okunan saklamak için .

analogRead() komutu, 0 ila 5 volt arasındaki giriş voltaj aralığını 0 ile analogRead() arasındaki bir dijital değere dönüştürür. Bu, mikrodenetleyicinin içindeki bir analogdan dijitale dönüştürücü veya ADC adı verilen bir devre tarafından yapılır.

Potansiyometrenin şaftını çevirerek, potansiyometrenin orta piminin (veya sileceğinin) her iki tarafındaki direnç miktarını değiştirirsiniz. Bu, merkez pim ile iki dış pim arasındaki bağıl dirençleri değiştirerek analog girişte size farklı bir voltaj verir. Şaft bir yöne tamamen çevrildiğinde, merkez pim ile toprağa bağlı pim arasında direnç yoktur. Bu durumda merkez analogRead() voltaj 0 volttur ve analogRead() 0 analogRead() döndürür. Mil diğer yöne tam olarak çevrildiğinde, merkez pim ile +5 volta bağlı pim arasında direnç yoktur. analogRead() voltaj 5 volttur ve analogRead() 1023 analogRead() döndürür. analogRead() , pime uygulanan voltaj miktarıyla orantılı olarak 0 ile 1023 arasında bir sayı döndürür.

sensorValue içinde saklanan bu değer, göz kırpma döngünüz için bir delay() ayarlamak için kullanılır. Değer ne kadar yüksek olursa, döngü o kadar uzun, değer ne kadar küçükse, döngü o kadar kısa olur. Değer, döngünün başında okunur, bu nedenle açma / kapama süresi her zaman eşittir.


/*
  Analog Input

  Demonstrates analog input by reading an analog sensor on analog pin 0 and
  turning on and off a light emitting diode(LED) connected to digital pin 13.
  The amount of time the LED will be on and off depends on the value obtained
  by analogRead().

  The circuit:
  - potentiometer
    center pin of the potentiometer to the analog input 0
    one side pin (either one) to ground
    the other side pin to +5V
  - LED
    anode (long leg) attached to digital output 13
    cathode (short leg) attached to ground

  - Note: because most Arduinos have a built-in LED attached to pin 13 on the
    board, the LED is optional.

  created by David Cuartielles
  modified 30 Aug 2011
  By Tom Igoe

  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/AnalogInput
*/

int sensorPin = A0;    // select the input pin for the potentiometer
int ledPin = 13;      // select the pin for the LED
int sensorValue = 0;  // variable to store the value coming from the sensor

void setup() {
  // declare the ledPin as an OUTPUT:
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // read the value from the sensor:
  sensorValue = analogRead(sensorPin);
  // turn the ledPin on
  digitalWrite(ledPin, HIGH);
  // stop the program for  milliseconds:
  delay(sensorValue);
  // turn the ledPin off:
  digitalWrite(ledPin, LOW);
  // stop the program for for  milliseconds:
  delay(sensorValue);
}

See Also

  • pinMode()
  • analogRead()
  • digitalWrite()
  • delay()

  • AnalogInOutSerial- Bir analog giriş pinini okuyun, sonucu eşleyin ve ardından bir LED'i kısmak veya aydınlatmak için bu verileri 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.