본문 바로가기
아두이노

아누이노 CDS조도센서 / 가변저항 + 전등

by ADELA_J 2023. 7. 24.

회로-  

 

<아두이노 CDS 조도센서의 값을 시리얼통신으로 전송하기>

더보기
#define LED_RED 5
#define LED_GREEN 6
#define LED_BLUE 11
#define BRIGHT_PIN A1
 
void setup() {
  Serial.begin(9600);
  pinMode(LED_RED, OUTPUT);
  pinMode(LED_GREEN,OUTPUT);
  pinMode(LED_BLUE, OUTPUT);
}
 
void loop() {
  int brightValue = analogRead(BRIGHT_PIN);
  Serial.println(brightValue);
}

<어두워지면 전등이 켜지게 하기>

더보기
#define LED_RED 5
#define LED_GREEN 6
#define LED_BLUE 11
#define BRIGHT_PIN A1
 
void setup() {
  Serial.begin(9600);
  pinMode(LED_RED, OUTPUT);
  pinMode(LED_GREEN,OUTPUT);
  pinMode(LED_BLUE, OUTPUT);
}
 
void loop() {
  int brightValue = analogRead(BRIGHT_PIN);
  Serial.println(brightValue);
  if (brightValue > 500) ledOn();
  else ledOff();
}
 
void ledOn()
{
  digitalWrite(LED_RED, HIGH);
  digitalWrite(LED_GREEN, HIGH);
  digitalWrite(LED_BLUE, HIGH);
}
 
void ledOff()
{
  digitalWrite(LED_RED, LOW);
  digitalWrite(LED_GREEN, LOW);
  digitalWrite(LED_BLUE, LOW);
}

 

<어두워지면 3초 후 켜지는 전등 만들기>

더보기
#define LED_RED 5
#define LED_GREEN 6
#define LED_BLUE 11
#define BRIGHT_PIN A1
 
unsigned long currTime = 0;
unsigned long prevTime = 0;
int sec = 0;
 
int state = 0;
 
void setup() {
  Serial.begin(9600);
  pinMode(LED_RED, OUTPUT);
  pinMode(LED_GREEN, OUTPUT);
  pinMode(LED_BLUE, OUTPUT);
}
 
void loop(){
  int brightValue = analogRead(BRIGHT_PIN);
  Serial.println(brightValue);
 
  currTime = millis();
  if(currTime - prevTime >= 1000)
  {
    prevTime = currTime;
    sec++;
  }
 
  if(brightValue>500)
  {
    if(sec>=3)
    {
      sec=3;
      ledOn();
    }
  }
  else
  {
    sec = 0;
    ledOff();
  }
}
void ledOn()
{
  digitalWrite(LED_RED, HIGH);
  digitalWrite(LED_GREEN, HIGH);
  digitalWrite(LED_BLUE, HIGH);
}
void ledOff()
{
  digitalWrite(LED_RED, LOW);
  digitalWrite(LED_GREEN, LOW);
  digitalWrite(LED_BLUE, LOW);
}

 

 

 

회로 - 

<가변 저항 값 읽어 값 전송하기>

더보기

 

#define LED_RED 5
#define LED_GREEN 6
#define LED_BLUE 11
#define VR_PIN A0
 
void setup() {
  Serial.begin(9600);
}
 
void loop() {
  int vrValue = analogRead(VR_PIN);
  Serial.println(vrValue);
  delay(100);
}

 

 

<가변 저항 값으로  LED의 밝기 조절하기>

더보기
#define LED_RED 5
#define LED_GREEN 6
#define LED_BLUE 11
#define VR_PIN A0
 
void setup() {
  Serial.begin(9600);
}
 
void loop() {
  int vrValue = analogRead(VR_PIN);
  Serial.println(vrValue);
 
  ledBrightSet(vrValue / 4);
}
 
void ledBrightSet(int value)
{
  if (value >=20)
  {
    analogWrite(LED_RED, value);
    analogWrite(LED_GREEN, value);
    analogWrite(LED_BLUE, value);
  }
  else
  {
    analogWrite(LED_RED, 0);
    analogWrite(LED_GREEN, 0);
    analogWrite(LED_BLUE, 0);
  }
}

 

<가변 저항 값으로 LED의 밝기 단계 조절하기>

더보기
#define LED_RED 5
#define LED_GREEN 6
#define LED_BLUE 11
#define VR_PIN A0
 
void setup() {
  Serial.begin(9600);
}
 
void loop() {
  int vrValue = analogRead(VR_PIN);
  int percent = map(vrValue,0,1023,0,100);
  Serial.println(percent);
 
  ledBrightSet(percent);
}
 
void ledBrightSet(int percentValue)
{
  if (percentValue >=0 && percentValue <=10)
  {
    analogWrite(LED_RED, 0);
    analogWrite(LED_GREEN, 0);
    analogWrite(LED_BLUE,0);
  }
  else if(percentValue >=11 && percentValue <=40)
  {
    analogWrite(LED_RED, 80);
    analogWrite(LED_GREEN, 80);
    analogWrite(LED_BLUE, 80);
  }
  else if (percentValue >= 41 && percentValue <= 71)
  {
    analogWrite(LED_RED, 160);
    analogWrite(LED_GREEN, 160);
    analogWrite(LED_BLUE, 160);
  }
  else if (percentValue >= 71 && percentValue <= 100)
  {
    analogWrite(LED_RED, 255);
    analogWrite(LED_GREEN, 255);
    analogWrite(LED_BLUE, 255);
  }
}