메뉴 건너뛰기

배경이미지

Arduino - 2개센서 구동 LED

2018.04.06 12:42

2개센서 구동 LED

조회 수 11 추천 수 0 댓글 1
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

double counter ;
int bright;
int flag=2;

double counter2 ;
int bright2;
int flag2=2;
 void setup() {
   Serial.begin(9600);
   pinMode(A1, INPUT_PULLUP); // 스위치 = IR센서
   pinMode(A0, INPUT_PULLUP);
  
   pinMode(9,OUTPUT);  ///L293D PWM pin
   pinMode(10,OUTPUT);

   pinMode(A4,OUTPUT);  
 }

void loop()
{
   Serial.print(digitalRead(A0));
   Serial.print("  ");
   Serial.print(digitalRead(A1));Serial.print("  ");
   Serial.print(flag);Serial.print("  ");
   //IR센서 사용 시 analogRead(A0)<400
   if(digitalRead(A0)==LOW&&flag==2) // 스위치가 눌린 경우
   {
      digitalWrite(9,HIGH);
      digitalWrite(A4,HIGH);
      flag=3;
   }

   //IR센서 사용 시 analogRead(A0)>400 ->digitalRead(A0)==HIGH
   if(digitalRead(A0)==HIGH && flag==3) // 스위치가 안눌린 경우
   {
      counter = 255;
      flag=1;
   }
   if(flag==1) // flag 가 1인 경우 dimming 시작
   {
     if(digitalRead(A0)==HIGH) //dimmming이 시작되는 과정에서 센서가 감지되지 않은 경우
     {
       counter=counter-2;
       if(counter < 0 ) { flag=2; digitalWrite(9,LOW);digitalWrite(A4,LOW);}
       if(counter > 0 )
       {
          bright=map(counter,0,255,0,255);
          analogWrite(9,bright);
       }
     }
     if(digitalRead(A0) == LOW)//dimmming이 시작되는 과정에서 센서가 감지된 경우
     {
        flag=2; 
     }
   }
///////////////////////////////////////////////////////////////////////////////////
   if(digitalRead(A1)==LOW&&flag2==2) // 스위치가 눌린 경우
   {
      digitalWrite(10,HIGH);
      flag2=3;
   }

   //IR센서 사용 시 analogRead(A1)>400 ->digitalRead(A1)==HIGH
   if(digitalRead(A1)==HIGH && flag2==3) // 스위치가 안눌린 경우
   {
      counter2 = 255;
      flag2=1;
   }
   if(flag2==1) // flag2 가 1인 경우 dimming 시작
   {
     if(digitalRead(A1)==HIGH) //dimmming이 시작되는 과정에서 센서가 감지되지 않은 경우
     {
       counter2=counter2-2;
       if(counter2 < 0 ) { flag2=2; digitalWrite(10,LOW);}
       if(counter2 > 0 )
       {
          bright2=map(counter2,0,255,0,255);
          analogWrite(10,bright2);
       }
     }
     if(digitalRead(A1) == LOW)//dimmming이 시작되는 과정에서 센서가 감지된 경우
     {
        flag2=2; 
     }
   }
   Serial.println(counter);
}

?
  • ?
    EMOON 2018.04.06 18:08
    double counter ;
    int bright;
    int flag=2;

    double counter2 ;
    int bright2;
    int flag2=2;
    void setup() {
    Serial.begin(9600);
    pinMode(A1, INPUT_PULLUP); // 스위치 = IR센서
    pinMode(A0, INPUT_PULLUP);

    pinMode(9,OUTPUT); ///L293D PWM pin
    pinMode(10,OUTPUT);

    pinMode(A4,OUTPUT);
    }

    void loop()
    {
    Serial.print(" A0 ");
    Serial.print(analogRead(A0));
    Serial.print(" A1 ");
    Serial.print(analogRead(A1));
    Serial.print(flag);Serial.print(" ");
    //IR센서 사용 시 analogRead(A0)<400 ->digitalRead(A0)==LOW
    if(analogRead(A0)<400 &&flag==2) // 스위치가 눌린 경우
    {
    digitalWrite(9,HIGH);
    digitalWrite(A4,HIGH);
    flag=3;
    }

    //IR센서 사용 시 analogRead(A0)>400 ->digitalRead(A0)==HIGH
    if(analogRead(A0)>970 && flag==3) // 스위치가 안눌린 경우
    {
    counter = 255;
    flag=1;
    }
    if(flag==1) // flag 가 1인 경우 dimming 시작
    {
    if(analogRead(A0)>970) //dimmming이 시작되는 과정에서 센서가 감지되지 않은 경우
    {
    counter=counter-2;
    if(counter < 0 ) { flag=2; digitalWrite(9,LOW);digitalWrite(A4,LOW);}
    if(counter > 0 )
    {
    bright=map(counter,0,255,0,255);
    analogWrite(9,bright);
    }
    }
    if(analogRead(A0)<970)//dimmming이 시작되는 과정에서 센서가 감지된 경우
    {
    flag=2;
    }
    }
    ///////////////////////////////////////////////////////////////////////////////////
    if(analogRead(A1)<400 &&flag2==2) // 스위치가 눌린 경우
    {
    digitalWrite(10,HIGH);
    flag2=3;
    }

    //IR센서 사용 시 analogRead(A1)>400 ->digitalRead(A1)==HIGH
    if(analogRead(A1)>7000 && flag2==3) // 스위치가 안눌린 경우
    {
    counter2 = 255;
    flag2=1;
    }
    if(flag2==1) // flag2 가 1인 경우 dimming 시작
    {
    if(analogRead(A0)>7000) //dimmming이 시작되는 과정에서 센서가 감지되지 않은 경우
    {
    counter2=counter2-2;
    if(counter2 < 0 ) { flag2=2; digitalWrite(10,LOW);}
    if(counter2 > 0 )
    {
    bright2=map(counter2,0,255,0,255);
    analogWrite(10,bright2);
    }
    }
    if(analogRead(A0)<7000)//dimmming이 시작되는 과정에서 센서가 감지된 경우
    {
    flag2=2;
    }
    }
    Serial.println(counter);
    }

List of Articles
번호 제목 글쓴이 날짜 조회 수
» 2개센서 구동 LED 1 EMOON 2018.04.06 11
15 L293B 모터드라이브 EMOON 2018.04.04 11
14 Touch Sensor file EMOON 2018.04.03 32
13 센서 2개 연결 3 EMOON 2018.04.03 9
12 LoL shield / LED 극성 알아보기 file EMOON 2018.03.29 10
11 ATTINY85 동작 테스트 EMOON 2018.03.29 10
10 제 수업 file EMOON 2018.03.16 10
9 제5수업 LED Project 1 file EMOON 2018.03.07 7
8 map() EMOON 2018.03.07 8
7 제4 수업2 2018 0226 EMOON 2018.02.28 6
6 Interactive led table module file EMOON 2018.02.21 9
5 다수 서보모터 구동 16ch EMOON 2018.02.20 9
4 제3수업 EMOON 2018.02.20 3
3 제2 수업 1 EMOON 2018.02.12 15
2 인터넷강의 EMOON 2018.02.10 8
1 제1 수업 file EMOON 2018.02.10 14
Board Pagination Prev 1 Next
/ 1