Arduino Uno offre la capacità di interagire con il mondo reale utilizzando i suoi pin digitali. È possibile utilizzare questi pin per controllare dispositivi come LED, motori e relè o leggi input da sensori, pulsanti e switch. Questo tutorial spiegherà come impostare i pin digitali, eseguire operazioni di lettura e scrittura e utilizzare if
Dichiarazioni per le decisioni basate sulla logica nei tuoi progetti.
Cosa avrai bisogno
- Arduino Uno con cavo USB
- LED e una resistenza da 220 ohm (per esempi di output)
- Pulsante e una resistenza da 10k-ohm (per esempi di input)
- Breadboard e fili jumper
- Un computer con l'IDE Arduino installato
Passaggio 1: impostare pin digitali
Modalità per pin digitali
Arduino Uno ha 14 pin digitali (D0-D13). Questi pin possono essere configurati come:
- Ingresso: Per leggere i segnali da sensori o switch.
- Produzione: Per controllare i LED, i motori o altri attuatori.
Usare il pinMode()
funzione per impostare la modalità di un pin in setup()
funzione:
pinMode(pinNumber, mode);
-
pinNumber
: Il pin che si desidera configurare (ad es., 2, 3, ecc.). -
mode
: OINPUT
,INPUT_PULLUP
, OOUTPUT
.
Passaggio 2: scrivere su un perno digitale
Puoi controllare i dispositivi scrivendo HIGH
O LOW
a un pin di output usando il file digitalWrite()
funzione:
digitalWrite(pinNumber, value);
-
value
: OHIGH
(5V) oLOW
(0V).
Esempio: lampeggiare un LED
Ecco come sbattere le palpebre un LED collegato al 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
}
Passaggio 3: leggere da un perno digitale
Per leggere lo stato di un pin, usa il digitalRead()
funzione:
int state = digitalRead(pinNumber);
-
state
: Sarà nemmenoHIGH
OLOW
in base al segnale di ingresso.
Esempio: lettura di un pulsante Premere
Collegare un pulsante per il pin 2 con un resistore a discesa (10k-ohm). Quando viene premuto, il pulsante invierà un HIGH
segnale.
#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
}
}
Passaggio 4: usando if
Dichiarazioni con pin digitali
if
Le dichiarazioni consentono di creare una logica condizionale nel programma. Combina le letture digitali e le scritture per eseguire azioni basate sugli input.
Esempio: disattiva un pulsante LED su premi
Questo schizzo attiva lo stato a LED ogni volta che viene premuto il pulsante:
#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
}
Passaggio 5: utilizzo avanzato con operazioni logiche
Puoi usare più if
dichiarazioni, else if
e operatori logici (&&
, ||
, ecc.) Per creare comportamenti più complessi.
Esempio: controllo multi-input
Controlla un LED in base agli stati di due pulsanti:
#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
}
}
Risoluzione dei problemi
-
LED non si illumina:
- Assicurarsi che il LED sia collegato correttamente (gamba lunga al pin positivo).
- Utilizzare una resistenza da 220 ohm per evitare danni.
-
Il pulsante non risponde:
- Verificare la presenza di cablaggi adeguati con una resistenza a discesa o pull-up.
- Verificare che PinMode sia impostato su
INPUT
OINPUT_PULLUP
.
-
Problemi di debounce:
- Utilizzare un piccolo ritardo o implementare un meccanismo di deboa di software per gestire il rumore del segnale dai pulsanti meccanici.
Conclusione
Hai imparato come eseguire operazioni di lettura e scrittura digitale con Arduino Uno, configurare le modalità PIN e utilizzare if
Dichiarazioni per la logica condizionale. Queste competenze fondamentali consentono di controllare un'ampia varietà di componenti hardware e creare progetti interattivi e reattivi. Sperimenta ulteriormente combinando più input e output per comportamenti più complessi!