Digitaal lezen en schrijven met de Arduino Uno

Digital Read and Write Using the Arduino Uno

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

  1. Arduino Uno met USB -kabel
  2. LED en een weerstand van 220-ohm (voor uitgangsvoorbeelden)
  3. Druk op de knop en een 10K-ohm weerstand (voor invoervoorbeelden)
  4. Breadboard en jumper draden
  5. 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: Of INPUT, INPUT_PULLUP, of OUTPUT.

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: Of HIGH (5V) of LOW (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 zijn HIGH of LOW 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 ifen 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 of INPUT_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!

Laat een reactie achter

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.