💻 PROJECTS/아두이노

    [아두이노를 활용한 데이터 입출력] 4. 코드 작성, 하드웨어 구성

    앞에서 공부한 내용을 바탕으로 코드를 작성했다. 1. 4개의 LED로 구현한 2진 카운터 delay() 함수 대신 millis() 함수를 이용하여 counter_time_previous, counter_time_current를 비교해서 1초의 시간 간격마다 카운터를 1씩 증가하도록 만들었다. 따로 counterLED()함수를 만들어 카운터에 해당하는 숫자를 boolean형으로 만들어 LED로 2진 표현을 할 수 있도록 하였다. 또한 4자리 이진수는 15가 최대이므로, counter가 16이 되면 0으로 초기화시키도록 했다. 2. 가변저항을 이용하여 아날로그값 읽기 아날로그 입력을 할 수 있는 핀 A0을 가변저항을 위한 핀으로 정의해뒀다. analogRead()함수를 이용하여 가변저항의 값을 얻어 그 값을..

    [아두이노를 활용한 데이터 입출력] 3. 서보모터

    모터는 전기 에너지를 운동 에너지로 변환하여 회전력을 얻는 기기이다. 그 중 프로젝트에 사용할 서보모터는 DC모터에 귀환제어 회로를 더하여 정밀 제어가 가능한 모터이다. 회전 각도 표준 서보 모터는 0~180도 사이만 회전이 가능하고, 연속 회전 서보 모터는 무한 회전이 가능하다. PWM 신호를 이용한 제어 50Hz PWM 신호 사용: 20ms 주기 1ms pulse (1/20 = 5% 듀티비)에서 0도 회전 2ms pulse (2/20 = 10% 듀티비)에서 180도 회전 연결선 VCC: 붉은색 GND: 검정색 또는 갈색 제어선(위치 설정): 노란색, 주황색 또는 흰색 (PWM 출력이 가능한 핀에 연결해야함) 사용 방법 라이브러리 포함 #include 제어핀 연결 myServo.attach(servoP..

    [아두이노를 활용한 데이터 입출력] 2. 주기적 처리

    주기적인 처리를 위한 함수 void delay(unsigned long ms) 밀리초 단위의 정한 시간만큼 아두이노를 지연시키는 함수 매개변수 ms: 밀리초 단위의 지연 시간 반환값 - void delayMicroseconds(unsigned int us) 마이크로초 단위의 정한 시간만큼 아두이노를 지연시키는 함수 매개변수 us: 마이크로초 단위의 지연 시간 반환값 - unsigned long millis(void) 프로그램 경과 시간을 알려주는 함수 매개변수 - 반환값 프로그램이 시작된 이후의 밀리초 단위의 경과 시간 delay함수를 이용하여 LED1은 1초 단위로 점멸, LED2는 버튼이 눌러질 때마다 반전하는 코드: int pin_button = 14; // 버튼 연결 핀 int pin_LED1 =..

    [아두이노를 활용한 데이터 입출력] 1. 아두이노 아날로그 신호 처리 방법

    1. ADC 아날로그 신호는 디지털 신호와 다르게 연속적이기 때문에 신호의 정보를 이용하기 위해서 디지털 신호로 바꾸어 주어야 한다. 아두이노에는 Analog-Digital Converter(ADC)가 내장되어있다. ADC는 아날로그 전압값을 프로그램에서 사용할 수 있는 디지털 값으로 변환해주는 장치이다. 정확도는 해상도(비트 개수)로 결정되는데 아두이노는 10bit ADC를 사용하기 때문에 1024단계의 값의로 나타낼 수 있다. 기준전압 출력값 5V 1023 2.5V 512 0V 0 아두이노 모델 ATmega2560은 16개의 채널을 갖고 있지만, 한 개의 ADC를 공유하기 때문에 동시에 여러 채널을 사용할 수 없다. 2. PWM Pulse Width Modulation(PWM)은 펄스 폭 변조를 말한..

    [아두이노를 활용한 데이터 입출력] 실습목표

    ◎ 실습목표 가변저항(조도센서도 가능)을 이용하여 아날로그 신호 입력을 받아 LED와 서보모터를 제어한다. 변화된 입력이 감지될 때마다 LED의 밝기와 서보모터의 속도, 방향을 제어 한다. 동시에 추가적으로 연결된 4개 LED가 시간의 흐름에 따라 1초단위로 증가하는 카운터 수를 2진수 형태로 표현 한다. 숫자는 밝혀진 LED 수와 위치로 구분한다. LED가 켜질 때 최대 수 이후에는 0으로 초기화된다. 즉, 1111 이후에는 0000으로 리셋 되도록 제어한다. 위 실습 내용을 응용할 수 있는 사례를 생각해보자. 각 기능의 코드에는 주석을 달아 구체적으로 설명한다. 프로젝트 시 고려해야하는 부분 아날로그 신호 -> 디지털 데이터 -> LED(밝기), 서보모터(속도,방향) 제어 1초마다 1씩 증가하는 카운..