BASIC4MCU | 질문게시판 | 가변저항을 활용한 led 점등주기 관련해서 질문입니다
페이지 정보
작성자 Ssll 작성일2022-12-04 22:18 조회3,062회 댓글4건본문
제가 아직 아두이노가 많이 미숙해서 여러군데에서 찾아보면서 하고 있는데
가변저항을 활용해서 최소는 0 최대는 2초까지의 주기를 활용하여 LED를 점등시키라고 하는데
const int potentioMeterPin =0;
const int ledPin1 =11;
const int ledPin2 =10;
const int ledPin3 =9;
void setup() {
pinMode(ledPin1,OUTPUT);
pinMode(ledPin2,OUTPUT);
pinMode(ledPin3,OUTPUT);
Serial.begin(9600);
}
void loop() {
int adcValue;
int duty;
adcValue = analogRead(potentioMeterPin);
duty = map(adcValue,0,1023,0,100);
digitalWrite(ledPin1,HIGH);
digitalWrite(ledPin2,HIGH);
digitalWrite(ledPin3,HIGH);
delay(duty);
digitalWrite(ledPin1,LOW);
digitalWrite(ledPin2,LOW);
digitalWrite(ledPin3,LOW);
delay(100-duty);
Serial.println("ADC Value is");
Serial.println(adcValue);
Serial.println(".Duty cycle is");
Serial.println(duty);
Serial.println("%");
}
이 회로에서 주기를 어떻게 수정을 하여야 0.5초에서 2초까지의 점멸주기를 가진 회로를 짤수 있는거입니까?
LED점등은 모두 동시에 하려고 합니다.
댓글 4
조회수 3,062master님의 댓글
master 작성일
가변저항 1개로 주파수(주기)와 듀티를 모두 설정하지 못합니다.
지문은 주파수(주기)인데, 코드는 듀티네요?
//
최소는 0 최대는 2초까지의 주기
0.5초에서 2초까지의 점멸주기
아랫쪽은 0인가요? 0.5인가요?
Ssll님의 댓글
Ssll
Led가 점등되는 간격만을 조절하도록 가변저항을 설정하고 아래쪽은 0.5로 하려고 했습니다
master님의 댓글
master 작성일
const int VR_Pin=A0;
const int ledPin1=11,ledPin2=10,ledPin3=9;
//
void setup(){
pinMode(ledPin1,OUTPUT); pinMode(ledPin2,OUTPUT); pinMode(ledPin3,OUTPUT);
Serial.begin(115200);
}
//
void loop(){
int adc_val=analogRead(VR_Pin);
int half_period=map(adc_val,0,1023,250,1000); // half period = 0.25~1sec
digitalWrite(ledPin1,1); digitalWrite(ledPin2,1); digitalWrite(ledPin3,1); delay(half_period);
digitalWrite(ledPin1,0); digitalWrite(ledPin2,0); digitalWrite(ledPin3,0); delay(half_period);
//
int period=half_period*2;
Serial.print("ADC:"); Serial.print(adc_val); Serial.print(". Period:"); Serial.println(period);
}
시리얼 통신에 의한 주기오차를 줄이기 위해서 통신속도를 최대로 높였습니다.
시리얼 통신 시간은 최대 1.914ms 정도 발생합니다.
Ssll님의 댓글
Ssll
감사합니다