티스토리 뷰

조건

1. 일반 정수 입력시 출력X
2. N뒤에 정수 입력시 출력O
3. T뒤에 정수 입력시 출력O
N뒤는 몇번 깜빡이는지, T뒤는 몇초동안 깜빡이는지를 의미한다

 

 

ex> 
420629 : 무시됨
N4T6 : 6초동안 4번깜빡임
N4 : ?초동안 4번깜빡임 
T6 : 6초동안 ?번깜빡임

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
const int SPI_SCK = 13;   // LED, Serial Clock
String incomingString = ""// for incoming serial data
int N = 0;        // N은 횟수
int T = 1;        // T는 간격
 
void setup() {
  pinMode(SPI_SCK, OUTPUT);
 
  Serial.begin(9600);
}
 
void loop() {
  if (Serial.available() > 0) {                // Serial raw data 유효성 검증
 
    incomingString = Serial.readString();    // data read
    Serial.print("received: " + incomingString);
 
    // 문자열 내 N, T 위치 저장 (없으면 -1)
    int N_locate = incomingString.indexOf("N");        
    int T_locate = incomingString.indexOf("T");
    Serial.println(N_locate, DEC);
    Serial.println(T_locate, DEC);
    
    // 문자열 뒤 숫자 처리
    if(N_locate != -1){
      String N_str = "";
      for(int i = N_locate + 1; i < incomingString.length() - 1; i++){
        if(incomingString[i] >= '0' && incomingString[i] <= '9'){
          N_str += incomingString[i];
        }
        else break;
      }
 
      if(N_str == "") N = 0;    // N이 없으면 0번 반복
      else N = N_str.toInt();    // N이 있으면 뒤따라오는 숫자만큼 반복
    }
 
    if(T_locate != -1){
      String T_str = "";
      for(int i = T_locate + 1; i < incomingString.length() - 1; i++){
        if(incomingString[i] >= '0' && incomingString[i] <= '9'){
          T_str += incomingString[i];
        }
        else break;
      }
 
      if(T_str == "") T = 1;    // T가 없으면 1 * 10(ms) = 0.1초 간격
      else T = T_str.toInt();    // T가 있으면 T * 10(ms) 로 간격 설정 
    }
 
    Serial.println(N, DEC);
    Serial.println(T, DEC);
 
    // LED 
    for(; N > 0; N--){
      digitalWrite(SPI_SCK, HIGH);
      delay(100 * T);
      digitalWrite(SPI_SCK, LOW);
      delay(100 * T);
    }
  }
}
cs
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함