delay() ممنوع است، مگر اینکه سؤال صراحتاً اجازه دهد.break و continue، فقط استفاده ظاهری از این دستورات کافی نیست و باید کاربرد آنها از نظر منطقی صحیح باشد.کد زیر را بررسی کنید:
unsigned long previous = 0;
const unsigned long interval = 1000;
void loop() {
if (millis() == previous + interval) {
Serial.println("EVENT");
previous = millis();
}
}
if هیچوقت اجرا نشود؟millis() چیست و چه مشکلی ممکن است ایجاد کند؟currentTime - previousTime >= intervalprevious = millis(); و previous += interval;کد زیر را بررسی کنید:
uint8_t i = 10;
while (i >= 0) {
Serial.println(i);
i--;
}
i ایجاد میکند.int همیشه بهترین راهحل است؟ دلیل خود را توضیح دهید.کد زیر را بررسی کنید:
#define BUTTON 7
#define LED 13
int counter = 0;
void loop() {
for (int i = 0; i < 10; i++) {
if (digitalRead(BUTTON) == LOW) {
continue;
}
if (counter >= 5) {
break;
}
counter++;
digitalWrite(LED, HIGH);
}
digitalWrite(LED, LOW);
}
continue در این برنامه چه کاری انجام میدهد.break در این برنامه چه کاری انجام میدهد.counter برابر ۵ شود، چه اتفاقی برای حلقه for میافتد؟break و یک کاربرد مناسب برای continue در برنامههای Arduino توضیح دهید.کد زیر را بررسی کنید:
void loop() {
int value = analogRead(A0);
EEPROM.write(10, value);
delay(100);
}
EEPROM.write برای ذخیره مستقیم مقدار analogRead مناسب نیست؟EEPROM.put اصلاح کنید.EEPROM.update چه مشکلی را کاهش میدهد.EEPROM.update نیز به معنی حل کامل مشکل معماری EEPROM نیست؟با استفاده از HC-SR04 یک سیستم هشدار طراحی کنید.
| شرط | LED | Buzzer |
|---|---|---|
| فاصله بیشتر از ۱۰۰ سانتیمتر | خاموش | خاموش |
| فاصله بین ۵۰ تا ۱۰۰ سانتیمتر | روشن | فرکانس ۵۰۰Hz |
| فاصله کمتر از ۵۰ سانتیمتر | PWM | فرکانس ۱۰۰۰Hz |
delay ممنوع است.millis استفاده شود.enum استفاده شود.tone و noTone استفاده شود.پینهای زیر را در نظر بگیرید:
ENA = 5
IN1 = 7
IN2 = 8
تابع زیر را طراحی کنید:
void setMotor(int speed);
speed بین ۲۵۵- تا ۲۵۵+ است.speed > 0: حرکت Forwardspeed < 0: حرکت Reversespeed = 0: Stopspeed باید با constrain محدود شود.توضیح دهید:
speed را به Reverse تبدیل میکنید؟مقدار سنسور بین ۱۲۰ تا ۹۰۰ است. این مقدار باید به PWM بین ۴۰ تا ۲۲۰ تبدیل شود.
تابع زیر را کامل کنید:
uint8_t calculatePWM(int sensorValue);
map استفاده شود.constrain قبل یا بعد از map را توضیح دهید.تابعی به نام analyzeValues() طراحی کنید که سه عدد int را دریافت کند و موارد زیر را با استفاده از Reference برگرداند:
float باشد.تابع باید به شکل زیر قابل استفاده باشد:
int minValue;
int maxValue;
float avgValue;
int rangeValue;
analyzeValues(10, 25, 17, minValue, maxValue, avgValue, rangeValue);
خروجی مورد انتظار:
Minimum = 10
Maximum = 25
Average = 17.33
Range = 15
HC-05 دستورات زیر را دریافت میکند:
AUTO
MANUAL
MOTOR:150
MOTOR:-100
LED:80
BUZZER:1000
یک Command Parser طراحی کنید.
enum برای Mode استفاده کنید.continue آن Character نادیده گرفته شود.break برای خروج از حلقه استفاده شود.سیستم دارای Stateهای زیر است:
IDLE
WARNING
DANGER
ERROR
| شرط | State |
|---|---|
distance > 100 | IDLE |
50 <= distance <= 100 | WARNING |
distance < 50 | DANGER |
| distance نامعتبر | ERROR |
enum استفاده شود.noTone شود.delay ممنوع است.