Az Arduino UNO képes arra, hogy digitális csapjaival kölcsönhatásba lépjen a valós világgal. Ezeket a csapokat használhatja olyan eszközök vezérlésére, mint a LED -ek, a motorok és a relék, vagy az érzékelőkből, gombokból és kapcsolókból származó bemenetek olvasása. Ez az oktatóanyag elmagyarázza, hogyan állítsa be a digitális csapokat, olvassa el az olvasási és írási műveleteket, és használja if
Nyilatkozatok a projektekben logikai alapú döntésekről.
Mire lesz szüksége
- Arduino UNO USB -kábelrel
- LED és egy 220-OHM ellenállás (kimeneti példákhoz)
- Nyomógomb és egy 10K-ohm ellenállás (bemeneti példákhoz)
- Kenyérlemez és jumper vezetékek
- Egy számítógép, amelyen az Arduino IDE telepített
1. lépés: Digitális csapok beállítása
Digitális PIN -módok
Az Arduino UNO-nak 14 digitális csapja van (D0-D13). Ezek a csapok konfigurálhatók:
- Bemenet: Az érzékelők vagy kapcsolók jeleinek olvasása.
- Kimenet: A LED -ek, motorok vagy más hajtóművek vezérlése.
Használja a pinMode()
funkció a PIN -kód módjának beállításához a setup()
funkció:
pinMode(pinNumber, mode);
-
pinNumber
: A konfigurálni kívánt PIN -kód (például 2, 3, stb.). -
mode
: BármelyikINPUT
,INPUT_PULLUP
, vagyOUTPUT
.
2. lépés: Írás egy digitális tűre
Az eszközöket írással vezérelheti HIGH
vagy LOW
egy kimeneti csaphoz a digitalWrite()
funkció:
digitalWrite(pinNumber, value);
-
value
: BármelyikHIGH
(5V) vagyLOW
(0V).
Példa: egy LED pislogása
Íme, hogyan pisloghat egy LED -t, amely a 13. érintkezőhöz csatlakozik:
#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
}
3. lépés: Olvasás egy digitális tűből
A PIN -kód állapotának elolvasásához használja a digitalRead()
funkció:
int state = digitalRead(pinNumber);
-
state
: Lesz az isHIGH
vagyLOW
a bemeneti jel alapján.
Példa: Egy gombnyomás olvasása
Csatlakoztasson egy nyomógombot a 2. érintkezőhöz egy legördülő ellenállással (10k-ohm). Amikor megnyomják, a gomb elküldi a HIGH
jel.
#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. lépés: Használat if
Nyilatkozatok digitális csapokkal
if
Az állítások lehetővé teszik a feltételes logika létrehozását a programban. Kombinálja a digitális leolvasásokat és írást, hogy a bemenetek alapján műveleteket hajtson végre.
Példa: Váltás egy LED -es gombra nyomja meg a gombot
Ez a vázlat a LED -állapotot minden egyes gomb megnyomásakor váltja:
#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
}
5. lépés: Fejlett használat logikai műveletekkel
Használhatja a többszöröset if
nyilatkozatok, else if
és logikai operátorok (&&
, ||
stb.), hogy összetettebb viselkedéseket hozzon létre.
Példa: Multi-bemeneti vezérlés
A LED ellenőrzése két gomb állapota alapján:
#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
}
}
Hibaelhárítás
-
A LED nem világít:
- Győződjön meg arról, hogy a LED helyesen van csatlakoztatva (hosszú láb a pozitív PIN -hez).
- Használjon 220 ohmos ellenállást a sérülések elkerülése érdekében.
-
A gomb nem válaszol:
- Ellenőrizze, hogy nincs-e megfelelő vezeték a lefelé vagy a húzó ellenállással.
- Ellenőrizze, hogy a pinMode beállítva van -e
INPUT
vagyINPUT_PULLUP
.
-
Kezelési kérdések:
- Használjon egy kis késleltetést, vagy hajtson végre egy szoftver elszámolási mechanizmust a mechanikus gombok jelzajának kezelésére.
Következtetés
Megtanulta, hogyan kell elvégezni a digitális olvasási és írási műveleteket az Arduino UNO -val, konfigurálhatja a PIN -módokat, és használhatja if
A feltételes logika nyilatkozata. Ezek az alapvető készségek lehetővé teszik a hardverkomponensek széles skálájának ellenőrzését és interaktív, érzékeny projektek létrehozását. Kísérletezzen tovább több bemenet és output kombinálásával a bonyolultabb viselkedés érdekében!