De Arduino UNO biedt de mogelijkheid om te communiceren met de echte wereld met behulp van zijn digitale pinnen. U kunt deze pinnen gebruiken om apparaten zoals LED's, motoren en relais te besturen, of inputs van sensoren, knoppen en schakelaars lezen. Deze zelfstudie legt uit hoe u digitale pinnen kunt instellen, lees- en schrijfbewerkingen uit kunt uitvoeren en gebruik if
Verklaringen voor op logica gebaseerde beslissingen in uw projecten.
Wat u nodig hebt
- Arduino Uno met USB -kabel
- LED en een weerstand van 220-ohm (voor uitgangsvoorbeelden)
- Druk op de knop en een 10K-ohm weerstand (voor invoervoorbeelden)
- Breadboard en jumper draden
- Een computer met de Arduino Ide geïnstalleerd
Stap 1: Digitale pinnen opzetten
Digitale pin -modi
Arduino Uno heeft 14 digitale pennen (D0-D13). Deze pinnen kunnen worden geconfigureerd als:
- Invoer: Om signalen van sensoren of schakelaars te lezen.
- Uitvoer: Om LED's, motoren of andere actuatoren te beheersen.
Gebruik de pinMode()
functie om de modus van een pin in te stellen in de setup()
functie:
pinMode(pinNumber, mode);
-
pinNumber
: De pin die u wilt configureren (bijv. 2, 3, enz.). -
mode
: OfINPUT
,INPUT_PULLUP
, ofOUTPUT
.
Stap 2: schrijven naar een digitale pin
U kunt apparaten besturen door te schrijven HIGH
of LOW
naar een uitvoerpen met behulp van de digitalWrite()
functie:
digitalWrite(pinNumber, value);
-
value
: OfHIGH
(5V) ofLOW
(0V).
Voorbeeld: knipperen een LED
Hier leest u hoe u een LED kunt knipperen die is verbonden met 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
}
Stap 3: Lezen vanuit een digitale pin
Gebruik de staat om de status van een pin te lezen digitalRead()
functie:
int state = digitalRead(pinNumber);
-
state
: Zal een van beide zijnHIGH
ofLOW
gebaseerd op het ingangssignaal.
Voorbeeld: een knop lezen Druk op
Sluit een drukknop aan op Pin 2 met een pull-down weerstand (10K-OHM). Indien ingedrukt, verzendt de knop een HIGH
signaal.
#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
}
}
Stap 4: gebruiken if
Verklaringen met digitale pennen
if
Met verklaringen kunt u voorwaardelijke logica in uw programma maken. Combineer digitale lezingen en schrijft om acties uit te voeren op basis van inputs.
Voorbeeld: schakel een LED op knop Druk op knop
Deze schets schakelt de LED -status op telkens wanneer de knop wordt ingedrukt:
#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
}
Stap 5: Geavanceerd gebruik met logische bewerkingen
U kunt meerdere gebruiken if
Uitspraken, else if
en logische operators (&&
, ||
, enz.) Om complexer gedrag te creëren.
Voorbeeld: multi-inputbesturing
Besturing een LED op basis van de staten van twee knoppen:
#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
}
}
Problemen oplossen
-
LED verlicht niet:
- Zorg ervoor dat de LED correct is verbonden (lange been op de positieve pin).
- Gebruik een weerstand van 220-ohm om schade te voorkomen.
-
Knop reageert niet:
- Controleer op de juiste bedrading met een pull-down of pull-up weerstand.
- Controleer of de pinmode is ingesteld op
INPUT
ofINPUT_PULLUP
.
-
Debounce -kwesties:
- Gebruik een kleine vertraging of implementeer een software -debounce -mechanisme om signaalruis uit mechanische knoppen te verwerken.
Conclusie
U hebt geleerd hoe u digitale lees- en schrijfbewerkingen kunt uitvoeren met Arduino Uno, configureer pin -modi en gebruik if
Verklaringen voor voorwaardelijke logica. Met deze fundamentele vaardigheden kunt u een breed scala aan hardwarecomponenten besturen en interactieve, responsieve projecten maken. Experimenteer verder door meerdere ingangen en outputs te combineren voor complexer gedrag!