CodingMaker

12강 Arduino INPUT 본문

Fablab Academy

12강 Arduino INPUT

메이커K 2017. 12. 11. 14:31

 int  정수형 데이터를 저장하기 위한 데이터 타입이다. ex) 2,3,4


 const  상수를 선언하기 위한 것으로 상수로 선언된 값은 소스내에서 값을 바꿀 수가 없다. 일반 변수에 값을 넣어 사용하려면 데이터타입 앞에 선언하면 된다. 코드 작성의 편의를 위해서 사용된다.


 float  실수형의 데이터를 저장하는 데이터 타입이다.(소수점을 사용하는 숫자) ex) 1.2, 3.04, 4.02


 char  문자를 저장하기 위한 데이터 타입이다. 1바이트의 메모리가 할당된다. ex) 'H'


 boolean  참, 거짓을 의미하는 논리값을 저장하는 데이터타입으로 true(1)나 flase(0)의 값이 들어가게 된다. 메모리 최소단위는 1byte ex)flase, true


 string  문자를 사용하기 위해 사용하는 전용 클래스로 다양한 멤버함수와 연산자 사용으로 char형보다 다양하게 문자를 사용 가능하다. ex) "Hellow"



   4. LED 서서히 켜기   


코드

void setup() {

  pinMode(11,OUTPUT);

  pinMode(10,OUTPUT);

}


void loop() {

  analogWrite(11,50); // 11번 핀의 전압을 0(0V)~255(5V)중 50에 해당하는 전압으로 설정

  analogWrite(10,100);

  delay(1000); //1초 기다리기

  analogWrite(11,200);

  analogWrite(10,255);

  delay(1000);

}


실행동영상



   5. push button 사용하기(디지털 입력)   



코드

//push button 연결하기, 누르면 LED가 켜지게 하기

int button1Pin = 2; //푸시버튼과 연결된 핀 번호(2)를 저장할 변수 선언

int led = 13; // LED와 연결된 핀 번호(13)를 저장할 변수 선언


void setup() {

  pinMode(led,OUTPUT);

  pinMode(button1Pin,INPUT);

}


void loop() {

  int button1State = digitalRead(button1Pin);

  if(button1State == LOW){

    digitalWrite(led,HIGH);

  }

  else{

    digitalWrite(led,LOW);

  }

}


코드2: 버튼을 누르면 켜지고 다시 누르면 꺼지게 한다

  void setup() {

  pinMode(2, INPUT);

  pinMode(13, OUTPUT);

}


void loop() {

  if(digitalRead(2) == 0) { //눌렸다면, 비교연산식이 참이면 다음을 실행한다.

    digitalWrite(13, !digitalRead(13)); //13번 핀이 0이면 꺼지고 1이면 켜진다.

    delay(500);

  }

}


인체감지 센서를 연결하는 코딩

void setup() { 

  pinMode(2, INPUT); // 인체감지센서의 2번 핀을 디지털 2번에 연결하고 입력을 설정한다.

  Serial.begin(9600); // 시리얼을 9600으로 설정한다.

}


void loop() {

    Serial.println(!digitalRead(2));  // 시리얼 2번을 읽는다 1은 인체감지 0은 감지 하지 않았을때..

}


실행동영상



   6. 컴퓨터와 대화하기(시리얼 통신)   


코드

  //push button 연결하기, 누르면 LED가 켜지게 하기

int button1Pin = 2;

int led = 13;


void setup() {

  pinMode(led,OUTPUT);

  pinMode(button1Pin,INPUT);

  Serial.begin(9600); //시리얼 통신을 열고 속도를 9600bps로 사용한다.

}


void loop() {

  int button1State = digitalRead(button1Pin);

  if(button1State == LOW){

    Serial.println(1); //버튼이 눌려지면 1이 출력되게 한다.

    digitalWrite(led,HIGH);

  }

  else{

    digitalWrite(led,LOW);

    Serial.println(0);//버튼이 눌려지지 않았을때는 0이 출력되게 한다.

  }

}


시리얼 모니터


버튼이 눌려지지 않았을 때 0



버튼이 눌려졌을때 1


   숙제1    7. 가변저항으로 LED 밝기 조절하기(아날로그 입력)   

코드

int led = 3; //LED를 3번 핀에 연결합니다.


void setup() {

  pinMode(led,OUTPUT); //3번 핀에 연결된 LED를 출력으로 설정한다.

 }


void loop() {

  //int analogInput = analogRead(A0);

  //가변저항을 아날로그 0번 핀에 연결하고 이를 입력으로 설정한다,

  //int brightness = analogInput/4;

  // 가변저항의 입력값(0~1023사이의 값)을 LED의 밝기값(0~255)의 값으로 변경해준다.

  //analogWrite(led,brightness);

  analogWrite(led,analogRead(A0)/4);

  // 가변저항의 값(analogRead(A0))을 4로 나누어 값의 범위를 0~255 변환 후 LED로 보내 출력한다.

} 


실행동영상



  숙제2     8.포토레지스터로 LED 밝기 조절하기   


저항이 작아지면 전압이 높아진다. 

코드

   int led = 3; //LED를 3번 핀에 연결합니다.

int sensorPin = 0;

int lightLevel;


void setup() {

  pinMode(led,OUTPUT); //3번 핀에 연결된 LED를 출력으로 설정한다.

  Serial.begin(9600);

  Serial.println("Serial connected");

 }


void loop() {

  lightLevel=analogRead(sensorPin); //아날로그 값을 읽음

  manulTune(); //LED 밝기 조절 함수

  analogWrite(led,lightLevel); //lightLevel 만큼 LED가 밝혀짐

  Serial.println(lightLevel);

}


void manulTune(){

  lightLevel=map(lightLevel,400,700,0,255);

  // 500~1023 범위의 lightLevel를 0~255범위로 변환한다.

  lightLevel=constrain(lightLevel,0,255); //값을 제한하는 것이다. 범위를 벗어나는 값을 제한한다.

  //lightLevel이 0보다 작으면 0출력, 255보다 크면 255를 출력, 0~255사이면 그 값을 그대로 출력한다.

}


실행동영상 : 손으로 센서를 가려서 어둡게 하면 불이 서서히 꺼지고 밝게 하면 다시 불이 서서히 켜진다.


'Fablab Academy' 카테고리의 다른 글

14강 Arduino 통신  (0) 2017.12.11
13강 Arduino OUTPUT  (0) 2017.12.11
11강 Arduino LED  (0) 2017.12.11
10강 laser cutting  (0) 2017.12.11
9강 MoldingCasting  (0) 2017.12.11