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ć
- Arduino UNO z kablem USB
- LED i rezystor 220-OHM (dla przykładów wyjściowych)
- Przycisk i rezystor 10K-OHM (dla przykładów wejściowych)
- Druty chleba i skoczków
- 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
: AlboINPUT
,INPUT_PULLUP
, LubOUTPUT
.
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
: AlboHIGH
(5 V) lubLOW
(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 alboHIGH
LubLOW
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 if
i 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
LubINPUT_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!