청소년 IT 메이커 교육 5차

이미지
  청소년 IT 메이커 교육 5차 한성대 작성자: 이상훈 오늘은 에듀이노에서 준 최종코드를 분석해보는 시간입니다. 목차는 따로 없고 바로 코드 분석을 해보겠습니다. 별거없죠? 기본적인 세팅이라고 보시면 됩니다. 각 센서들을 변수로 선언하여 핀번호값을 저장하고 조도센서와 초음파센서를 사용하기 전에 기준값을 지정해준 모습입니다. 이렇게 변수를 이용하면 이후에 값을 바꾸고 싶을 때 일일이 찾을 필요없이 굉장히 편하게 바꿀 수 있어 코드가 복잡해질수록 많이 이용합니다. setup()함수는 전에도 말했지만 기본 세팅공간입니다. 그래서 핀모드를 입력하고, 네오픽셀을 사용하기 위해 시작과 초기화를 해주었죠. loop()함수에서 터치함수 이전 단계까지만 먼저 봅시다. 먼저 함수 호출입니다. Mode_set();이라고 쓰여져있는데요, 이는 다른 곳에 쓰인 함수를 호출하는 것으로 한 곳에 코드를 너무 많이 적게 되면 굉장히 비효율적입니다. 따라서 저런 식으로 원하는 기능을 하는 함수를  따로 만들어놓고 호출한 모습입니다. 코드가 복잡해질수록 저렇게 파트를 나누어 코딩하게 됩니다. 이후 조건문과 반복문이 보이는데요. 조건문 안에 특이한게 보입니다.  || 연산자인데요, 이후에 &&연산자도 있으니 같이 알아보겠습니다. 우리는 이런 연산자들을 "논리 연산자" 라고 합니다. 여러 개의 조건을 조합하여 참, 거짓을 판단할 때 사용하는 연산자죠. 논리 연산자에는 ||(or), &&(and), !(not) 연산자가 있으며 and 연산자는 두 개의 피연산자가 모두 참이여야만 참이되고  or 연산자는 하나의 피연산자만 참이여도 참으로 판별됩니다. 마지막으로 not 연산자는 피연산자가 참이면 거짓으로 거짓이면 참으로 바뀌게 해주는 연산자입니다. 표를 보면  이런 식으로 참, 거짓이 판별되는 것이죠. 물론 논리 연산자를 위의 코드처럼 여러 개가 동시에 사용될 수 있습니다. ※ 연산자 사용 시 주의할 점 ※ 1. 연산자 순서에 ...

청소년 IT 메이커 교육 특별편 (퀴즈 풀이) ※ 잠깐! 퀴즈 안 푼 사람 출입 금지!!!! ※

이미지
  청소년 IT 메이커 교육 특별편 한성대 작성자: 이상훈 다들 퀴즈를 풀고 오셨나요?  풀지 않았다면 이번 편은 의미가 없습니다. 꼭 퀴즈를 풀고 와주세요. 퀴즈 해설을 하기 전에... 일단 퀴즈 해설을 하기 전에 꼭 말씀드리고 싶은 점이 있습니다. 사실 많은 분들이 퀴즈를 푸는 것을 꺼려한다는 거 저도 잘 알고 있습니다. 자신의 실력이 들통나는게 무섭거나 아니면  자기 스스로에게 자신의 실력을 검증하는 것이 부담일지도 모릅니다. 저도 너무나도 많이 겪어봐서 잘 알고 있습니다. 아마 저였어도 시험을 보지 않고 넘어갔을 겁니다. 저도 제 모자란 실력을 스스로에게 들통나는 것이 항상 무섭습니다. 그래서 시험을 보신 분들 중 저희반 학생들과 교사를 제외하고  나머지 분들은 제가 일일이 답변을 드렸는데요. (우리반은 의무 ㅋㅋ) 정말 진심으로 박수쳐드리고 싶습니다. 아마 시험을 보지 않은 사람 중  최저점을 받은 다른 학생보다 실력이 좋은 사람이 있을 수 있습니다. 하지만 앞으로의 성장 가능성에 있어서는  최저점을 받았으나 시험을 치룬 학생이 훨씬 높게 측정될 것입니다. 왜냐하면 저는 그들이 자신의 실력을 측정하기 위해 시험을 봤다는거 자체가 문제를 회피하지 않고 도전해서 이겨내는 정신 을 가졌다고 생각하기 때문입니다. 또 교사분들 중에도 보신 분이 있던데, 마찬가지로 배울점이 정말 많다고 생각합니다. 교사라면 더더욱 풀 필요가 없다고 생각하기 쉬우니까요... 진심으로 저보다 훨씬 나은 사람들이라고 생각합니다.  저도 많이 배우도록 하겠습니다. (생각보다 많은 사람이 시험을 봐서 저도 제 자신에게 창피해지더라구요...) 자 이젠 퀴즈 해설을 해보겠습니다! 1번 사실 오답률이 가장 낮은 문제입니다. 시리얼 통신을 할 때 setup() 함수에 "반드시" 들어가야 할 코드를 고르는 문제였죠? 정답이 Serial.begin(9600); 인 이유는  이 코드가 시리얼 통신을 시작하게 해주는 코드이기 때문입...

청소년 IT 메이커 교육 4차

이미지
  청소년 IT 메이커 교육 4차 한성대 작성자: 이상훈 이번 수업의 목차입니다.  터치센서를 조작해보고 앞서 배운 내용을 종합하여 원하는 기능을 구현하겠습니다. 퀴즈 문제도 만들었으니 풀어보세요. 먼저 터치센서입니다. 터치센서의 기능은 1차시에 설명했기 때문에 생략하겠습니다. 바로 보드에 연결해봅시다. 이제 이 정도는 너무 쉽죠?  디지털 입력핀의 번호만 알고 있다면 정말 간단합니다. 이젠 코드를 살펴봅시다. 처음으로 attachInterrupt() 라는 함수가 나왔습니다. 다른 코드는 이전에 보았을 텐데요. 이 함수를 보기 전에 우선 다른 코드를 통해 전체적인 내용을 살펴보면 기본적으로 LED밝기가 50으로 세팅되어 있고, 모든 LED에 흰색 빛이 나도록 하였습니다. 이때, 조건문을 살펴보면 0으로 초기화 되어있는 count(터치 횟수)가  1일때는 밝기가 50, 2일 때는 100 3일때는 200인 것을 알 수 있습니다. 그렇다면 이제는 attachInterrupt() 함수에 대해 분석해볼 차례입니다. attach는 "붙이다"를 Interrupt는 "방해하다, 정지하다"라는 뜻을 의미합니다. 아두이노에서 interrupt는 일반적으로 하던 동작을 시행하다가 외부 이벤트가 발생하면  하던 동작을 중지하고 이벤트에 따라 지정된 기능을 하는 것을 의미합니다.   그래서 이 attachInterrupt() 함수는 FALLING이 발생하면 Touch함수가 실행되는 것이죠. 사실 이 정도로 간단하다면 Interrupt 기능을 사용하지 않고도 코드를 짤 수 있습니다. 하지만 센서의 개수를 여러 개 사용하고 기능을 발생시키는 상황이 중첩된다면  오류가 발생하게 됩니다. 이런 상황을 방지하기 위해 쓰는 함수이니 너무 어렵게 생각하지 마시고  나중에 아두이노를 다루게 됐을 때 이렇게 복잡한 상황이 있다면  "그때 인터럽트가 있었지"하고 검색을 통해 찾아보고 사용하길 바랍니다.  ...

청소년 IT 메이커 교육 3차

이미지
  청소년 IT 메이커 교육 3차 한성대 작성자: 이상훈 이번 수업의 목차입니다.  초음파 센서와 조도 센서을 사용해보도록 하겠습니다. (2차보다는 코드가 어려울 수 있습니다. 잘 따라와 주세요.) 먼저 초음파 센서입니다. 초음파 센서의 기본 원리부터 알아보죠. 초음파 센서의 활용도와 핀 모형입니다. 중요한 것은 핀이 디지털 출력핀과 입력핀으로 나뉘어 있다는 건데요. 아래 그림을 통해 이해해보도록 하죠. 초음파 센서는 초음파를 내보내고 장애물에 도착하여 초음파가 반사되어 돌아오면 그 시간을 계산하여 거리를 계산할 수 있는 센서입니다. 여기서 Trig 핀은 Trigger의 줄임말인데요. 우리말로는 방아쇠, 촉발제를 의미합니다. 달리기 시합을 할 때 쏘는 총을 생각하시면 의미를 쉽게 이해하실 수 있습니다. 초음파 센서에서는 초음파를 발생시킨다는 의미를 갖겠죠? Echo 핀에서 Echo는 우리말로 메아리를 의미합니다. 산에서 소리를 내면 메아리가 울리는 경우가 종종 있죠? 소리가 어떤 장애물에 부딪혀서 반사되어 다시 들리는 현상을 의미합니다. 당연히 초음파 센서에서는 초음파가 반사되어 돌아온다는 의미를 가질 것입니다. 이 점을 이해한다면 당연히 Trig 핀은 디지털 출력,  Echo 핀은 디지털 입력핀이라는 것을 아실 수 있습니다. 그럼 이제 아두이노 보드와 초음파 센서를 연결한 후 시리얼 통신을 해보겠습니다. 이전에 디지털과 아날로그, 핀을 꽂는 방법을 충분히 공부하셨다면  오른쪽 표만을 보고도 핀을 꽂을 수 있을 것입니다. (fritzing 그림에 의존하지말고 핀 번호만 보고 핀을 알맞게 연결할 수 있어야함) 이제 코드를 입력하고 분석해봅시다. 앞서 배운 코드를 잘 숙지했다면 큰 무리없이 이해할 수 있습니다. 주석과 아래 코드 분석을 제외하고 여러분이 이해하기 힘든 코드만 분석해보겠습니다. 제 생각에는 아마 distance를 정의한 코드가 이해하기 어렵지 않나 싶습니다. 그래서 이 코드를 분석해보겠습니다.  distan...

청소년 IT 메이커 교육 2차

이미지
청소년 IT 메이커 교육 2차 한성대 작성자: 이상훈 이번 수업의 목차입니다.  네오픽셀 LED, 가변저항을 사용해보도록 하겠습니다. (아마 1차보다는 이번 내용이 더 재밌을 겁니다.) 네오픽셀 LED(RGB LED)부터 알아봅시다. 이미 수업을 통해 라이브러리 추가하는 법을 배우셨을 겁니다. 한번만 설치하면 되기 때문에 따로 추가하는 법을 적진 않겠습니다. 우선, 네오픽셀 LED의 기본정보입니다.   당연히 디지털 출력 장치겠죠?  그래서 IN이라고 적힌 핀은 디지털 입력핀과 연결하도록 합시다. 이때 코드에 맞게 출력핀만 디지털 3번핀 에 연결해주면 됩니다. 다음은 LED의 순서입니다. 우리는 순서를 이야기할 때 1번부터 이야기 합니다. 그래서 RGB LED는 1번부터 반시계 방향으로 8번까지 순서를 세면 됩니다.  하지만 프로그래밍을 할 때는 조금 다릅니다.  프로그래밍을 할 때는 기본적으로 0번부터 순서를 세기 때문에 0번부터 반시계 방향으로 7까지 세주어야 합니다. (이외에도 나중에 반복문, random() 함수를 사용할 때도 0부터 세는 것이 일반적임)  그렇다면, 이제는 LED 색을 어떤 식으로 지정할 수 있는 지를 배워보겠습니다. 빛의 삼원색과 관련된 내용은 중고등학생분들이기 때문에 따로 말하진 않겠습니다. 아마 여러분이 궁금해 하실 부분은 색상 값의 범위가 0~255라는 점입니다. 앞서 말했듯이 숫자 카운팅이 실생활에서는 1부터  프로그래밍에서는 0부터 이루어지는 점을 감안하면 255는 256이 될겁니다.  256 = 2의 8제곱으로 8비트 영역에서 색상 범위를 지정했다고 보시면 됩니다. 색상표를 이용하여 원하는 색을 지정해보도록 합시다. 핀을 알맞은 위치에 잘 연결했다면 이제는 코드 분석을 할 차례입니다.   그림을 통해 해결되지 않는 부분만 짚고 넘어가겠습니다. 처음으로 반복문 이 나왔는데요. 반복문 은 이름처럼 반복할 때 사용합니다. 여러번 적는 수고로움을 간단한...

청소년 IT 메이커 교육 1차

이미지
 청소년 IT 메이커 교육 1차 한성대 작성자: 이상훈 이번에 한성대에서 중고등학생을 상대로 코딩교육을 실시하였습니다.  학생들의 이해를 돕고 강의를 듣지 못했거나 부품의 이상이 있어 수업을 원활하게 진행하지  못한 학생들의 위해 본 블로그를 이용하여 설명을 보충하고자 합니다. 본 블로그는 제가 작성하였지만 한성대 학생들이 단체로 제작한 프레젠테이션 자료를 주로  이용하였기 때문에 한성대 학생들 전체가 작성하였다고 봐도 무방할 것 같습니다. IT 메이커 교육 1차는 기초적인 학습이 많기 때문에 내용이 길고 지루할 수 있으니  자신이 알고 싶은 부분만 찾아가며 보도록 합시다. 이번 수업의 목차입니다.  프로그램 소개와 아두이노를 하기 전 알고있어야 할 기초지식을 배우고  시리얼 통신과 터치센서를 배워봅시다. 프로젝트: 무드등 만들기 이번에 한성대에서는 아두이노를 통해 "무드등" 만들기를 진행하였는데요. 다양한 센서와 장치를 이용하여 키고 끄는 것은 물론 빛의 밝기와 색을 변화할 수 있는  무드등을 만들기로 하였습니다. (에듀이노를 통해 부품을 사고 자료를 얻었습니다.) 아두이노 스케치를 잘 설치하였다면 아두이노를 사용하기에 앞서 사전에 알고 있어야 하는 정보가 있습니다. 바로 디지털과 아날로그 인데요. 디지털은 "이산"적인 정보를 아날로그는 "연속"적인 정보를 의미합니다. 쉽게 생각하자면 시계가 있는데요.  우리가 갖고 있는 스마트폰을 보면 1분이 증가할 때마다 순간적으로 숫자가 +1씩 카운팅  되는 것을 볼 수 있습니다.  (예를 들어, 현 시간이 11시 9분이면 1분 증가하면 11시 10분으로 바로 바뀜) 하지만 벽걸이 시계중 시,분,초침이 있는 시계의 경우 이 침들이 천천히 옆으로 움직이는 것을 보실 수 있습니다. 즉, 스마트폰 시계의 경우는 디지털, 벽걸이 시계의 경우 아날로그인 것이죠.  그래서 "일반적"으로 디지털은 "인공"적으로 아날로그는 "자연...