Digitális olvasás és írás az Arduino Uno használatával

Digital Read and Write Using the Arduino Uno

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

  1. Arduino UNO USB -kábelrel
  2. LED és egy 220-OHM ellenállás (kimeneti példákhoz)
  3. Nyomógomb és egy 10K-ohm ellenállás (bemeneti példákhoz)
  4. Kenyérlemez és jumper vezetékek
  5. 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ármelyik INPUT, INPUT_PULLUP, vagy OUTPUT.

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ármelyik HIGH (5V) vagy LOW (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 is HIGH vagy LOW 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 vagy INPUT_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!

Hagyj egy megjegyzést

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.