Programarea Arduino utilizează structuri de control ca Dacă, pentru, în timp ce și comutați cazul să controleze luarea deciziilor și buclele într-o schiță. Aceste structuri permit Arduino Pentru a răspunde la condiții, repetați sarcini și executați diferite blocuri de cod pe baza intrării.
1. Declarație if (execuție condiționată)
Dacă afirmație este utilizat pentru a executa un bloc de cod numai dacă este îndeplinită o condiție specificată.
Sintaxă
if (condition) {
// Code to execute if condition is true
}
Exemplu: rotirea unui LED pe baza unui buton apăsat
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
}
}
Declarație if-else
if (temperature > 30) {
Serial.println("It's too hot!");
} else {
Serial.println("Temperature is normal.");
}
IF-ELSE IF IF STRUBE
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. Pentru buclă (repetarea sarcinilor de un număr fix de ori)
O pentru buclă rulează un bloc de cod un număr fix de ori. Este utilizat frecvent pentru Iterarea peste tablouri sau controlul sarcinilor repetitive.
Sintaxă
for (initialization; condition; increment) {
// Code to execute in each iteration
}
Exemplu: clipind un LED de 5 ori
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
}
Exemplu: Alergarea printr -un tablou
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. În timp ce bucla (repetând până la îndeplinirea unei condiții)
O în timp ce buclă rulează un bloc de cod Atâta timp cât o condiție specificată rămâne adevărată.
Sintaxă
while (condition) {
// Code to execute while the condition is true
}
Exemplu: Așteptarea unui buton Apăsați
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!");
}
Exemplu: Timer Countdown
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. CAZUL SWITCH (MANIGURAREA EFICIȚIELOR MULTIMENILOR)
O Declarația cazului de comutare este utilizat când Mai multe condiții trebuie verificate, făcând -o o alternativă la if-else if-else lanţuri.
Sintaxă
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
}
Exemplu: Controlul unui LED cu un comutator rotativ
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;
}
}
Exemplu: Utilizarea unui buton pentru a parcurge moduri prin moduri
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;
}
}
Concluzie
- Dacă declarații Permiteți executarea condiționată pe baza citirilor de senzori sau a apăsărilor butonului.
- pentru bucle sunt utile pentru sarcini repetitive cu un număr cunoscut, cum ar fi clipirea unui LED.
- în timp ce bucle Executați codul continuu până la îndeplinirea unei condiții specifice.
- Declarații de caz de comutare Simplificați luarea deciziilor atunci când gestionați mai multe condiții în mod eficient.
Aceste structuri Îmbunătățiți programarea Arduino prin a face mai ușor gestionarea buclelor, condițiilor și controlului dispozitivului. 🚀
1 comentariu
If Arduino programming leverages fundamental control structures—**`if`, *`for`, *`while`, and *`switch`/`case`—not as abstract syntax, but as real-time mechanisms to interpret sensor data, drive actuators, and respond dynamically to the physical world, then how might this reflect the essence of embedded computing? Unlike desktop programs that process static data, an Arduino sketch lives in constant dialogue with its environment: a `while` loop may wait for a button press, an `if` statement might trigger an LED at a temperature threshold, and a `for` loop could choreograph a servo sweep. These structures become the *nervous system** of a physical device—translating logic into action, turning code into behavior, and revealing that even the simplest control flow can animate matter when coupled with hardware. In this context, programming isn’t just about algorithms; it’s about embodied decision-making, where every conditional and loop shapes how a machine perceives and acts upon reality.
dte