Data Scale

입력값을 지정한 1차함수에 따라 출력하는 프로그램

Analog Data를 처리하다보면 필요한 프로그램으로 아래와 같은 식으로  계산된다.

소스는 C#.NET에서 작성한 소스며  입력값의 Limit까지 고려해서 작성하였다.

 

Scale = [변환후 최대값]-(([변환후 최대값]-[변환후 최소값])/([변환전 최대값]-[변환전 최소값]))*([변환전 최대값]-[입력값])

Scale Example – C#.NET

 

도쿄대 물리학자가 가르쳐주는 생각하는 법

도쿄대 물리학자가 가르쳐주는 생각하는 법

[ 도쿄대 인기강의 ]

우에다 마사히토 지음

좋은 성적을 내는 능력은 머리가 좋다는 하나의 근거가 되는 것이 분명하지만, 실제 사회에서 이 능력을 활용할수 있는 범위는 매우 한정적이다 .

발견과 아이디어는 전부 사고하는 과정에서 태어난다. 또 창조성이 풍부한 학생의 공통점은 수험공부를 무시하지 않았지만 , 특별히 중시하지도 않는 심리적 여유를 가지고 있다 .

수험공부가 의미없다는 말이 아니다, 수험공부로 기를수 있는 능력은 과제로 배우는 지식과  효율적으로 기술을 익히는 매뉴얼 응용력이다 .

이는 창조력을 발휘하는 토대가 될 수 있지만 과도한 수험공부는 고정된 답이 정해져있기에 선입관과 고정관념을 심어서 답이 없는 문제와 맞붙는 용기 및 상상력을 빼앗아 가기도 한다. 수험에서 배우는 매뉴얼 응용력을 정답이 정해진 곳에서 사용가능하며 답이 없는 문제의 경우는 사용 불가능하다 .

이 책에서 이야기하는 사고력이란 문제의 본질을 끝까지 지켜보는 힘이며 , 창조력이란  문제를 독자적인 방법으로 해결에 이를 때까지 끌고가는 능력을 말한다 .

● 사고하고 창조하기 위한 세가지 요소

a. 문제를 발견하는 능력 의문을 품지 않은 부분 , 상식이라 여기던 부분

b. 문제를 해결하는 능력 극복점을 정리 , 분석 , 분해로 해답의 과정

c. 포기하지 않는 인내력 해답 도출에 이르기까지의 끈기

실천하면서 기억해야할 키워드는 버린다 는 것이다 .

교육이란 배운 것을 잊고 난 뒤 머릿속에 남는 것이다

● 문제 발견능력을 기르자

사회에서 문제를 과제와 문제를 발견해주는 친절한 출제자는 없다 .

문제 해결능력 ( 메뉴얼응용력 ) 보다 문제를 발견할수 있는 능력이 중요하다 .

a. 불현 듯 떠오르는 생각들을 메모하자 .

b. 떠오른 생각을 흘리지 말고 더 생각하자 , 막다른 길이라면 지금 생각하는게 무엇이며

그것을 왜 생각하는지 의식해야한다 . 생각의 처음으로 되돌려 형태를 만들어야한다 .

c. 모르는 것을 명확히 하라 .

사실을 모른다. – 조사로 해결된다 . ( 메뉴얼 응용력으로 해결된다 .)

답을 모른다. – 계속된 사고로 어려운 문제를 요소로 분해하는 분석력이 필요하다 .

무엇을 모르는지 모른다. – 모르는 것을 명확히 밝힌다 . .. 을 모른다의 형태 .

결국 문제 발견 능력이란 , ‘ 문제가 무엇인지 정확히 파악하지 못한 상태 에서

문제 자체는 명확히 인식했으나 답을 모르는 상태 로 발전 시키는 능력이다 .

문제를 인식했으나 답을 모를 때 , 궁금점을 메모해두자 .

과제 해결후 찢어 미해결 문제에 집중하자 .

● 정보 수집의 기술

  할수 없다고 하긴전에 일단 해봐야 한다 할수 없다는 건 기존방식에 얽매였기 때문이다 .

자신만의 방식으로 시도하면 다른 방식에서 해결이 얼마든지 가능하다 .

실패란 결국 포기한 사람들이 잘못된 방식으로 내린 결론에 지나지 않는다 .

1. 답을 찾지 않는다 .

이 과정의 목적은 답찾기가 아니다. 이미 존재하는 정보는 누가 완료한 것 , 독창적이지 않은 것이기에 배제하기 위함이며 , ‘ 이미 알려진 사실을 몰랐던 것 에 속하기 때문이다 .

시도되지 않은 부분을 찾아야한다 .

누군가 시도한 것에 변형하거나 부가가치를 더해서 해답을 제시하는 것은 많이 통용이 되나

이는 매뉴얼 응용력과 관련된 해법이다 . 완전히 새로운 것을 창조할 수는 없다 .

철저하게 정보를 수집하고 , 분석 , 정리하는 노력 끝에 침신한 아이디어가 탄생한다 .

2. 인터넷 정보는 사실과 노하우를 제대로 구별하라 .

인터넷 정보는 내용이 부실하거나 신뢰가 어렵고 필자의 주관이 포함되어 있을수

있기에 확실한사실 만 수집해야한다 .

노하우는 실천적이고 효과적으로 보이지만 그대로 받아들이는 것은 위험하다 .

3. 이해한 정보는 버린다 .( 수집한다 -> 이해한다 -> 버린다 )

이해한 정보를 버림으로 다른것에 집중할수 있으며 이해한 정보는 얼마든지 다시 찾을수 있다. 계속해서 쌓이는 정보로 인해서 문제가 복잡해지는 것을 방지할수 있다 .

이해하고 버리면서 모르는 것들만 남아 문제의 핵심에 다가갈수 있다 .

○ 정보에 대한 메모 방법

자신의 의견으로 쓴다. ( 문제의 핵심으로 파고들 수 있다 )

자신만의 분석과 해석을 추가한다.

간결하게 쓴다.

원본 정보는 버린다. ( 분량의 삭제 )

4. 내용을 이해할 때 까지 정보를 집중하여 읽는다 .

결국 문제 해결의 가장 핵심은 정보를 모으고 이해한 뒤 버리는 것이다 .

불필요한 정보를 차단하고 버리면 출구를 찾을 수 있다 .’

● 지도 사고법

(1) 주제와 관련있을 만한 정보를 철저히 수집한다 .

(2) 정보를 선별한다 .

자신의 의견으로 메모한뒤 그 이외 정보는 버린다 .

메모도 필요없어지면 그때마다 버린다 .

(3) (1)(2) 의 작업을 반복한다 .

(4) 위의 작업이 어느정도 지속됐다면 넓은 종이에 아는것과 모르는 것 ( 미개척부분 )을 나열하여 나만의 일람표를 작성하자

(5) 본질 추출

(4)의 작업에서 아는것과 모르는 것을 정리해두면 그사이의 연관성이 드러나면서

문제의 본질을 파악할수 있게된다. 아직 모르는 것 중에서 가장 중요한 부분을 검토하여

목록으로 작성한다.

(6)문제의 선별

(5) 에서 작성한 목록 중에서 알고 싶은 것을 선택한다 .

금방해결가능한건 피한다 .

인기있는 문제를 피한다 .

노력해도 해결할수 없는 문제는 선택하지 않는다 .

(7)문제 해결

선택한 문제를 해결하는데 전력집중한다 .

해결할수 없는 문제임이 명확하다면 뛰어들지 말자 .

하지 않을 일을 고르는 것은 할 일을 고르는 것 만큼 중요하다 .

● 창조적인 문제해결방법은 자기특성에 따라 직접고안하자 .

● 복잡한문제는 유형별로 나누어 간단하게 만들자 .

● 수험같은 매뉴얼응용력은 해결 능력의 토대가 된다 .

● 다각적으로 유형화하면 답이 보이지 않는 문제가 해결된다 .

( 복잡한문제 -> 요소로 분해 -> 각요소를 하나씩분해 -> 해결할 수 없는 요소가 남는다 ->

그 문제해결에 부족한 요소를 분석하고 다시시도한다.)

● 목적지향적 방식과 호기심 주도형 방식의 차이를 이용해서 접근하자 .

일방적인 목적지향성외에 자유롭게 발상하는 호기심도 이용하자 .

● 답을 알고있다고 생각하면 함정에 빠지기 쉽다 .

● 포기하지 말고 끝까지 생각하자 .

● 과감히 출발 지점으로 돌아올 줄도 알아야한다 .

– 창조를 위한 사고란 무엇인가를 생각하다 발견했습니다. 그간 마땅한 책이 없어서 철학서적을 뒤적였지만

너무 어려웠습니다. 역시 범인은 확실하게 정리된 책을 읽는게 쉬운것 같습니다.

이책은 도교태 교수가 새로운것을 탐구하는것에 힘들어하는 학생들을 위해 펴냈습니다.

어떤 문제상황에 부딫히면 어떻게 해야할지 모르는 사람들에게 유용할듯해서 간추려서 올려봅니다.

p.s.모르고 있었는데 책 반납날짜가 지났네요….

[ATMELSTUDIO]printf 사용하기

Atmelstudio7 에서 Printf 함수를 사용하기 위한 설정

 

 

 

[Codevision]OK-128 kit 스위치 상승펄스 캣치

[Codevision]OK-128 kit 타이머0를 이용해 입력 채터링 방지 방법

위 링크의 소스를 토대로 작성됨.

만약 아래와 같은 코드를 사용해 어떤 값을 증가시킨다면 엄청난 속도로 값이 증가될 것이다.

if(TIMER_KEY3>=KEYTIME){adr++;}

키가 한번 눌리면 1회만 증가시킬 필요가 있는데 아래 소스를 참고해보자.

 

[Codevision]OK-128 kit 타이머0를 이용해 입력 채터링 방지 방법

스위치로 입력받아 사용하면  물리접촉에 의한 필연적 구조 때문에”chattering”이 발생한다.

이 채터링을 “debouncing” 해야 한다는 말은 많이들 들었을 것이다.   흔한 debouncing 기법은 delay함수를 통해 약 20ms내외로 지연시키는 방법이 일반적이다.

이번 예제는 타이머 인터럽트를 통해 사용하는 소개한다. delay 함수를 쓰지 않으니 효율적인 프로그래밍이 가능하다.

1. 10ms마다 타이머0 오버플로우 인터럽트 루틴에 진입한다.

2. 스위치마다 타이머 변수가 있고 키가 눌려있을 때만  값을 증가시키고,  최대값에 도달하면 출력을 하는 구조로 되어있다.

즉 해당 소스는 최대값이 5이니 50ms동안 키가 눌려있어야 ON이 되는 구조다.

 

 

[회로] 릴레이 두 개를 이용한 자기유지 회로

릴레이 두개를 이용해 자기유지회로를 구성한 회로

예이니 포토커플러등의 저항등은 알아서 구성하도록 하고 동작 예제는 Signal이 입력되면 Relay1, Relay2가 여자되는데

이 때 Signal에 신호가 없어져도 Relay1의 B접 스위치 때문에 여자가 유지되어 Relay2 접점은 그대로 유지된다.

PB를 누르면 소자되어 Relay2의 접점도 열린다.

[C Language – Example] 비트제어

마이크로 프로세서를 다루다보면 비트제어를 많이 하게된다. 논리연산으로 해도 되지만 좀 더 편하기 쓰기 위해 매크로를 통해서 제어하면 보다 편리하게 비트제어가 가능하다.

 

[C Language – Example] 시리얼통신 데이터 파싱

AVR등을 이용해 시리얼통신을 자주 이용하게 된다 이 때 수신 받은 아스키데이터를 Hex Code 형태로 변경해야 할 필요가 있다.

 

[C Language – Example] HEXTOASCII

Hex To Ascii Example

 

 

[C Language – Example] ASCIITOHEX

Ascii To Hex Example