
نوشته اصلی توسط
abbasjavanmardi
من تغییرات تو برنامه رو ایجاد کردم اگه امکان داره بازبینی بفرمایید و سناریو به این شکله ک
1.اگر کلید A در حالت HIGH باشه و مقدار جاری زمان از زمان قبلی بیشتر از مقدار تایم(یک ساعت)بیشتر بشه رله چپ گرد رو روشن کنه و چهار چوب بره به سمت کلید B
2.حالا تو if چهارم گفتیم به محض رسیدن چهارچوب به کلید B, رله چپ گرد خاموش شه
3.اگر کلید َB در حالت HIGH باشه و مقدار جاری زمان از زمان قبلی بیشتر از مقدار تایم(یک ساعت)بیشتر بشه رله راست گرد رو روشن کنه و چهار چوب بره به سمت کلید A
4.حالا تو if سوم گفتیم به محض رسیدن چهارچوب به کلید A, رله راست گرد خاموش شه
با این کد جواب نمیگیری
باید شرطهای بعدیت بشه else if
نمونه کد من که تست کردم :
کد:
const int button_A = 2; //pin for button A
const int button_B = 3; //pin for button B
const int relay_L = 4; //pin for Left turn motor
const int relay_R = 5; //pin for Right turn motor
unsigned long previousMillis = 0; // will store last time button was updated
long OffTime = 10000; // milliseconds of off-time
void setup() {
pinMode(button_A, INPUT);
pinMode(button_B, INPUT);
pinMode(relay_L, OUTPUT);
pinMode(relay_R, OUTPUT);
Serial.begin(9600);
}
void loop()
{
unsigned long currentMillis = millis();
if (Serial.available() > 0) {
char data = Serial.read();
if ((data == 'a') && (currentMillis - previousMillis >= OffTime))
{
previousMillis = currentMillis; // Remember the time
Serial.println("C1");
}
else if ((data == 'b') && (currentMillis - previousMillis >= OffTime))
{
previousMillis = currentMillis; // Remember the time
Serial.println("C2");
}
else if (data == 'a')
{
Serial.println("C3");
}
else if (data == 'b')
{
Serial.println("C4");
}
}
}