Digital läsning och skriv med Arduino Uno

Digital Read and Write Using the Arduino Uno

Arduino UNO ger förmågan att interagera med den verkliga världen med sina digitala stift. Du kan använda dessa stift för att styra enheter som lysdioder, motorer och reläer eller läsa ingångar från sensorer, knappar och switchar. Denna handledning kommer att förklara hur man ställer in digitala stift, utför läs- och skrivoperationer och använder if Uttalanden för logikbaserade beslut i dina projekt.


Vad du behöver

  1. Arduino Uno med USB -kabel
  2. LED och ett 220-ohm-motstånd (för utgångsexempel)
  3. Tryckknapp och ett 10K-ohm-motstånd (för inmatningsexempel)
  4. Breadboard och jumpertrådar
  5. En dator med Arduino Ide installerad

Steg 1: Ställa in digitala stift

Digitala stiftlägen

Arduino Uno har 14 digitala stift (D0-D13). Dessa stift kan konfigureras som:

  • Input: För att läsa signaler från sensorer eller switchar.
  • Produktion: För att kontrollera lysdioder, motorer eller andra ställdon.

Använda pinMode() funktion för att ställa in läget för en stift i setup() fungera:

pinMode(pinNumber, mode);
  • pinNumber: Stiftet du vill konfigurera (t.ex. 2, 3, etc.).
  • mode: Antingen INPUT, INPUT_PULLUPeller OUTPUT.

Steg 2: Skriva till en digital stift

Du kan styra enheter genom att skriva HIGH eller LOW till en utgångsstift med digitalWrite() fungera:

digitalWrite(pinNumber, value);
  • value: Antingen HIGH (5V) eller LOW (0V).

Exempel: Blinkande en LED

Så här blinkar du en LED ansluten till stift 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
}

Steg 3: Läsning från en digital stift

För att läsa tillståndet på en stift, använd digitalRead() fungera:

int state = digitalRead(pinNumber);
  • state: Kommer att vara antingen HIGH eller LOW baserat på insignalen.

Exempel: Läsa en knapptryckning

Anslut en tryckknapp till stift 2 med ett neddragningsmotstånd (10K-ohm). När du trycker på kommer knappen att skicka en HIGH signal.

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

Steg 4: Använda if Uttalanden med digitala stift

if Uttalanden gör att du kan skapa villkorad logik i ditt program. Kombinera digitala läsningar och skriver för att utföra åtgärder baserade på input.

Exempel: Växla en LED på Button Press

Den här skissen växlar LED -tillståndet varje gång knappen trycks in:

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

Steg 5: Avancerad användning med logikoperationer

Du kan använda flera if uttalanden, else ifoch logiska operatörer (&&, ||, etc.) för att skapa mer komplexa beteenden.

Exempel: Multi-ingångskontroll

Kontrollera en LED baserad på tillstånden för två knappar:

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

Felsökning

  • LED tänds inte:

    • Se till att lysdioden är ansluten korrekt (långt ben till den positiva stiftet).
    • Använd ett 220-ohm-motstånd för att undvika skador.
  • Knappen svarar inte:

    • Kontrollera om det är korrekt ledningar med ett neddragnings- eller pull-up-motstånd.
    • Verifiera att pinmode är inställd på INPUT eller INPUT_PULLUP.
  • Avskaffa frågor:

    • Använd en liten fördröjning eller implementera en mjukvarumekanism för att hantera signalbrus från mekaniska knappar.

Slutsats

Du har lärt dig hur du utför digital läs- och skrivoperationer med Arduino UNO, konfigurera PIN -lägen och användning if Uttalanden för villkorad logik. Dessa grundläggande färdigheter gör det möjligt för dig att kontrollera en mängd olika hårdvarukomponenter och skapa interaktiva, lyhörda projekt. Experimentera ytterligare genom att kombinera flera ingångar och utgångar för mer komplext beteende!

Lämna en kommentar

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.