Usi di programmazione Arduino strutture di controllo ad esempio Se, per, mentre e cambi un caso Per controllare il processo decisionale e i loop in uno schizzo. Queste strutture consentono il Arduino Per rispondere alle condizioni, ripetere le attività ed eseguire diversi blocchi di codice in base all'input.
1. If Dichiarazione (esecuzione condizionale)
IL If Dichiarazione viene utilizzato per eseguire un blocco di codice Solo se viene soddisfatta una condizione specificata.
Sintassi
if (condition) {
// Code to execute if condition is true
}
Esempio: accendere un LED in base a un pulsante Premere
const int buttonPin = 2; // Button connected to pin 2
const int ledPin = 13; // LED connected to pin 13
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
int buttonState = digitalRead(buttonPin); // Read button state
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH); // Turn LED on if button is pressed
} else {
digitalWrite(ledPin, LOW); // Turn LED off otherwise
}
}
Dichiarazione If-Else
if (temperature > 30) {
Serial.println("It's too hot!");
} else {
Serial.println("Temperature is normal.");
}
Istruzione if-else if
if (temperature > 30) {
Serial.println("It's too hot!");
} else if (temperature < 10) {
Serial.println("It's too cold!");
} else {
Serial.println("Temperature is comfortable.");
}
2. Per loop (compiti ripetuti un numero fisso di volte)
UN per loop esegue un blocco di codice un numero fisso di volte. È comunemente usato per iterare su array o controllare le attività ripetitive.
Sintassi
for (initialization; condition; increment) {
// Code to execute in each iteration
}
Esempio: lampeggiare un LED 5 volte
const int ledPin = 13;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
for (int i = 0; i < 5; i++) { // Loop runs 5 times
digitalWrite(ledPin, HIGH); // Turn LED on
delay(500); // Wait 500 ms
digitalWrite(ledPin, LOW); // Turn LED off
delay(500);
}
delay(2000); // Pause before repeating
}
Esempio: correre attraverso un array
int numbers[] = {1, 2, 3, 4, 5};
void setup() {
Serial.begin(9600);
}
void loop() {
for (int i = 0; i < 5; i++) {
Serial.println(numbers[i]); // Print each number in the array
}
delay(2000);
}
3. Durante il ciclo (ripetuta fino a quando non viene soddisfatta una condizione)
UN mentre loop esegue un blocco di codice Finché una condizione specificata rimane vera.
Sintassi
while (condition) {
// Code to execute while the condition is true
}
Esempio: in attesa di un pulsante Premere
const int buttonPin = 2;
void setup() {
pinMode(buttonPin, INPUT);
Serial.begin(9600);
}
void loop() {
Serial.println("Waiting for button press...");
while (digitalRead(buttonPin) == LOW) {
// Stay in loop until button is pressed
}
Serial.println("Button pressed!");
}
Esempio: Timer del conto alla rovescia
int count = 10;
void setup() {
Serial.begin(9600);
}
void loop() {
while (count > 0) {
Serial.print("Countdown: ");
Serial.println(count);
count--;
delay(1000);
}
Serial.println("Liftoff!");
delay(5000); // Restart countdown after delay
count = 10; // Reset count
}
4. Custode di commutazione (gestire in modo efficiente le condizioni multiple)
UN Switch Case Dichiarazione viene usato quando È necessario controllare più condizioni, rendendolo un'alternativa a if-else if-else catene.
Sintassi
switch (variable) {
case value1:
// Code to execute if variable == value1
break;
case value2:
// Code to execute if variable == value2
break;
default:
// Code to execute if none of the cases match
}
Esempio: controllo di un LED con un interruttore rotante
const int ledPin = 13;
int mode = 1; // Example mode variable
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
switch (mode) {
case 1:
Serial.println("Mode 1: LED ON");
digitalWrite(ledPin, HIGH);
break;
case 2:
Serial.println("Mode 2: LED BLINKING");
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
break;
case 3:
Serial.println("Mode 3: LED OFF");
digitalWrite(ledPin, LOW);
break;
default:
Serial.println("Invalid Mode");
break;
}
}
Esempio: utilizzo di un pulsante per scorrere attraverso le modalità
const int buttonPin = 2;
int mode = 1;
void setup() {
pinMode(buttonPin, INPUT);
Serial.begin(9600);
}
void loop() {
if (digitalRead(buttonPin) == HIGH) {
mode++;
if (mode > 3) mode = 1; // Reset mode to 1 if it exceeds 3
delay(500); // Debounce delay
}
switch (mode) {
case 1:
Serial.println("Mode 1: Low Power Mode");
break;
case 2:
Serial.println("Mode 2: Normal Mode");
break;
case 3:
Serial.println("Mode 3: High Performance Mode");
break;
default:
Serial.println("Invalid Mode");
break;
}
}
Conclusione
- Se dichiarazioni Consenti l'esecuzione condizionale in base alle letture del sensore o alle pressioni del pulsante.
- per i loop sono utili per compiti ripetitivi con un conteggio noto, come lampeggiare un LED.
- mentre i loop Eseguire il codice continuamente fino a quando non viene soddisfatta una condizione specifica.
- Cambia dichiarazioni dei casi Semplifica il processo decisionale quando si gestiscono più condizioni in modo efficiente.
Queste strutture Migliora la programmazione di Arduino Rendendo più semplice la gestione di loop, condizioni e controllo del dispositivo. 🚀