Citiți și scrieți digital folosind Arduino Uno

Digital Read and Write Using the Arduino Uno

Arduino Uno oferă capacitatea de a interacționa cu lumea reală folosind pinii digitali. Puteți utiliza acești pini pentru a controla dispozitive, cum ar fi LED -uri, motoare și relee, sau citiri de citire de la senzori, butoane și comutatoare. Acest tutorial va explica cum să configurați pini digitali, să efectuați operațiuni de citire și scriere și utilizați if Declarații pentru decizii bazate pe logică în proiectele dvs.


Ce vei avea nevoie

  1. Arduino UNO cu cablu USB
  2. LED și o rezistență de 220-ohm (pentru exemple de ieșire)
  3. Buton de apăsare și un rezistență de 10k-ohm (pentru exemple de intrare)
  4. Tablă de pâine și jumper
  5. Un computer cu IDE Arduino instalat

Pasul 1: Configurarea acelor digitale

Moduri PIN digitale

Arduino Uno are 14 pini digitali (D0-D13). Acești pini pot fi configurați ca:

  • Intrare: Pentru a citi semnale de la senzori sau comutatoare.
  • Ieșire: Pentru a controla LED -urile, motoarele sau alte actuatoare.

Folosiți pinMode() Funcție pentru a seta modul unui pin în setup() funcţie:

pinMode(pinNumber, mode);
  • pinNumber: PIN -ul pe care doriți să îl configurați (de exemplu, 2, 3 etc.).
  • mode: Fie INPUT, INPUT_PULLUP, sau OUTPUT.

Pasul 2: Scrierea pe un pin digital

Puteți controla dispozitivele scriind HIGH sau LOW la un pin de ieșire folosind digitalWrite() funcţie:

digitalWrite(pinNumber, value);
  • value: Fie HIGH (5V) sau LOW (0V).

Exemplu: clipind un LED

Iată cum să clipiți un LED conectat la pinul 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
}

Pasul 3: Citirea dintr -un pin digital

Pentru a citi starea unui pin, utilizați digitalRead() funcţie:

int state = digitalRead(pinNumber);
  • state: Va fi fie HIGH sau LOW pe baza semnalului de intrare.

Exemplu: Citirea unui buton Apăsați

Conectați un buton de apăsare la Pin 2 cu un rezistor de derulare (10K-OHM). Când este apăsat, butonul va trimite un HIGH semnal.

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

Pasul 4: Utilizarea if Declarații cu pini digitali

if Declarațiile vă permit să creați o logică condiționată în programul dvs. Combinați citirile și scrierile digitale pentru a efectua acțiuni bazate pe intrări.

Exemplu: Comutați un buton LED pe apăsat

Această schiță comută starea LED de fiecare dată când este apăsat butonul:

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

Pasul 5: Utilizare avansată cu operațiuni logice

Puteți utiliza mai multe if declarații, else if, și operatori logici (&&, ||etc.) pentru a crea comportamente mai complexe.

Exemplu: control multi-intrare

Controlează un LED pe baza stărilor a două butoane:

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

Depanare

  • LED -ul nu se aprinde:

    • Asigurați -vă că LED -ul este conectat corect (picior lung la pinul pozitiv).
    • Folosiți un rezistor de 220-ohm pentru a evita deteriorarea.
  • Butonul nu răspunde:

    • Verificați dacă există cabluri corespunzătoare cu o rezistență de tracțiune sau de tragere.
    • Verificați că pinmode este setat la INPUT sau INPUT_PULLUP.
  • Probleme de debutare:

    • Utilizați o mică întârziere sau implementați un mecanism de debutare software pentru a gestiona zgomotul semnalului de la butoanele mecanice.

Concluzie

Ați învățat cum să efectuați operațiuni de citire și scriere digitală cu Arduino Uno, configurați modurile PIN și utilizați if Declarații pentru logica condiționată. Aceste abilități fundamentale vă permit să controlați o mare varietate de componente hardware și să creați proiecte interactive, receptive. Experimentați în continuare combinând mai multe intrări și ieșiri pentru un comportament mai complex!

Lasă un comentariu

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.