Skip to content

jecy77/Arduino_with_Python_cpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Arduino_study_ppt


아주대학교 2022 동계 모각소

  • 업로드 파일명: 0+숫자->아두이노 / 숫자->파이썬

week1 2023.01.13 17:00-21:00

🔥 목표

-'아두이노와 피지컬 컴퓨팅 with 파이썬' Chapter 1~5

(장다희 조장님의 강의 후 아두이노 실습)

💡 학습 내용

Chapter 01. 아두이노 알아보기

아두이노: 물리적인 세계를 감지하여 제어할 수 있는 소형 컴퓨터

아두이노 보드: 센서가 입력받은 데이터를 액츄에이터의 출력 형태로 변환하도록 처리하는 것

피지컬 컴퓨팅: 아두이노를 이용하여 만든 컴퓨팅 시스템, 디지털 기술 및 장치를 이용하여 물리적인 방식으로 정보를 입력 받아 처리한 결과를 물리적인 방식으로 출력하는 시스템

센서: 실제 세계의 다양한 정보를 감지하거나 입력 받을 수 있는 부품 또는 장치

-ex)빛 센서, 소리 센서, 초음파 센서

액츄에이터: 물리적으로 동작하는 부품 또는 장치 ex) LED, 부저, 모터

아두이노의 종류: 우노 모델, 레오나르도 모델, 101 모델, 나노 모델, 아두이노 메가, 아두이노 윤, 릴리패드 등

*아두이노 우노 보드

디지털 영역: 0번부터 13번까지 14개의 디지털 입출력 핀이 있음

-0번과 1번 핀은 주로 다른 컴퓨팅 장치와의 통신(RX, TX)을 위해 사용

-2번부터 13번까지의 디지털 핀을 사용

-디지털 핀을 출력 핀으로 사용할 경우 0V(LOW) 또는 5V(HIGH)의 전압 출력 가능

초기화 버튼: 아두이노 보드 초기화

파워 영역: 전원을 공급해주는 5V와 3.3V 핀, -극인 GND 핀이 2개, 외부 전원을 공급받을 때 사용하는 Vin이 있음

전원 LED는 아두이노 보드에 전원이 공급할 때 켜지며 RX, TX LED는 아두이노와 컴퓨터가 통신할 때 켜짐

디지털 13번 핀 옆에 L로 표시된 LED는 디지털 13번 핀에 연결되어 있음

아날로그 인 영역: 0번부터 5번까지 6개의 아날로그 입력 핀이 있음

Chapter 02. 실습 환경 준비하기

아두이노 소프트웨어를 설치하였다.

파이썬을 설치하였다.

파이썬 라이브러리를 설치하였다.

Chapter 03. LED 1개 제어하기

아두이노에 내장된 LED를 1초 간격으로 깜빡이는 활동을 하였다.

Blink 프로그램을 살펴보았다.

새로운 함수를 정의해보았다.

setup() 함수: 각종 설정을 하는 함수, 프로그램이 한 번만 실행

loop() 함수: 프로그램을 반복적으로 실행하는 함수

pinMode(LED_BUILTIN, OUTPUT): 디지털 13번 핀을 출력 핀으로 설정하는 명령어

digitalWrite(LED_BUILTIN, HIGH): 디지털 13번 핀에 전기를 공급하라는 명령어

delay(1000): 1000 밀리세컨드, 즉 1초동안 아무것도 하지 않고 대기하는 명령어

digitalWrite(LED_BUILTIN, LOW): 디지털 13번 핀에 전기 공급을 해제하라는 명령어

컴파일: 사람이 작성한 프로그램을 컴퓨터가 이해할 수 있는 코드로 변환하는 것

체크(V)버튼: 컴파일

업로드(->)버튼: 컴파일 후, 컴파일 된 파일을 아두이노 보드에 업로드

모듈화: 함수를 이용하면 기본 함수(loop)에서 특정 동작을 수행하는 명령어들을 모아서 별도의 함수로 만들 수 있음, 새로 정의한 함수를 필요할 때마다 호출하여 실행 가능

Chapter 04. 아두이노 보드와 통신하기

센서 값을 모니터에 출력하는 활동을 하였다.

-조도센서를 아두이노 보드에 연결하고, 조도센서가 감지한 값을 컴퓨터의 시리얼 모니터로 확인해 보았다. 센서 주변이 어두워지면 값이 작아지고 밝아지면 값이 커지는 것을 확인할 수 있었다.

특정 문자를 입력하여 LED를 제어해보는 활동을 하였다.

-컴퓨터에서 특정 문자를 입력하고 시리얼 모니터의 전송 기능을 이용하여 아두이노 보드로 정보를 보내 그에 연결된 LED를 켜거나 꺼 보았다.

Serial.begin(9600): 통신 속도를 9600으로 설정

Serial.PrintIn( ): 시리얼 모니터에 ( )안의 데이터를 출력하고, 한 줄 내리라는 의미

analogRead(0): 아날로그 0번 핀에 연결된 조도 센서의 데이터를 읽어오라는 명령어

Serial.print( ): 시리얼 모니터에 ( )안의 데이터를 출력하지만, 입력 커서를 한 줄 내리지는 않는다.

Serial.available( ): 시리얼 통신으로 데이터를 받으면, 받은 데이터의 개수를 출력, 만약 데이터를 입력하지 않으면 0을 출력(거짓으로 판단하여 명령어를 실행하지 않는다.)

Chapter 05. LED 여러개 제어하기

LED: 발광다이오드(Light-Emitting Diode)의 약어 순방향으로 전압을 가했을 때 빛을 내는 전자 부품/크기 단위: 파이/긴 핀이 +극, 짧은 핀이 –극

아두이노 보드에 LED 1개를 연결하고 1초 간격으로 켜졌다가 꺼지게 하는 활동을 하였다.

LED 3개를 연결하여 순서대로 깜박이는 활동을 하였다.

digitalWrite(핀 번호, 값): 해당 디지털 핀에 HIGH(전기 공급) 또는 LOW(전기 공급 안 함)의 값을 줄 수 있는 명령어

digitalRead(핀 번호): 해당 핀에 입력된 값을 읽어 오는 명령어, 해당 핀 번호에 연결된 전자부품으로부터 받은 값을 HIGH 또는 LOW값으로 가져옴

💥문제와 해결 과정

초기 설정

-아두이노 with 파이썬 교재의 python 버전이 2.7 버전이지만, 현재 python3가 많이 사용되고 있으므로 python3.11로 셋팅하였다.

-파이썬3 버전으로 작성할 때 arduino 모듈이 없다거나 포트를 찾을 수 없다는 오류가 발생했다. 이를 해결하기 위해

[Arduino] 파이썬에서 아두이노 제어하기

를 설치하고 아두이노에서 실행시킨 후 파이썬에서 다시 실습을 하였다. 설치한 후 prototype 코드에서 통신 속도만 9600으로 변경해주고 sketches 내 폴더에 있는 prototype 폴더를 Arduino폴더에 복붙하였다.(이 과정에서 고등 3팀의 도움이 있었다.)

또한, (pip install python-arduino를 cmd에 입력한 후) 기본서에서의 pip install arduino-python대신 pip install arduino-python3로 해주어야 한다.


week2 2023.01.20 17:40-20:40

🔥 목표

-'아두이노와 피지컬 컴퓨팅 with 파이썬' Chapter 6, 8~10 공부

(김현빈 조장님의 강의 후 아두이노 실습)

💡 학습 내용

Chapter 06. 푸쉬 버튼 제어하기

푸쉬 버튼을 눌렀을 때 LED에 불이 들어오고 뗐을 때 불이 꺼지게 되는 회로를 구성하였다.

푸쉬 버튼 : 전기 회로를 연결하거나 끊을 수 있는 물리적 장치, 버튼을 눌렀을 때 회로가 연결되고 누르지 않았을 때 회로가 끊김. 이 구조를 통해 전기를 공급하거나 하지 않게 하는 스위치 기능을 함

플로팅 현상 : 스위치가 연결되지 않은 상태에서 전류가 흐르는지 안 흐르는지 알 수 없는 상태가 된 것

풀다운 저항 : 플로팅 현상을 해결하기 위한 방법으로 스위치가 열린 상태에서는 어디에도 전류가 흐르지 않고 입력핀에 0V 전압을 걸고 스위치가 닫히면 GND와 연결되어 GND에 연결된 저항으로 인해 전류가 모두 입력핀으로 흐르게 하여 5V 전압을 거는 방법

풀업 저항 : 플로팅 현상을 해결하기 위한 방법으로 스위치가 열린 상태일 때는 입력핀으로 전류가 흐르게 하여 5V 전압을 걸고 스위치가 닫히면 GND와 연결해 모든 전류가 GND 쪽으로 흐르게 하여 입력핀에 0V의 전압을 거는 방법

Arduino("9600", port="COM6") : 통신 속도를 9600으로 포트를 COM6로 설정하는 코드

pinMode(ledPin, “OUTPUT”) : 미리 설정한 변수 ledPin의 값에 해당하는 핀을 출력핀으로 설정

pinMode(buttonPin, “INPUT”) : 미리 설정한 변수 buttonPin의 값에 해당하는 핀을 입력핀으로 설정

digitalRead(buttonPin) : buttonPin에서 측정되는 값을 읽어오는 코드

digitalWrite(ledPin, “HIGH”) : 미리 설정한 변수 ledPin의 값에 해당하는 핀을 HIGH로 출력하는 코드

if문을 통해 푸쉬 버튼을 눌러 13번 핀에서 값이 1이 되면 LED에 불을 켜고 Push!!를 출력하고 else를 통해 푸쉬 버튼을 누르지 않으면 13번 핀에서 값이 0이 되며 LED의 불을 끄는 코드를 작성했다.

Chapter 08. LED를 제어하는 또 다른 방법

PWM 기능과 아날로그 출력 코드를 이용해 LED의 밝기를 조절하였다.

LED : 아두이노 보드에서 전류가 흐르지 않는 상태인 0부터 가장 밝은 255까지 총 256단계의 밝기 단계를 사용하여 LED를 점점 밝게 점점 어둡게 조절할 수 있다.

PWM : Pulse Width Modulation의 약자로 주기 폭 변조를 의미 한다. 각 주기별로 가장 높은 전압 구간의 비율을 조절하여 아날로그처럼 여러 개의 신호로 만들어 주는 출력 방법이다.

analogWrite(ledPin, brightness) : PWM 기능을 지원하는 핀(ledPin에 저장된 핀 번호)에 brightness에 저장한 값을 출력하는 코드

while 반복문과 brightness 변수를 통해 LED 최고 단계 255보다 작을 때는 brightness 값에 1씩 더해가며 LED의 밝기를 점점 올린다. 그리고 255보다 커지게 되면 brightness의 값에 1씩 빼가며 LED가 점점 어두워지게 한다.

Chapter 09. 조도 센서 제어하기

조도 센서를 통해 센서 주변이 어두워지면 LED에 불이 들어오고 밝아지면 LED에 불이 꺼지는 회로를 구성하였다.

조도 센서(Photoresistor) : 빛, 광, CdS 센서 등으로 불리는 센서로, 주변의 빛의 양을 감지하는 센서이다. 일반적인 조도 센서는 핀 다리가 2개이며 극성이 따로 없다. 일종의 저항으로 볼 수 있다.

analogRead(cdsPin) : cdsPin에 저장된 값에 해당하는 아날로그 핀에서 측정된 값을 읽어오는 코드

if문을 통해 조도 센서에 측정되는 값이 일정 수치보다 작아지면 즉 센서 주변이 어두워지면 LED에 불이 켜지고 else를 통해 일정 수치보다 조도 센서에 측정되는 값이 클 때는 LED에 불이 꺼지게 되는 코드를 작성했다.

Chapter 10. 가변 저항 제어하기

가변 저항을 통해 LED의 밝기를 조절하는 회로를 구성하였다.

가변 저항 : 가변 저항은 반고정저항, 포텐셔미터 등으로 불리며 저항 값을 조절할 수 있는 부품이다. 0부터 1023까지 값을 가질 수 있다.

while문을 통해 반복해서 가변 저항의 값을 측정하면서 변수 brightness를 설정해 가변 저항의 값을 4로 나눈 값을 저장한다. 이 brightness 값은 0~255까지의 값을 가지게 되어 LED의 밝기 단계를 거의 모두 조절할 수 있게 된다. 이를 통해 가변 저항의 값을 변경해 가며 LED의 밝기를 변경하는 코드를 작성했다.

💥문제와 해결 과정

Ch9-조건값 설정 오류

조도센서의 값과 관련된 조건을 책에 있는 것처럼 if cdsValue < 500로 작성했더니 조도센서 주변의 밝기를 조절해도 LED가 계속 켜져있기만 했습니다. '조건값의 설정이 잘못되어있나?'하는 의문점을 가지고 조도센서의 값을 먼저 출력해보았습니다. 저희의 스터디 환경에서 조도센서의 값은 0과60 사이에서 변하고 있었습니다. 이에 if cdsValue < 30으로 코드를 수정하고 다시 시도해보았더니 올바르게 작동하였습니다.

Ch10-공부하는 책의 회로 그림과 코드의 불일치-PWM

회로는 13번 핀에 연결되도록 되어있었고, 코드는 11번 핀으로(ledPin=11) 되어있었습니다.

이를 해결하기 위해 먼저 코드를 13으로(ledPin=13) 바꾸었습니다. 가변저항을 돌리면 LED의 밝기가 연속적으로 변화해야하는데, 꺼졌다가 켜지기만을 반복했습니다. 이에 회로와 코드를 11번 핀으로 수정하여(ledPin=11) 다시 시도해보았더니, 올바르게 작동하였습니다. 그 이유는 다음과 같습니다.

LED의 밝기를 조절하려면 PWM을 이용해야 합니다. PWM-펄스 폭 변조-기능을 이용하면 디지털 핀을 마치 아날로그 핀처럼 사용할 수 있게 되기 때문입니다. 아두이노 우노에서 PWM으로 사용 가능한 Pin은 ~표시를 해두었습니다. 그러므로 ~표시가 없는 13번 핀이 아닌, 11번 핀을 이용해야 합니다.

(*아날로그: 어떤 양 또는 데이터를 ‘연속적으로’ 변화하는 물리량으로 표현하는 것 / 연속적으로 변화하는 형태로 전류를 전달

*디지털: 1과 0이라는 숫자를 통해 정보를 전달하는 것 / 전류가 흐르는 상태(1)와 흐르지 않는 상태(0)의 2가지를 조합하여 전달)


week3 2023.01.27 17:10-20:10

🔥 목표

-'아두이노와 피지컬 컴퓨팅 with 파이썬' Chapter 11, 13~14 공부

(채희주 조장님의 강의 후 아두이노 실습)

💡 학습 내용

Chapter 11. 피에조 부저 제어하기

피에조 부저: 피에조(압전) 효과를 이용하여 소리를 낼 수 있는 부품

피에조 효과: 어떠한 성질을 이용하여 압력을 주게되면 표면에 전압이 발생하는 것

피에조 부저에서는 이 효과로 얇은 판에 미세한 떨림이 발생해 소리가 난다.

큰 소리를 내지는 못하지만 값이 싸고 사용하기 간단하다.

피에조 부저에는 2개의 핀이 달려 있는데, 긴 핀은 +극, 짧은 핀은 -극을 나타낸다.

C언어에서는 tone()함수를 이용하여 해당 주파수의 음을 내도록 할 수 있지만, 파이썬에서는 이러한 함수가 존재하지 않아, 원하는 음을 내기 위해 피에조 부저가 몇초마다 어느만큼 진동해야하는지 직접 설정해주어야 한다.

예를 들어, C4(도)는 1초당 262번 진동한다(262Hz). 따라서 이 음을 내기 위해서는 1초/262를 2로 나눈 값(0.001911) 동안 High전압을 주고 다시 같은 시간동안 Low 전압을 주어야 한다.

Chapter 13. 온도 센서 제어하기

온도 센서: 주변의 온도를 측정할 수 있는 부품

온도 센서의 3개의 핀은 아래의 그림에서 볼 수 있듯, 1번부터 전원 공급핀, 아날로그 출력 핀, GND 핀이다.

이 핀들을 제대로 연결하지 않을 시 온도 센서가 가열될 수 있으므로 주의해서 연결하여야 한다.

온도 센서가 측정한 값을 섭씨 온도로 출력하기 위해 다음과 같은 계산식을 거쳐야 한다.

섭씨온도 = (온도 센서가 출력한 값/1024.0) * 5000.0 / 10.0

우리가 사용한 온도 센서는 LM35dz로, 1℃ 변할 때, 10mV 변한다.(10mv/℃)

온도 센서는 아날로그 값을 출력하므로 이를 1024로 나누어주고, 5V의 전압을 주었으므로 mV로 전환하기 위해 5000을 곱해주고, 10mv/℃로 나누어 주면 섭씨 온도를 도출할 수 있다.

Chapter 14. 서보모터 제어하기

서보모터는 전기를 이용하여 회전 동작을 하는 전자 부품이다. 0~180 사이의 각도로 움직이며, 해당 회전 범위 안에서 정확한 위치 제어가 가능하다.

위 그림에 보이는 노란색 선은 PWM(펄스 폭 변조) 기능을 지원하는 디지털 핀에 연결해야한다. 빨간색 선은 5V에, 갈색 선은 GND에 연결한다.

💥문제와 해결 과정

피에조 부저

아두이노 키트에서 제공하는 피에조 부저의 음이 변하지 않아 문제가 발생했다. 동일한 주파수를 입력해도 각 부저마다 다른 음을 내는 것을 확인하여 부저에 문제가 있음을 알 수 있었다. 주파수에 대한 세심한 조절이 불가하여 부저를 변경하는 것이 좋을 것 같다고 판단했다.

또한, 부저를 제어하는 데 있어, 파이썬을 사용하는 게 부적절함을 느낄 수 있었다. C언어에서는 해당 주파수의 음을 원하는 시간동안 출력할 수 있지만, 파이썬은 음을 내기 위해 진동수 자체를 조절해야 하므로 다른 음을 연이어 내기에는 번거로워 교재에서도 한 음을 내는 것을 실습한다. 파이썬은 고등학생들이 접근하기에 쉬운 언어이므로 아두이노를 접하는 데는 용이할 수 있지만, 실제 사용을 위해서는 제어 함수를 다양하게 제공하는 c언어가 적절하다고 느꼈다.


week4 2023.02.03 17:05-20:50

🔥 목표

-C 언어로 LED 제어하는 코드 작성 후 아두이노 실습(with 스위치) (교재 2주차 내용)

-C 언어로 LCD 제어하는 코드 작성 후 아두이노 실습 (교재 5주차 내용)

1602 IIC I2C LCD

-C 언어로 7-segment 제어하는 코드 작성 후 아두이노 실습 (교재 5주차 내용)

💡 학습 내용

아두이노 코드 C 언어로 작성해서 LED + 스위치 추가해서 LED 제어하기
아두이노 코드 C 언어로 작성해서 LED 7-세그먼트 제어하기
아두이노 코드 C 언어로 작성해서 LCD 제어하기

💥문제와 해결 과정

LCD 화면 글자 미출력

코드도 정확히 입력하고, 회로도 제대로 연결했는데도 LCD에 글자가 출력되지 않아 이를 해결할 수 있는 방법에 대해 알아보았다.

⚠️ 글자가 출력되지 않을 때

ex) 화면만 반짝, 네모칸만 출력, 네모칸과 글자 함께 출력, …

l2C 주소를 확인합니다.

주소가 맞는데도 출력되지 않을 시 저항값의 세기를 조절합니다.

lcd 모니터를 뒤집어 파란색 블럭안에 있는 십자 나사를 세밀하게 조정하여 저항값을 조절하고 변화가 보이면 아두이노를 재연결합니다.

7 segment

7segment의 종류에 따라 a, b, c, d, e, f, g로 나타나는 부분이 다르므로 이를 확인한 후 회로를 연결하고 코드를 짜야 원하는 대로 작동할 수 있었다.


week5 2023.02.10 17:15-21:20

🔥 목표

-아두이노 문법 정리

-LED 한 개를 반짝이게 하는 회로에서 스위치로 LED를 제어하는 회로로 바로 이어지도록 하는 효율적인 회로 찾고 코드 작성해서 정리

-아두이노 C언어 2주차 교재 ppt 제작(문법 정리, LED, 스위치)

💡 학습 내용

아두이노 문법 정리

-조건문

  • if elseif else

    else if문의 수에는 제한이 없으며 여러개의 조건문을 위에서부터 읽어나가 가장 먼저 true가 되는 블록만 실행하고 if문을 빠져나가게되며

    모든 실행조건이 맞지않는경우 else문을 실행한다.

if ( 조건1 )
{
조건 1이 참이면 실행
}

else if ( 조건2 )
{
조건 1이 거짓이고,
조건 2가 참이면 실행
}

else if ( 조건3 )
{
조건 1이 거짓이고,
조건 2도 거짓이고,
조건 3이 참이면 실행
}

else
{
조건 1, 2, 3 모두 거짓이면 실행
}

-반복문

  • while

    조건식이 true일 경우에 계속해서 반복하는 문법

    조건식에는 비교 또는 논리 연산식이 오는데 조건식이 false가 되면 반복을 멈추고 while문을 종료한다.

  • for

    일정한 횟수만큼 반복할 때 주로 사용되는 문법

for (초기식; 조건식; 증식)
{
실행문;
}
  • Break: 반복문을 실행중지할 때 사용

  • Continue: 반복문을 종료하지 않고 계속 반복을 수행

-변수 선언

int char float double boolean

string

string : C++에서 제공하는 클래스로 문자열을 다루는 클래스이다.

-비교 연산자

== : 왼쪽의 피연산자와 오른쪽의 피연산자의 값이 같으면 1을 반환한다.

!= : 왼쪽의 피연산자와 오른쪽의 피연산자의 값이 다르면 1을 반환한다.

< : 왼쪽의 피연산자가 오른쪽의 피연산자보다 작으면 1을 반환한다.

<= : 왼쪽의 피연산자가 오른쪽의 피연산자보다 작거나 같으면 1을 반환한다.

> : 왼쪽의 피연산자가 오른쪽의 피연산자보다 크면 1을 반환한다.

>= : 왼쪽의 피연산자가 오른쪽의 피연산자보다 크거나 같으면 1을 반환한다.

-대입 연산자

= : 왼쪽의 피연산자에 오른쪽의 피연산자를 대입한다.

산술 연산자를 ‘=’ 왼쪽에 붙여서 왼쪽의 피연산자에 오른쪽 피연산자를 산술 연산한 값을 왼쪽의 피연산자에 대입하는 연산자들도 있다.

ex) +=, -=, *=, /=, %=

-산술 연산자

+ : 왼쪽의 피연산자에 오른쪽의 피연산자를 더한다.

- : 왼쪽의 피연산자에서 오른쪽의 피연산자를 뺀다.

  • : 왼쪽의 피연산자에 오른쪽의 피연산자를 곱한다.

/ : 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈다. 값으로는 몫을 반환한다.

% : 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 나머지를 반환한다.

아두이노 함수

-Void: 아무것도 반환할 필요가 없다.

-setup(): setup() 함수는 아두이노 IDE의 초기설정을 하는 부분이다. 각종 설정을 하는 함수이며 {} 안에 적힌 부분이 한 번만 실행된다.

-loop(): loop() 함수는 {} 안에 적힌 부분을 반복적으로 실행하는 함수이다.

-HIGH: 아두이노에서 5V를 의미하며, 숫자 1로 대신 사용해도 무방하다. 핀에 전기공급을 한다.

-LOW: 아두이노에서 0V를 의미하며, 숫자 0으로 대신 사용해도 무방하다. 핀에 전기공급을 끊는다.

-Serial.begin(통신속도): setup()에서 실행시켜준다. 컴퓨터와 아두이노 보드가 통신하기 위해 사용하는 시리얼 통신의 통신 속도를 설정하는 명령어이다. 통신속도로 보통 9600bps을 사용한다.

-pinMode(핀 번호, 모드)

해당 디지털 핀을 입력으로 사용할 것인지 출력으로 사용할 것인지 알려준다.

-INPUT: 입력모드

-OUTPUT: 출력모드

ex) pinMode(13, OUTPUT)

: 13번 핀을 출력 핀으로 설정한다.

-digitalWrite(핀 번호, 값)

해당 디지털 핀에 HIGH(전기 공급)또는 LOW(전기 공급 안 함)의 값을 줄 수 있는 명령어

핀 번호에는 전자 부품과 연결된 디지털 핀 번호 입력

값에는 HIGH 또는 LOW값을 입력

ex) digitalWrite(5, HIGH)

: 5번 핀을 사용하고 전기를 공급(HIGH)한다.

-delay(시간)

일정 시간만큼 시간을 지연시키는 함수

시간에 들어갈 값은 ms단위 (1/1000초)

1초를 표현할 때: delay(1000)

0.5초를 표현할 때: delay(500)

ex)

digitalWrite(13, HIGH);

delay(10000);

13번 핀에 전기를 공급하고, 10초간 대기

-digitalRead(핀 번호): 해당 디지털 핀의 상태를 읽어오는 명령어이다.

반환값: HIGH 또는 LOW 값 (1, 0)

-analogWrite(핀 번호, 값):

아날로그 값을 핀에 출력한다. 펄스 폭 조절(PWM) 기능을 지원하는 디지털 핀(아두이노 보드에서 ~표시가 되어 있는 핀)번호 0부터 255까지 입력 값을 지정하여 사용한다.

-analogRead(핀 번호)

아두이노 보드의 아날로그 핀에 연결된 값을 읽어온다.

아날로그 값은 0부터 1023까지 1024단계로 측정한다.

반환값: 0~1023 정수 값(int)

-Serial.available()

시리얼 통신으로 데이터를 받으면, 받은 데이터의 개수 출력

LED 실습에 효율적인 회로 찾고 코드 작성

‘LED 한 개를 반짝이게 하기’, ‘스위치로 LED 제어하기’ 를 어떻게 쉽고 효율적으로 학생들에게 전달할까에 대해 고민해보았다.

두 주제의 코드를 따로 작성하여 두 번 실습하는 것 보다 LED 한 개를 반짝여본 다음, 그 회로에 스위치를 추가하고 코드도 그에 맞게 수정하는 것이 학생들이 연계하여 이해하는 것에 도움을 줄 것이라고 생각했다.

이에 두 실습이 이어질 수 있도록 코드와 회로를 직접 수정하였다. 이 과정에서 팅커캐드를 사용했는데, 직접 회로를 만드는 것보다 시간이 훨씬 단축되었다. 이 특징을 이용해 여러 코드와 회로를 실험해볼 수 있었다.

작성한 코드와 회로가 잘 작동하는지를 팅커캐드를 통해 확인해 보고 최종 확정되면, 직접 아두이노 보드를 연결하여 실제로도 오류 없이 작동하는지 이중으로 체크하였다.

2주차 ppt 제작

week6 2023.02.17 17:00-20:00

🔥 목표

-LCD 제어 코드 및 회로도 정리

-7segment 제어 코드 및 회로도 정리

-아두이노 5주차 교재 ppt 제작(LCD, 7segment)

💡 학습 내용

LCD 제어 코드 및 회로도 정리
7segment 제어 코드 및 회로도 정리
5주차 ppt 제작

💥문제와 해결 과정

LCD 주소 설정

LCD I2c의 경우에는 주소를 맞춰주지 않으면 작동을 하지 않기에 주소를 찾는 작업을 해줘야 한다. 주소가 보통은 0X27과 0X3F라고 나와있지만 이번 교재를 만들며 사용했던 LCD는 주소가 0X20이었기에 이를 알아차리는 데 시간이 걸렸고, LCD의 종류 또한 참고자료에 있던 것과 달랐기에 이를 수정하는 데 시간이 걸렸다.

7 segment

7 segment 파트의 회로를 제작하는 과정에서는 7-segment의 LED가 a, b, c, d, e, f, g 중 어디에 해당하는지 확인해야 한다. 이 부품 역시 참고 자료에 나와있는 7-segment의 LED 배열과 달라서 하나하나 LED의 위치를 확인해야 했기에 시간이 걸렸다.

아두이노가 제대로 동작하지 않을 때

위의 두 과정을 거치며 아두이노가 제대로 동작하지 않을 때는 부품의 타입과 부품에 따른 기본 설정이 다르게 되어있지는 않은지를 확인해야 한다는 것을 알게되었다.


week7 2023.02.20 16:07-20:17

🔥 목표

-아두이노 스타터 키트 부품 안내서 제작

-프로젝트 기획서 양식 제작

-프로젝트 예시 학습지 제작

-아두이노 8주차 교재 ppt 제작(프로젝트 안내)

💡 학습 내용

아두이노 스타터 키트 부품 안내서 제작
프로젝트 기획서 양식 제작
프로젝트 예시 학습지 제작
8주차 ppt 제작

About

ajou_univ_winter_mogakso

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published