아두이노 loop 정지 - adu-ino loop jeongji

Arduino/esp8266

아두이노-UNO, 스위치, 카운트 운전 & 정지 테스트... 성미시리얼

 ​운전 스위치 가 눌리면, 카운트값이 증가하고, 증가한 값을 송신합니다.

    정지 스위치 를 누르면, 카운트 정지를 합니다.

extern volatile unsigned long timer0_millis;
int swPin1=8; // 스위치1 핀을 설정합니다, 운전
int swPin2=9; // 스위치2 핀을 설정합니다, 정지
int t1 =0; // 0~10 카운트 변수입니다
int t10ms=0; // 10ms 카운트 변수입니다
bool run_fg=false; // 운전 & 정지 플래그

bool repeat=false;  // 스위치 반복플래그
//----------------------------------------------------
void setup() { // 초기설정 함수입니다
   Serial.begin(9600); // 9600 bps 로 설정합니다
   pinMode(swPin1, INPUT); // 운전 스위치를 입력핀으로 설정합니다
   pinMode(swPin2, INPUT); // 정지 스위치를 입력핀으로 설정합니다
   pinMode(swPin1, INPUT_PULLUP); // 운전 스위치핀에 풀업저항을 연결합니다
   pinMode(swPin2, INPUT_PULLUP); // 정지 스위치핀에 풀업저항을 연결합니다

}
//----------------------------------------------------
void loop() { // 매인루프 함수입니다
   if (millis() >= 10) { // 10ms가 되었다면?
      timer0_millis = 0; // millis 카운트를 초기화 합니다
      if (run_fg==true) put_txd(); // 운전상태면?
      chk_sw(); // 스위치검사 함수를 호출합니다

   }
}

//----------------------------------------------------
void put_txd() { // per10ms, 시리얼 송신함수입니다
   if (++t10ms >= 50) { // 500ms가 되었다면?
      t10ms = 0; // 10ms 카운트변수를 초기화를 수행합니다
      Serial.print("t1: "); // 문자를 송신합니다
      Serial.println(t1); // 카운트값을 송신합니다
      if (++t1 > 10) { // 10회 가 되었다면?
         t1 = 0; // 10회 카운트변수를 초기화합니다
      }
   }
}
//----------------------------------------------------
void chk_sw() { // per10ms, 스위치상태를 검사합니다
   byte b1= digitalRead(swPin1); //스위치1 상태를 저장합니다
   byte b2= digitalRead(swPin2); //스위치2 상태를 저장합니다
   if (b1==HIGH && b2==HIGH) { //스위치가 눌리지 않았다면?
      repeat = false; // 스위치반복 플래그 끄기(OFF)를 합니다
      return; // 호출한 함수로 돌아값니다
   }
   if (repeat==true) return; // 스위치눌림 반복중이면?
   repeat = true; // 스위치반복 플래그 켜기(ON)를 합니다

     if (b1==LOW)

run_fg=true; // 운전 스위치가 눌린상태면?

   else run_fg false; // 정지 스위치가 눌린상태

   }
// 아두이노-UNO, Arduino, 카운트, 운전, 정지, 시리얼, 통신, 반복, 성미시리얼

아두이노 loop 정지 - adu-ino loop jeongji