BASIC4MCU | 질문게시판 | 답변 : 아두이노 PWM을 이용한 12V LED 제어
페이지 정보
작성자 master 작성일2020-03-19 04:43 조회8,711회 댓글1건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=11772
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2020-03-19 오전 4:43:41// by Ok-Hyun Park//1.동작 주파수 125Hz2.Switch 1번을 On1초 동안 PWM 0%-->100%, 100%에서 1분 대기, 2초 동안 PWM 100%-->0%, 0%에서 1분 대기3.Switch 2번을 On 1초 동안 PWM 0%~100%4.Switch 3번을 On 2초 동안 PWM 100%~0%5.Switch 4번을 누를때 마다 PWM 비율을 1%증가6.Switch 5번을 누를때 마다 PWM 비율을 1%감소7.내용을 OLED(SSD1306)으로 출력//int LED=10;int SW1=2,SW2=3,SW3=4,SW4=5,SW5=6;//bool flag4=0,flag5=0;int mode=0,pwm=0;long t,t1;//void setup(){t1=millis();}//void loop(){analogWrite(LED,pwm);t=millis();//---------------------------------------------------if(digitalRead(SW1)){ mode=1; t1=t; pwm= 0; }if(digitalRead(SW2)){ mode=2; t1=t; pwm= 0; }if(digitalRead(SW3)){ mode=3; t1=t; pwm=255; }if(digitalRead(SW4)){if(flag4==0){ flag4=1; if(pwm<255)pwm++; delay(50); }}else{if(flag4==1){ flag4=0; delay(50); }}//if(digitalRead(SW5)){if(flag4==0){ flag4=1; if(pwm>0)pwm--; delay(50); }}else{if(flag5==1){ flag5=0; delay(50); }}//---------------------------------------------------if(mode==1){if (t-t1< 1000){ pwm+=(int)((float)pwm*255.0/1000.0); } // 1초 동안 PWM 0%-->100%else if(t-t1< 61000){ pwm=255; } // 100%에서 1분 대기else if(t-t1< 63000){ pwm-=(int)((float)pwm*255.0/2000.0); } // 2초 동안 PWM 100%-->0%else if(t-t1<123000){ pwm= 0; } // 0%에서 1분 대기else { t1=t; } // 반복동작을 위한 초기화}//if(mode==2){if(t-t1<1000){ pwm+=(int)((float)pwm*255.0/1000.0); } // 1초 동안 PWM 0%-->100%else { t1=t; pwm=0; } // 반복동작을 위한 초기화}//if(mode==3){if(t-t1<2000){ pwm-=(int)((float)pwm*255.0/2000.0); } // 2초 동안 PWM 100%-->0%else { t1=t; pwm=255; } // 반복동작을 위한 초기화}//---------------------------------------------------delay(1);}
기초가 부족하면 도움을 드리기 어렵습니다.
pwm 주파수는 (핀에 따라서) 500Hz와 1KHz 정도의 주파수인데 125Hz로 변경하는 것은 공부를 해서 만들어보세요
웹검색하면 pwm 주파수를 변경하는 방법을 설명한 글을 찾을 수 있을겁니다.
OLED(SSD1306) 예제도 웹검색으로 찾아서 공부한 후에 추가하세요
댓글 1
조회수 8,711namse12님의 댓글
namse12 작성일
주파수 변경하는 부분과 OLED 출력부분까지 모두 해결했는데,
생각보다 원하는 동작이 나오지 않네요...
위에 알려주신것에 수정하면서 해 봐야 할 것 같아요...
도와주셔서 감사합니다.