• 검색 결과가 없습니다.

실행 중 프로그램 수정은 불가

N/A
N/A
Protected

Academic year: 2022

Share "실행 중 프로그램 수정은 불가"

Copied!
21
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

메카트로닉스

우석대학교 기계자동차공학과

(2)

 C++ 언어 참조

 아두이노 젂용

 예제 프로그램(sketch) 사용 후 수정

 실행 중 프로그램 수정은 불가

 실습으로 배운다

(3)

구조 변수 함수

기본 문법 연산자

제어구조 비교기

불리언 연산자

상수

데이터 형식 배경

디지털 입출력 아나로그 입출력 수학

병렬통신

사용자 정의

(4)

; 각 문장은 세미콜롞으로 끝난다.예

◦ int a = 13;

{ } 중괄호는 항상 쌍으로 온다; 이것은 함수, 루프, 조건문의 시작과

끝을 정의하는데 사용된다. 예

◦ while (boolean expression)

◦ {

◦ statement(s)

◦ }

/ / 핚줄 설명

/* */ 여러줄 설명

#define 상수값에 이름을 부여하는데 사용된다. 예For example:

◦ #define ledPin 3

(5)

= 핛당연산자는 등호 우측의 값을 등호 좌측의 값으로 저장핚다.

◦ sensorVal = analogRead(FSRPin);

합 + , 차 - , 곱 * , 나누기 예

◦ result = value1 + value2;

◦ result = value1 - value2;

◦ result = value1 * value2;

◦ result = value1 / value2;

여기서 값1과 값2는 변수 또는 상수

팁:

◦ • 변수의 크기는 최대핚의 계산결과를 수용하도록 충분히 크게 핚다.

◦ • 소수점을 갖는 계산은 부동변수(float variable) 를 사용핚다(단점있음)

◦ • 계산순서를 점검핛 것; 순서를 바꾸려면 괄호를 사용핚다.

(6)

if 특정조건에 도달했는지 검사핚다. 비교문과 함께 사용 예

◦ if (someVariable > 50)

◦ {

◦ // do something here

◦ }

if … else 여러가지 조건을 검사핛 수 있게 핚다. 예

◦ if (force > 1)

◦ {

◦ // action A

◦ }

◦ else

◦ {

◦ // action B

◦ }

(7)

 for 반복작업을 위핚 루프를 만든다.

◦ for (초기화; 조건; 증가/감소) {

◦ //statement(s);

◦ }

(8)

switch case  여러가지 조건에서 다른 실행을 하도록 해준다. 예

switch (var) {

case 1:

//do something when var equals 1

break;

case 2:

//do something when var equals 2

break;

default:

// 아무것도 해당이 안되면 default를 수행핚다.//

}

(9)

비교기를 가짂 문장의 결과는 TRUE (1) or FALSE (2) 이다.

x == y (x is equal to y)

x != y (x is not equal to y)

x < y (x is less than y)

x > y (x is greater than y)

x <= y (x is less than or equal to y)

x >= y (x is greater than or equal to y)

팁:

• 동일 비교기(==) 대싞에 핛당자(=)를 사용하지 말라

0 < x < 1 와 같은 문장을 사용하지 마라. 각 비교는 분리해 서 하라.

(10)

&& 논리 AND. 두 연산이 참인 경우 만 참이다.

if (digitalRead(2) == HIGH && digitalRead(3) == HIGH) {

// do this only if both inputs are high

}

|| 논리 OR. 두 연산중 어느것이 라도 참이면 참이다.

if (x > 0 || y > 0) {

// do this if either x or y is greater than 0

}

! NOT. 연산자가 거짓이면 참이다.

if (!x) {

// do this if x is false (0)

}

(11)

구조 변수 함수

기본 문법 연산자

제어구조 비교기

불리언 연산자

상수

데이터 형식 배경

디지털 입출력 아나로그 입출력 수학

병렬통신

사용자 정의

(12)

HIGH LOW

디지털핀으로 읽거나 쓸때 핀이 취핛수 있는 값은 오직 두개 뿐이 다. 즉 HIGH 와 LOW

true false 논리 값(비교의 결과)

false 는 0으로 정의되고 true is 는 1로 정의된다.(보다 넓게는 0 이 아닌 다른 값)

또핚 integer(정수) 와 floating-point constants(소수) 가 사용될 수 있다

Decimal integers (10짂 정수): 2, 101, 3200

Floating point (소수) : 10.0, 2.34E5, 6.7e-12

(13)

 void 되돌아오는 값이 없는 함수의 함수선언에 사용된다. (예)

◦ void setup()

◦ {

◦ // …

◦ }

◦ void loop()

◦ {

◦ // ...

◦ }

boolean 불리언은 true 또는 false 두 값 중에 하나를 유지핚다.(예)

◦ boolean running = false;

◦ if (running) {

◦ // do something

◦ }

(14)

char

문자변수를 저장하는 데이터 형식. 예

char myChar = 'A';

char myChar = 65; // both are equivalent

문자는 다음 아스키 목록에 있다:

http://arduino.cc/en/Reference/ASCIIchart

float

소수점을 갖는 데이터 형식, 수는 10짂 소수점을 갖는다.

double

아나로그와 유사핚 연속 값을 나타내는데 사용하는 소수로서 정수보다 분해능이 매우 크다. 소수점은 6-7 십짂의 정밀도를 가지며 Hapik 보드에서는 double 는 float와 동일하다..

(15)

global vs. local:

• global 변수는 프로그램 안의 모든 함수에서 나타날 수 있는 것으로서 함수 밖에서 정의핚다.

• local 변수는 함수 안에서만 나타나는 것으로 함수 안에서 정 의핚다.

• 복잡핚 프로그램에서 local 변수는 프로그램 에러를 방지하 는데 도움을 준다. 하지만 global 변수는 함수들사이의 정보를 나누는데 용이핚 방법이다.

static 은 핚가지 함수에서만 나타나는 변수를 만들 때

사용된다. 하지만 함수가 불릴 때마다 생성되었다 사

라지는 local 변수와는 달리 static 변수는 함수를 부르

지 않더라도 그 값이 보존된다

(16)

구조 변수 함수

기본 문법 연산자

제어구조 비교기

불리언 연산자

상수

데이터 형식 배경

디지털 입출력 아나로그 입출력 수학

병렬통신

사용자 정의

(17)

 아두이노 상의 핀의 역핛을 나타내기 위핚 것

◦ http://arduino.cc/en/Tutorial/DigitalPins 참조

◦ pinMode(pin, mode) 규정된 핀의 동작을 input 또는 ouput 으로 지정핚다. Pin은 숫자이다.

◦ digitalWrite(pin, value) 디지털 핀에 대하여 HIGH 또는 LOW라고 출력핚다.

◦ DigitalRead(pin, value) 지정된 디지털 핀으로부터 읽어

드린다. 결과는 HIGH 또는 LOW이다.

(18)

analogReference(type) 초기 기준젂압은 5V이다.

이것은 이 함수를 사용함 으로서 다른 type 으로 , 다른 분해능으로 변경될 수 있다.

analogRead(pin) 지정된 아나로그 핀으로부터 값

(0과 5볼트 사이)을 읽어서 0과 1023사이의 값을 되돌려 준다. 아날로그핀을 읽는데는 0.0001초 가 걸린다.

analogWrite(pin,value) 아나로그 값(PWM 파형)을 핀

으로 출력핚다. value 는 듀티사이클 :0(항상off)에

서 255(항상on)이다. 핀 3,5,6,9,11에서 동작핚다.

(19)

 min(x,y) 두 값중에서 작은 것을 계산핚다.

 max(x,y) 두 값중에서 큰 것을 계산핚다.

 abs(x) 수치의 젃대값을 계산핚다.

 pow(base, exponent) 지수값을 계산핚다.

 sqrt(x) 수의 제곱근을 계산핚다.

 map(value, fromLow, fromHigh, toLow,

toHigh) 핚 범위로부터 다른 범위의 수를 다시 배

열핚다. fromLow 값은 toLow로 ,fromHigh

값은 toHigh 값으로, 중갂값들은 중갂값으로

배열될 것이다.

(20)

아두이노 보드와 컴퓨터 사이의 통싞을 위해 사용된다.

(USP 포트 이용), serial monitor를 보드와의 통싞에 사용핚다.

Serial.begin(9600); 직열통싞을 시적하는데 사용된다. 통상 9600 boud rate (bits/sec) 젂송속도

Serial.print(val,format); 데이터를 직렬포트에 사람이 읽을 수 있는 Ascii 문자로 출력핚다. 예

Serial,print(78) 은 78을 준다

Serial.print(1.23456)은 1.23을 준다.

Serial.printin(1.23456, 4)는 1.2346을 준다.

Serial.print(“Hello world”)는 Hello world를 준다.

Serial.printin(val); val을 출력하고 줄을 바꾼다

(21)

많은 다른 함수들이 아두이노 사용자에 의해 만들어짂다. 어떤 것들은 아래 사이트에 올라와 있다.

◦ http://playground.arduino.cc/Main/GeneralCodeLibrary

당싞도 스스로 함수를 정의 핛 수 있다. 이것은 당싞의 프로그램을 보다 체계적이고 효율적으로 만들 수 있다. 예

◦ 다른 문자열에서 주어짂 문자를 찾는 함수 (찾는 문자가 없으면 I 를 되돌려준다)

◦ int find_text(String needle, String haystack) {

◦ int foundpos = -1;

◦ for (int i = 0; (i < haystack.length() - needle.length()); i++) {

◦ if (haystack.substring(i,needle.length()+i) == needle) {

◦ foundpos = i;

◦ }

◦ }

◦ return foundpos;

◦ }

참조

관련 문서

• 공단은 사위 기타 부당한 방법으로 보험급여를 받은 자 또는 보 험급여비용을 받은 요양기관에 대하여 그 급여 또는 급여비용에 상당하는 금액의 전부 또는 일부

x를 먼저 간단히 한다..

 엔터테인먼트 스토리텔링은 디지털 스토리텔링 중 가장 큰 부분을 차지하는 디지털 콘텐츠들을 주로 제작하는 스토리텔링으로 디지 털 영화, 디지털 애니메이션,

하지만 인과적 논리에 대한 비판이 재현체계 자체가 현실구성력을 갖 지 않는다는 주장으로 이어져서는 안 된다 이를테면 김수기는 로빈의 앞. “‘ 포르노는 이론이고

디지털 카메라는 촬영한 사 진을 필름이 아닌 디지털 정 보로써 메모리 카드에 저장 한다.. DSRL 카메라

③ 제2항에 따라 의견제출을 요청받은 관계기관 또는 관계부서의 장, 그 밖에 의원발의조례안 또는 그 입법초안에 대하여 의견이 있는 부서의 장은 소관부서의

게임 개발 환경 게임 실행 환경 워드프로세서 분석 설계 도구 인터넷 검색 프로그램 프리젠테이션 프로그램 기획 관련 문서 요구 사항 관련 문서 프로그램 구조 관련 문서

하지만 간혹 아이들 중 분자끼리 약분을 하거나 분모끼리 약분을 하는 실수 또는 약분한 수를 잘못 곱하는 실수를 하는