为什么我只能实现蜂鸣器响,led灯和触摸器没反应

img




```// 定义引脚号
#define CRASH_SWITCH 6
#define TOUCH_SENSOR 4
#define BUZZER 10
#define LED_PIN 8

// 定义状态常量
const int INITIAL_STATE = 0;
const int CRASH_PRESSED = 1;
const int TOUCH_PRESSED = 2;
const int SECOND_CRASH_PRESSED = 3;

// 定义LED状态常量
const int LED_OFF = 0;
const int LED_GREEN = 1;
const int LED_RED = 2;

// 初始化状态
int state = INITIAL_STATE;
int ledState = LED_OFF;

void setup() {
  // 初始化引脚模式
  pinMode(CRASH_SWITCH, INPUT_PULLUP);
  pinMode(TOUCH_SENSOR, INPUT);
  pinMode(BUZZER, OUTPUT);
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  // 检测 crash 开关是否被按下
  if (digitalRead(CRASH_SWITCH) == LOW) {
    delay(50); // 延迟一段时间以消除抖动
    if (digitalRead(CRASH_SWITCH) == LOW) {
      switch (state) {
        case INITIAL_STATE:
          // 第一次按下 crash 开关
          state = CRASH_PRESSED;
          ledState = LED_GREEN;
          tone(BUZZER, 600);
          break;
        case CRASH_PRESSED:
          // 第二次按下 crash 开关
          state = SECOND_CRASH_PRESSED;
          ledState = LED_OFF;
          noTone(BUZZER);
          break;
        case TOUCH_PRESSED:
          // 第二次按下 crash 开关
          state = SECOND_CRASH_PRESSED;
          ledState = LED_OFF;
          noTone(BUZZER);
          break;
        case SECOND_CRASH_PRESSED:
          // 重置状态
          state = INITIAL_STATE;
          break;
      }
    }
  }
  
  // 检测触摸传感器是否被触摸
  int touchValue = analogRead(TOUCH_SENSOR);
  if (touchValue < 800) {
    switch (state) {
      case CRASH_PRESSED:
      case SECOND_CRASH_PRESSED:
        // 触摸传感器被触摸
        state = TOUCH_PRESSED;
        ledState = LED_RED;
        tone(BUZZER, random(700, 1200));
        break;
      case TOUCH_PRESSED:
        // 不需要做任何事情
        break;
      case INITIAL_STATE:
        // 触摸传感器无效
        break;
    }
  } else {
    if (state == TOUCH_PRESSED) {
      // 触摸传感器没有被触摸
      state = CRASH_PRESSED;
      ledState = LED_GREEN;
      tone(BUZZER, 600);
    }
  }
  
 // 更新LED状态
  switch (ledState) {
    case LED_OFF:
      digitalWrite(LED_PIN, LOW);
      break;
    case LED_GREEN:
      digitalWrite(LED_PIN, HIGH);
      break;
    case LED_RED:
      digitalWrite(LED_PIN, (millis() / 100) % 2 == 0 ? HIGH : LOW); // 闪烁
      break;
  }
}


**



```