Bir Anahtarın Durumunu İzleme (Dijital Okuma Seri) - Arduino Temelleri

Sorunları Ortadan Kaldırmak Için Enstrümanımızı Deneyin





Bu Arduino temelleri, harici bir düğmenin AÇIK veya KAPALI durumunun Arduino içinde okunabileceği veya izlenebileceği bir kod uygulama yöntemini tartışır.

Dijital Okuma Seri

Burada, Arduino'nuzda ve PC'nizde USB aracılığıyla seri iletişim gerçekleştirerek bir anahtarın durumunu nasıl izleyeceğinizi öğreniyoruz.



Arduino Kartınızın ötesinde, aşağıdaki temel öğelere ihtiyacınız olacaktır:

Donanım

Anlık bir anahtar, düğme veya basmalı bir anahtar



10k, 1/4 watt ohm direnç

devre tahtası
bağlantı veya atlama teli bağlantıları.

Devre Çalışması

İşlem aşağıdaki adımlarla yapılabilir:

3 adet jumper teli alın ve bunları Arduino kartınıza bağlayın.Kırmızı ve siyah tellerden ikisi, devre tahtasının yan tarafındaki iki uzun dikey sıraya gider, bunlar devre tahtasının besleme kabloları haline gelir ve karta 5V DC gerekli.

Üçüncü kablo, dijital pim 2'yi basmalı açma anahtarının uçlarından birine bağlamak için kullanılır.

Düğmenin bu özel ucu aynı zamanda aşağıya çekilebilir bir 10k dirençle negatif besleme rayına veya toprağa bağlanır. Anahtarın diğer serbest ucu 5 voltluk beslemenin pozitifiyle bağlantılıdır.

Yukarıdaki bağlantılarla, anahtar, bir itme verildiğinde devrede geçiş yapar veya ikili bir eylem gerçekleştirir.

Normalde, anahtar bağlantısı kesilmiş bir pozisyonda olduğunda, iki ucu izole edilmiş durumda kalır, öyle ki aşağı çekme direnci yoluyla zemine bağlanan pim bir DÜŞÜK veya mantık 0 seviyesi verir.

Basılmış durumda, anahtar, uçları + 5 volta maruz kalacak şekilde, iki uç arasında anlık bir köprü kurar ve bunlar arasında YÜKSEK veya mantık 1 seviyesi oluşturur.

Diğer şeylerden dijital i / o pin çıkışlarını izole etmek, LED'i karışıklığa zorlayabilir ve düzensiz yanıp sönmeye neden olabilir. Bunun nedeni, girdinin herhangi bir şeye dönüştürülmemesi veya 'asılı' bir konumda tutulmasıdır - yani ne yüksek ne de düşük (+ 5V veya 0V) herhangi bir kesin mantığa atanmamıştır, bu nedenle anahtarı ile aşağı çekme direnci.

Şematik

Kodu Anlamak

Aşağıdaki programda, kurulum işlevi dahilinde saniyede 9600 bit veri hızında seri iletişim ile başlıyoruz, bu Arduino kartı ile bağlı bilgisayar arasında başlatılıyor: Serial.begin (9600)

Bir sonraki adımda, giriş olarak basmalı anahtarla çıkıştan sorumlu olacak pin olan dijital pin 2'yi tetikliyoruz: pinMode (2, INPUT) Bu, 'kurulumumuzu' tamamlıyor, şimdi kodumuzun ana döngüsüne giriyoruz .

Burada basma düğmesine basıldığında, devremizden 5 volt geçmesine izin verilirken, giriş pimi, sıkıştırılmamış durumda olduğunda 10 kilohm direnç üzerinden toprağa bağlanır.

Yukarıdakine, anahtarın yalnızca belirli bir durumda (Arduino tarafından '1' veya LOGIC HIGH olarak kabul edilir) veya kapalı durumda (görselleştirilmiş) olabileceği bir durumu ifade eden dijital giriş dediğimiz şeydir. Arduino tarafından '0' veya MANTIK DÜŞÜK olarak), aralarında herhangi bir tanımlanmamış sates olmadan.

Programın ana döngüsünde yürütmemiz gereken temel eylem, basma düğmesiyle gönderilen bilgileri yerinde tutmak için bir değişken uygulamaktır.

Yukarıda sinyallerin bir '1' veya bir '0' biçiminde olduğu gibi, burada bir int veri türü kullanıyoruz. Bu değişkeni sensorValue olarak adlandırabilir ve dijital pin 2'de okunan her şeye karşılık gelecek şekilde düzeltebiliriz. Tüm bunlar tek bir kod satırı ile ulaşılabilir hale gelir:

int sensorValue = digitalRead (2) Arduino girişi okuduktan sonra, onu ondalık bir değer şeklinde bilgisayara geri yazdırın.

Bu, kodun son satırındaki Serial.println () komutu yardımıyla uygulanabilir: Serial.println (sensorValue)

Bundan sonra, Arduino alanında Seri Monitör her başlatıldığında, butonun açık pozisyonda olduğu sırada '0'lar zincirine ve butonun kapalı durumda tutulması durumunda' 1'lerin zincirlerine şahit oluruz.

/*
DigitalReadSerial
Reads a digital input on pin 2, prints the result to the serial monitor
This example code is in the public domain.
*/
// digital pin 2 has a pushbutton attached to it. Give it a name:
int pushButton = 2

// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600)
// make the pushbutton's pin an input:
pinMode(pushButton, INPUT)
}
// the loop routine runs over and over again forever:
void loop() {
// read the input pin:
int buttonState = digitalRead(pushButton)
// print out the state of the button:
Serial.println(buttonState)
delay(1) // delay in between reads for stability
}




Önceki: Zamanlayıcı Devreli Özelleştirilmiş Su Akış Kontrolörü Sonraki: Analogu Dijitale Dönüştürme (Analog Seri Okuma) - Arduino Temelleri