Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Задача: написать код на языке С

AliceOrlova Ученик (97), на голосовании 4 месяца назад
При подаче питания должен загореться зеленый светодиод, а при трехкратном нажатии кнопки
S1 загореться желтый светодиод, зеленый при этом не должен тухнуть, при нажатии на кнопку
S2 – все светодиоды тухнут, затем зеленый мигает 2 раза, а затем схема переходит в исходное
состояние и т.д.
Голосование за лучший ответ
Да Наверное Профи (628) 5 месяцев назад
#define GREEN_LED_PIN 7
#define YELLOW_LED_PIN 6
#define BUTTON_S1_PIN 5
#define BUTTON_S2_PIN 4

int s1_press_count = 0;
unsigned long lastDebounceTime = 0;
const unsigned long debounceDelay = 200;

void setup() {
pinMode(GREEN_LED_PIN, OUTPUT);
pinMode(YELLOW_LED_PIN, OUTPUT);

pinMode(BUTTON_S1_PIN, INPUT_PULLUP);
pinMode(BUTTON_S2_PIN, INPUT_PULLUP);

digitalWrite(GREEN_LED_PIN, HIGH);
}

void loop() {
if (digitalRead(BUTTON_S1_PIN) == LOW) {
if (millis() - lastDebounceTime > debounceDelay) {
lastDebounceTime = millis();
s1_press_count++;
if (s1_press_count == 3) {digitalWrite(YELLOW_LED_PIN, HIGH);}
}
}
if (digitalRead(BUTTON_S2_PIN) == LOW) {
if (millis() - lastDebounceTime > debounceDelay) {
lastDebounceTime = millis();
reset();
flashGreenLed(2);
digitalWrite(GREEN_LED_PIN, HIGH);
s1_press_count = 0;
}
}
}

void reset() {
digitalWrite(GREEN_LED_PIN, LOW);
digitalWrite(YELLOW_LED_PIN, LOW);
}

void flashGreenLed(int times) {
for (int i = 0; i < times; i++) {
digitalWrite(GREEN_LED_PIN, HIGH);
delay(500);
digitalWrite(GREEN_LED_PIN, LOW);
delay(500);
}
}
Похожие вопросы