로그인회원등록 내글장바구니주문조회현재접속자
 상품 검색








 게시판 검색





 
 
회원등록 비번분실


온라인 입금계좌
ㆍ기업은행
ㆍ219-043192-01-028
ㆍ이건영

      거래은행 바로가기
 
 Arduino Open Source
아듀이노 함수의 상세설명
작성자 avrtools™        
작성일 2012/04/08
ㆍ추천: 0  ㆍ조회: 1682   
  직렬포트에서 문자를 받아 숫자 int로 저장
이번에는 아듀이노 전용명령을 사용하여 직렬포트를 수신하는 방법에 대해 설명합니다.
어떤 코드를 만드는데, 직렬포트에서 타이머 값을 4자리 ms으로 전송하면 int 변수로 저장하고
그 변수로 타이머를 돌려 시간에 비례하는 어떤 출력을 하려고 한다면?

우선 소스의 상단에 변수를 선언해야 합니다.
unsigned long start; 
unsigned int timer =1000;
// 기본 시간으로 처음에는 1초로 설정 
char tmp[4]


다음은 setup()을 만들어야 하지요
void setup(){
   // 여기에는 포트의 초기화 등을 넣는다.
  DDRD =0xFC;  // D2~D7을 출력으로 설정
  Serial.begin(115200);  // 직렬포트를 115.2Kbps로 통신속도를 설정
}
 
이제는 주함수 loop()를 만들어야 합니다.
void loop() {
  if (Serial.available()) {
   // 직렬포트에 어떤 문자가 들어 왔는가?
    switch (Serial.read()) { // 직렬포트에서 1 문자를 수신한다음 문자에 따라서 분기한다.

 
      case 'D':
   // D 문자가 들어오면 여기가 실행됨
        Serial.println("Dump on ");  // D 명령의 첫번째 반응으로 Dump on를 출력한다
        // 여기는 D 명령으로 처리할 함수를 호출한다
        break;
 
// D 명령 처리의 끝

  case 'T':   // 새로운 명령 T를 선택
    for (char i=0; i <4; i++) {
      while (!Serial.available());  
// 직렬포트로 데이터가 들어 올때 까지 여기서 대기

        tmp[i] =Serial.read();  // 10^3 부터 10^0 까지 4자를 ascii로 읽는다. 
    }
  timer =atoi(tmp); // ASCII 4자를 2 바이트 int로 변환하고 타이머 변수에 저장
  if (timer <100) timer =100; 
// 최소값 0.1초를 제한
  if (timer >9900) timer =9900;  // 최대값 9.9초를 제한
 
  Serial.print("Timer: ");  // Txxxx 가 들어온 값을 연결된 
통신창에 보여준다
  Serial.print(time_over, DEC);
  Serial.println("ms");  
// 단위는 ms 이다.


 
// T 명령의 수신 즉시 해야할 일이 있다면 여기에서 함수를 호출한다.
  break;  // T 명령 처리의 끝 

  default:   // 모든 명령이 일치하지 않은 경우, 일반적으로 이부분은 잘 사용하지 않는다.
      // 여기에 위 명령에 선택되지 않은 나머지 명령의 처리를 추가할 수 있다.
     break; // default 처리의 끝 
  }

  // 여기는 명령 수신이 끝나고 주함수에서 평소에 하는 일을 처리한다.
  // ,,,,,
  // 여기도 명령 수신이 끝나고 주함수에서 할 일을 모두 처리해야 한다.
  
  // 모든 일이 끝나거나 중간에 타이머를 점검해야 한다면,,,
  if ((millis() -start) >timer){  // 설정된 timer 값보다 시간이 경과 했는가?
  start =millis(); // OK 시간이 됬다, 타이머를 다시 돌린다 
  Serial.println("Timer Activated:  "); 
// 타이머에 설정된 시간을 표시한다
  Serial.println(timer, DEC);
  
  // 시간이 되면 할 일을 여기서 호출한다. 
  } // 타이머 실행의 끝
 
  // 타이머를 처리하고 난 다음, 할 일이 있다면 여기서 함수를 호출한다.
}
  // 주함수의 끝


이 프로그램은 무료 소프트웨어로, 신체와 재산 상의 어떤 위험과 손해를 보상하지 않습니다.
이 프로그램은 GNU 무료 소프트웨어 배포규정을 따릅니다.
Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
AVRTOOLS™
 
   
  0
9999
윗글 8비트 포트의 단일비트 조작방법
아래글 직렬통신포트의 초기화
    N         제목    글쓴이 작성일 조회 추천
판매상품의 사용설명서는 다른 자료실에,,, avrtools™ 2011/08/30 (화) 1460 0
23 LCD 문자표시 (신형) avrtools™ 2012/04/12 (목) 2101 0
22 아듀이노 멜로디 연주 avrtools™ 2008/08/22 (금) 3454 0
21 아듀이노 4비트 LCD (구형) avrtools™ 2008/09/02 (화) 4301 0
20 아듀이노 가변저항 avrtools™ 2008/08/26 (화) 3073 0
19 직렬 데이터 이동(shift) 출력 avrtools™ 2012/04/10 (화) 1711 0
18 디지털 신호의 펄스폭을 측정하는 함수 avrtools™ 2012/04/10 (화) 1973 0
17 EEPROM 읽기, 쓰기 함수 avrtools™ 2012/04/10 (화) 2280 0
16 변수의 크기 avrtools™ 2012/04/10 (화) 1612 0
15 플레시 메모리에 상수를 저장하고 읽는 함수 avrtools™ 2012/04/10 (화) 1896 0
14 소프트웨어 Serial 함수 avrtools™ 2012/04/10 (화) 1793 0
13 아듀이노 터치스위치 [3] avrtools™ 2008/08/11 (월) 4104 0
12 아듀이노 shiftOut avrtools™ 2008/09/10 (수) 3363 0
11 아듀이노 스위치와 LED점등 avrtools™ 2008/08/13 (수) 4634 0
10 아듀이노의 주파수 출력 함수 avrtools™ 2009/10/20 (화) 2736 0
9 One Button Switch Library avrtools™ 2012/03/09 (금) 1840 0
8 아듀이노 논리연산 avrtools™ 2008/08/26 (화) 3004 0
7 아듀이노 PS2 키보드 읽기 avrtools™ 2008/09/10 (수) 4072 0
6 아듀이노 가로채기 함수 avrtools™ 2008/08/23 (토) 3185 0
5 아듀이노 전용명령 avrtools™ 2008/09/16 (화) 3914 0
4 아듀이노 PWM 출력과 타이머1 전용명령 avrtools™ 2008/08/19 (화) 3561 0
3 8비트 포트의 단일비트 조작방법 avrtools™ 2010/10/30 (토) 2365 0
2 직렬포트에서 문자를 받아 숫자 int로 저장 avrtools™ 2012/04/08 (일) 1682 0
1 직렬통신포트의 초기화 avrtools™ 2012/04/06 (금) 1468 0
1

바구니 : 0
 보관함 : 0
오늘뷰 : 0
HOME   |   회사소개   |   제휴안내   |   회사위치   |   서비스이용 약관   |   개인정보 보호정책   |   사이트맵
17015 경기도 용인시 기흥구 동백중앙로16번길 16-25, 508호. 전화 : 031-282-3310
사업자 등록번호 : 697-47-00075 / 대표 : 이건영 / 업태 : 제조업 / 종목 : LED조명, LED전원, 제어장치.
개인정보 관리책임자 : 홈페이지 관리자 . Copyright ⓒ2016 아크레즈 (ACLEDS INC.)
HOME TOP PREVNEXT 0 0 0