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
- Arduino UNO cu cablu USB
- LED și o rezistență de 220-ohm (pentru exemple de ieșire)
- Buton de apăsare și un rezistență de 10k-ohm (pentru exemple de intrare)
- Tablă de pâine și jumper
- 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
: FieINPUT
,INPUT_PULLUP
, sauOUTPUT
.
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
: FieHIGH
(5V) sauLOW
(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 fieHIGH
sauLOW
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
sauINPUT_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!