Arduino Uno, dijital pimlerini kullanarak gerçek dünyayla etkileşim kurma yeteneği sağlar. Bu pimleri LED'ler, motorlar ve röleler gibi cihazları kontrol etmek için kullanabilir veya sensörler, düğmeler ve anahtarlardan girişleri okuyabilirsiniz. Bu öğretici, dijital pimlerin nasıl kurulacağını, okuma ve yazma işlemlerinin nasıl yapılacağını ve kullanılacağını açıklayacaktır. if
Projelerinizdeki mantık tabanlı kararlar için ifadeler.
Ne İhtiyacınız Olacak
- USB kablosu ile arduino uno
- LED ve 220 ohm direnç (çıkış örnekleri için)
- Push düğmesi ve 10k-ohm direnç (giriş örnekleri için)
- Breadboard ve jumper telleri
- Arduino IDE kurulu bir bilgisayar
1. Adım: Dijital Pimler Ayarlama
Dijital pim modları
Arduino UNO'nun 14 dijital pimi vardır (D0-D13). Bu pimler şu şekilde yapılandırılabilir:
- Giriş: Sensörlerden veya anahtarlardan sinyalleri okumak için.
- Çıktı: LED'leri, motorları veya diğer aktüatörleri kontrol etmek için.
Kullanın pinMode()
bir pin modunu ayarlamak için işlev setup()
işlev:
pinMode(pinNumber, mode);
-
pinNumber
: Yapılandırmak istediğiniz pim (örn., 2, 3 vb.). -
mode
: Herhangi biriINPUT
,INPUT_PULLUP
, veyaOUTPUT
.
2. Adım: Dijital Pime Yazma
Cihazları yazarak kontrol edebilirsiniz HIGH
veya LOW
bir çıkış pimine digitalWrite()
işlev:
digitalWrite(pinNumber, value);
-
value
: Herhangi biriHIGH
(5V) veyaLOW
(0V).
Örnek: Bir LED yanıp sönmek
Pin 13'e bağlı bir LED'i nasıl yanıp söneceğiniz aşağıda açıklanmıştır:
#define ledPin 13 // LED connected to pin 13
void setup() {
pinMode(ledPin, OUTPUT); // Set pin 13 as an output
}
void loop() {
digitalWrite(ledPin, HIGH); // Turn the LED on
delay(1000); // Wait for 1 second
digitalWrite(ledPin, LOW); // Turn the LED off
delay(1000); // Wait for 1 second
}
Adım 3: Dijital Pimden Okuma
Bir pin durumunu okumak için digitalRead()
işlev:
int state = digitalRead(pinNumber);
-
state
: Ya olacakHIGH
veyaLOW
Giriş sinyaline göre.
Örnek: Düğmeye basın
Bir pin düğmesine bir pin 2'ye bir çekme direnci (10k-ohm) ile bağlayın. Basıldığında, düğme bir HIGH
sinyal.
#define buttonPin 2 // Button connected to pin 2
#define ledPin 13 // LED connected to pin 13
void setup() {
pinMode(buttonPin, INPUT); // Set pin 2 as an input
pinMode(ledPin, OUTPUT); // Set pin 13 as an output
}
void loop() {
int buttonState = digitalRead(buttonPin); // Read the button state
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH); // Turn on the LED if the button is pressed
} else {
digitalWrite(ledPin, LOW); // Turn off the LED otherwise
}
}
4. Adım: Kullanma if
Dijital pimlerle ifadeler
if
İfadeler, programınızda koşullu mantık oluşturmanıza olanak tanır. Girişlere dayalı eylemler gerçekleştirmek için dijital okumaları ve yazıları birleştirin.
Örnek: Düğmeye basın
Bu eskiz, düğmeye her basıldığında LED durumu değiştirir:
#define buttonPin 2 // Button connected to pin 2
#define ledPin 13 // LED connected to pin 13
bool ledState = false; // Current state of the LED
bool lastButtonState = LOW; // Previous state of the button
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
bool currentButtonState = digitalRead(buttonPin);
if (currentButtonState == HIGH && lastButtonState == LOW) {
ledState = !ledState; // Toggle the LED state
digitalWrite(ledPin, ledState ? HIGH : LOW);
}
lastButtonState = currentButtonState; // Update the button state
delay(50); // Debounce delay
}
Adım 5: Mantık İşlemleri ile Gelişmiş Kullanım
Birden fazla kullanabilirsiniz if
ifadeler, else if
ve mantıksal operatörler (&&
, ||
, vb.) Daha karmaşık davranışlar yaratmak.
Örnek: Çok girişli kontrol
İki düğmenin durumlarına göre bir LED kontrol edin:
#define button1 2 // Button 1 connected to pin 2
#define button2 3 // Button 2 connected to pin 3
#define ledPin 13 // LED connected to pin 13
void setup() {
pinMode(button1, INPUT);
pinMode(button2, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
bool button1State = digitalRead(button1);
bool button2State = digitalRead(button2);
if (button1State == HIGH && button2State == HIGH) {
digitalWrite(ledPin, HIGH); // Turn on LED if both buttons are pressed
} else {
digitalWrite(ledPin, LOW); // Turn off LED otherwise
}
}
Sorun giderme
-
LED yanmaz:
- LED'in doğru şekilde bağlandığından emin olun (uzun bacak pozitif pime).
- Hasarı önlemek için 220 ohm'luk bir direnç kullanın.
-
Düğme yanıt vermiyor:
- Bir aşağı veya çekme direnci ile uygun kablolama olup olmadığını kontrol edin.
- Pinmode'un ayarlandığını doğrulayın
INPUT
veyaINPUT_PULLUP
.
-
Debounce sorunları:
- Mekanik düğmelerden sinyal gürültüsünü işlemek için küçük bir gecikme kullanın veya bir yazılım debounce mekanizması uygulayın.
Çözüm
Arduino UNO ile dijital okuma ve yazma işlemlerini nasıl gerçekleştireceğinizi, PIN modlarını yapılandırmayı ve kullanmayı öğrendiniz. if
Koşullu mantık için ifadeler. Bu temel beceriler, çok çeşitli donanım bileşenlerini kontrol etmenizi ve etkileşimli, duyarlı projeler oluşturmanızı sağlar. Daha karmaşık davranışlar için birden fazla giriş ve çıktı birleştirerek daha fazla deney yapın!