[WAT128_05_03] TIMER3로 PWM으로 LED 밝기 제어

실험내용

WAT-IO&ADCWAT-AVR128 plus 보드를 연결하여 동시에 3개의 LED 밝기를 조절해 보겠습니다.

 

WAT-IO&ADC 특징

WAT-IO&ADC 모듈은 아두이노 AVR, Cortex-M3, PIC 등의 MCU와 10P Flat 케이블을 연결하여 Input/Output을 실험할 수 있는 모듈입니다. FND, LED, BUZZER 을 제어할 수 있으며 가변저항, CDS(빛의 밝기), 딥 스위치, 로터리 스위치의 값을 읽을 수 있는 제품입니다.

  • FND: 4- digit
  • LED: 8개
  • BUZZER: 1개
  • DIP SWITCH: 8채널
  • ROTARY SWITCH: 1개
  • 가변저항(5K): 1 개
  • CDS: 1개

 

 

함께 사용할 보드

 

연결

WAT-IO&ADC 의 LED 를 WAT-AVR128 Plus 보드의 PORTE(PE) 에 연결합니다.
(TIMER3 출력은 PORTE를 사용해야 합니다.)

 

 

소스 코드

전체 코드는 ATMEGA128 자료실의 WAT128_05_03.zip 예제로 제공합니다.

/*
   ATMEGA128의 TIMER3 을 사용하여 PORTE.3, PORTE.4, PORTE.5 에 연결된 LED의 밝기를
   0 ~ 100 % 까지 제어하는 예제입니다.

   AVRStudio 4.18
   2017-09-11

   필요한보드
      1. WAT-AVR128 Plus (모듈) : https://kit128.com/goods/view?no=52
      2. WAT-IO&ADC 보드 : https://kit128.com/goods/view?no=36

   연결
      WAT-IO&ADC LED  -> AVR PORTB

   Main Clock
    11.0592MHz  
 
   홈페이지:  http://whiteat.com
   기술자료실: http://docs.whiteat.com
   쇼핑몰:    http://kit128.com

*/

#include <avr/io.h>
#include "WAT128.h"
volatile unsigned int iDuty = 0;
volatile BOOL bIncrease = TRUE;

int main()
{
  SFIOR = 0;

  DDRE = (1<<PE3 |1<<PE4 |1<<PE5 ); 
  TCCR3A=0xAA; // MODE=10,    FAST PWM
  TCCR3B=0x1A; // 8분주
  ICR3=100;   // 0 ~ 100 까지의 값을 사용

  OCR3A = 100;   // 초기 밝기는 0 %로 설정
  OCR3B = 100;   // 초기 밝기는 0 %로 설정
  OCR3C = 100;    // 초기 밝기는 0 %로 설정

  while(1)
  {
    OCR3A -=1;  // PE3에 연결된 LED 밝기는 1씩 증가
    OCR3B -=2;  // PE4에 연결된 LED 밝기는 2씩 증가
    OCR3C -=4;  // PE5에 연결된 LED 밝기는 4씩 증가

    if(OCR3A>100) 
      OCR3A =100;
    if(OCR3B>100) 
      OCR3B =100;
    if(OCR3C>100) 
      OCR3C =100;

    DelayMS(20);
  }
}

 

결과

3개의 LED 밝기가 서서히 변합니다.

 

제품 구매

WAT-IO&ADC 보드 는 https://kit128.com/goods/view?no=36 에서
WAT-AVR128 PLUS 는 https://kit128.com/goods/view?no=52 에서
WAT-IO&ADC + AVR128 세트는 https://kit128.com/goods/view?no=38  구매하실 수 있습니다.

WAT-AVR128 제공 예제(소스코드)

WAT128 코드는 AVR 자료실 에 있습니다.

  • WAT128_01_01: LED 순차적으로 ON 하기
  • WAT128_01_02: 딥스위치에 따른 LED 제어- 1
  • WAT128_01_03: 딥스위치에 따른 LED 제어- 2
  • WAT128_01_04: Anode Type FND 제어
  • WAT128_01_05: 키매트릭스(4×4) PC에서 모니터링
  • WAT128_02_01: 캐릭터 LCD 표시
  • WAT128_02_02: 캐릭터 LCD에 사용자 정의 문자 표시
  • WAT128_02_03: 그래픽 LCD에 한글,영문,숫자 표시
  • WAT128_02_04: 그래픽 LCD에 도형(사각형,원,선) 그리기
  • WAT128_04_01: 외부 인터럽트 카운터 표시
  • WAT128_05_01: TIMER0 로 1초 만들기
  • WAT128_05_02: TIMER1 의 PWM 으로 LED 밝기 제어
  • WAT128_05_03: TIMER3 의 PWM 으로 LED 밝기 제어
  • WAT128_06_01: SPI EEPROM
  • WAT128_07_01: USART를 사용하여 PC로 ‘A’~’Z’ 전송
  • WAT128_07_02: PC에서 수신된 데이터를 표시하고 PC로 에코 보내기
  • WAT128_07_03: WAT-GPIO 와 PC 실시간으로 통신
  • WAT128_07_04: CDS, 가변저항 값을 컴퓨터 화면에 그래프로 표시

 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다