Cyfrowe odczyt i zapis za pomocą Arduino Uno

Digital Read and Write Using the Arduino Uno

Arduino Uno zapewnia możliwość interakcji z prawdziwym światem za pomocą cyfrowych szpilków. Możesz użyć tych pinów do sterowania urządzeniami, takimi jak diody LED, silniki i przekaźniki lub odczytać wejścia z czujników, przycisków i przełączników. Ten samouczek wyjaśni, jak skonfigurować cyfrowe szpilki, wykonywać operacje odczytu i pisania oraz wykorzystywać if Oświadczenia dotyczące decyzji opartych na logice w twoich projektach.


Czego będziesz potrzebować

  1. Arduino UNO z kablem USB
  2. LED i rezystor 220-OHM (dla przykładów wyjściowych)
  3. Przycisk i rezystor 10K-OHM (dla przykładów wejściowych)
  4. Druty chleba i skoczków
  5. Komputer z zainstalowanym Arduino IDE

Krok 1: Konfigurowanie cyfrowych pinów

Cyfrowe tryby PIN

Arduino Uno ma 14 cyfrowych pinów (D0-D13). Te piny można skonfigurować jako:

  • Wejście: Aby odczytać sygnały z czujników lub przełączników.
  • Wyjście: Kontrolować diody LED, silniki lub inne siłowniki.

Użyj pinMode() funkcja, aby ustawić tryb szpilki w setup() funkcjonować:

pinMode(pinNumber, mode);
  • pinNumber: PIN, który chcesz skonfigurować (np. 2, 3 itd.).
  • mode: Albo INPUT, INPUT_PULLUP, Lub OUTPUT.

Krok 2: Pisanie do cyfrowej szpilki

Możesz kontrolować urządzenia, pisząc HIGH Lub LOW do szpilki wyjściowej za pomocą digitalWrite() funkcjonować:

digitalWrite(pinNumber, value);
  • value: Albo HIGH (5 V) lub LOW (0v).

Przykład: Mruganie diody LED

Oto jak mrugnąć diodą LED podłączoną do pin 13:

#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
}

Krok 3: Czytanie z cyfrowej szpilki

Aby przeczytać stan szpilki, użyj digitalRead() funkcjonować:

int state = digitalRead(pinNumber);
  • state: Będzie albo HIGH Lub LOW na podstawie sygnału wejściowego.

Przykład: Czytanie przycisku Naciśnij

Podłącz przycisk do pin 2 z rezystorem rozciągającym (10k-ohm). Po naciśnięciu przycisk wyśle HIGH sygnał.

#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
  }
}

Krok 4: Używanie if Oświadczenia z cyfrowymi szpilkami

if Wyciągi umożliwiają tworzenie logiki warunkowej w programie. Połącz odczyty cyfrowe i zapisz, aby wykonywać działania oparte na wejściach.

Przykład: Przełącz przycisk LED naciśnij

Ten szkic przełącza stan LED za każdym razem, gdy naciska się przycisk:

#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
}

Krok 5: Zaawansowane wykorzystanie z operacjami logicznymi

Możesz użyć wielu if stwierdzenia, else ifi logiczni operatorzy (&&, ||itp.) Aby stworzyć bardziej złożone zachowania.

Przykład: Kontrola wielu wejściowych

Kontroluj diodę LED na podstawie stanów dwóch przycisków:

#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
  }
}

Rozwiązywanie problemów

  • LED nie oświetla:

    • Upewnij się, że dioda LED jest prawidłowo podłączona (długa noga do dodatniego szpilki).
    • Użyj rezystora 220-OHM, aby uniknąć uszkodzeń.
  • Przycisk nie odpowiada:

    • Sprawdź odpowiednie okablowanie za pomocą odpornego na rozciąganie lub podciąganie.
    • Sprawdź, czy pinmod jest ustawiony INPUT Lub INPUT_PULLUP.
  • Problemy z debunacją:

    • Użyj niewielkiego opóźnienia lub wdrożyć mechanizm debucyjny oprogramowania do obsługi szumu sygnału z przycisków mechanicznych.

Wniosek

Nauczyłeś się wykonywać cyfrowe operacje odczytu i pisania z Arduino UNO, konfigurować tryby PIN i używać if Oświadczenia dotyczące logiki warunkowej. Te podstawowe umiejętności umożliwiają kontrolowanie szerokiej gamy komponentów sprzętowych i tworzenie interaktywnych, responsywnych projektów. Eksperymentuj dalej, łącząc wiele danych wejściowych i wyjściowych w celu bardziej złożonego zachowania!

Zostaw komentarz

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.