청소년 IT 메이커 교육 5차
청소년 IT 메이커 교육 5차
한성대
작성자: 이상훈
오늘은 에듀이노에서 준 최종코드를 분석해보는 시간입니다.
목차는 따로 없고 바로 코드 분석을 해보겠습니다.
별거없죠?
기본적인 세팅이라고 보시면 됩니다.
각 센서들을 변수로 선언하여 핀번호값을 저장하고
조도센서와 초음파센서를 사용하기 전에 기준값을 지정해준 모습입니다.
이렇게 변수를 이용하면 이후에 값을 바꾸고 싶을 때 일일이 찾을 필요없이
굉장히 편하게 바꿀 수 있어 코드가 복잡해질수록 많이 이용합니다.
setup()함수는 전에도 말했지만 기본 세팅공간입니다.
그래서 핀모드를 입력하고, 네오픽셀을 사용하기 위해 시작과 초기화를 해주었죠.
먼저 함수 호출입니다.
Mode_set();이라고 쓰여져있는데요,
이는 다른 곳에 쓰인 함수를 호출하는 것으로
한 곳에 코드를 너무 많이 적게 되면 굉장히 비효율적입니다.
따라서 저런 식으로 원하는 기능을 하는 함수를
따로 만들어놓고 호출한 모습입니다.
코드가 복잡해질수록 저렇게 파트를 나누어 코딩하게 됩니다.
이후 조건문과 반복문이 보이는데요.
조건문 안에 특이한게 보입니다.
|| 연산자인데요, 이후에 &&연산자도 있으니 같이 알아보겠습니다.
우리는 이런 연산자들을 "논리 연산자"라고 합니다.
여러 개의 조건을 조합하여 참, 거짓을 판단할 때 사용하는 연산자죠.
논리 연산자에는 ||(or), &&(and), !(not) 연산자가 있으며
and 연산자는 두 개의 피연산자가 모두 참이여야만 참이되고
or 연산자는 하나의 피연산자만 참이여도 참으로 판별됩니다.
마지막으로 not 연산자는 피연산자가 참이면 거짓으로
거짓이면 참으로 바뀌게 해주는 연산자입니다.
표를 보면
이런 식으로 참, 거짓이 판별되는 것이죠.
물론 논리 연산자를 위의 코드처럼 여러 개가 동시에 사용될 수 있습니다.
※ 연산자 사용 시 주의할 점 ※
1. 연산자 순서에 주의하라
우리가 사칙연산을 하듯이 연산자에도 순서가 있다.
기본적으로 연산자들을 기능에 따라 분류하여 우선순위를 결정하면 다음과 같다.
콤마<대입<논리<관계<산술<단항
이외에도 같은 기능에 분류되더라도 and연산자가 or 연산자보다
우선순위가 높듯이 우선순위가 정해져 있다.
이는 외우기보다는 있다는 것을 알아두고 인터넷으로 찾아보며 사용하길 바란다.
(원래 사용하면서 익숙해져서 기억하는거지 억지로 외우는게 아니다)
2. 참, 거짓 판별 시스템을 조심하라
"관계 연산"자(<,<= 등)를 사용할 때는 반드시 조심해야 한다.
우리가 "1< x <100" 라는 문장을 통해 1과 100사이 값을 원한다고 가정하자.
이때, x가 150이라면 거짓이 되야할 것 같지만 다음 문장은 참이된다.
왜냐하면 1<x가 먼저 계산되고 x<100이 계산되기 때문에
1<x 가 참이여서 1 이후 1<100이기때문에 또 참이되어 참으로 해석되는 것이다.
따라서 관계 연산자를 사용할 때는 다음과 같이 논리 연산자를 추가로 사용하여야 한다.
"(1<x) && (x<100)"
이 외의 문장들은 제가 앞선 코드 분석을 통해 설명한 적이 있기 때문에 넘어가겠습니다.
이 코드들은 주석을 통해 역할이 적혀있죠?
앞선 4번의 코드 분석을 통해 각 코드의 세부적인 기능은 충분히 설명했다고 봅니다.
그래서 아마 코드를 넣고 완성된 무드등을 작동시켜보면
터치센서는 모드를 전환하는 역할을 하고,
조도센서를 사용하는 모드에서는 어두워지면 LED의 밝기가 달라질 것이고
초음파센서를 사용하는 모드에서는
장애물과의 거리에 따라 LED의 색이 변할 것입니다.
또 가변저항을 이용한 모드에서는 빛의 밝기조절이 가능할테니
완성된 코드를 넣고 동작해보시길 바랍니다.
또 이 코드들을 사용하여 자신이 원하는 기능을 하는 무드등도 제작할 수 있습니다.
제가 오늘 발표를 하는 것을 보니 많은 분들이 원하는 기능을 잘 구현하셨더라구요.
혹시라도 원하는 기능이 있는데 코드를 잘 못 바꾸겠으면 댓글로 남겨주시면
제가 코드를 변경해서 드리겠습니다.
(대신 기능이 너무 복잡하면 안되고, 댓글에 꼭 자신의 이름을 게재해야함)
교육을 마치며...
우선 제 스스로가 교육을 진행함에 있어 미숙한 점이 있어
매끄러운 진행이 되지 않은 점 대단히 죄송합니다.
물론, 3,4학년 선배들은 경험이 있으시지만
저같은 2학년 학생들의 경우에는
이렇게 교사가 되어 교육을 진행해본적이 다들 없을 겁니다.
그래서 처음이다보니 준비나, 변칙적인 상황 대처에 있어
부족한 점이 많았다고 생각합니다.
그래도 최대한 열심히 노력했으니 봐주셨으면 좋겠습니다...ㅋㅋㅋ
오늘 다같이 최종발표 강의실에 모여서 시연을 했는데요,
많은 학생들이 무드등을 만들고 기능을 보여주는 것을 보면서
노력을 많이 했다는 것이 아주 잘 느껴졌습니다.
한번이라도 이런 교육을 받아본 적이 있는 사람과
아닌 사람은 "경험의 차이"가 있을 수 밖에 없기 때문에
이번 경험이 지금 당장은 도움이 되지 않을 수 있지만
분명히 나중에 여러분이 프로그래밍을 배우게 된다면
미약하게 남아 도움이 될 겁니다.
그동안 대단히 수고 많으셨습니다.
이 글은 사실 교육이 끝난 후에 되었기 때문에
학생들이 보지 않을 것이라는 것을 알지만
혹시라도 보게 된다면 간단하게 소감 한마디만 댓글로 남겨주세요.
감사합니다.
그럼 이제 진짜 안뇽
👋👋👋👋👋👋







댓글
댓글 쓰기