[복사하고 따라하는 아두이노] 아두이노 온습도센서 제어(feat.DHT22) 안녕하세요. 공대 박형입니다. 오늘은 아두이노에서 온습도 센서를 사용하는 방법을 알아보고, 온습도 센서를 통해 LED를 제어해보겠습니다. 우선 아두이노에서 DHT온습도센서(11버전, 22버전 모두)를 사용하기 위해서는 온습도센서 관련 정보가 담겨있는 라이브러리를 추가해야 합니다. 라이브러리란 자주 사용하는 변수, 함수 등을 따로 한 파일에 미리 지정하여 저장하고, 그 지정한 파일을 불러옴으로써 내가 작성하는 코드에서 변수나 함수를 정의하지 않아도 불러온 파일에 있는 함수, 변수를 사용할 수 있는 기능이 있습니다. 사용하기 복잡하거나 까다로운 센서 같은 경우는 제조사에서 센서를 사용하기 쉬운 환경을 제공하기위해 라이브러리를 추가로..
[복사하고 따라하는 아두이노] 아두이노 블루투스 LED제어(feat.앱인벤터,HC-06) 안녕하세요 공대 박형입니다. 오늘은 블루투스 센서 HC-06을 통해 아두이노와 스마트폰을 무선 통신하여 LED를 제어해보겠습니다. 스마트폰을 이용해 아두이노와 자유롭게 통신하기위해 앱인벤터를 통해 간단한 앱도 제작해 보겠습니다. 코드부터 보시죠 #include // 블루투스 통신을 위한 라이브러리를 가져온다. SoftwareSerial BSerial(2, 3); // (RX, TX) int LED = 13; char data; void setup(){ BSerial.begin(9600); Serial.begin(9600); pinMode(13, OUTPUT); // led 제어 핀 } void loop(){ if (..
[복사하고 따라하는 아두이노] 아두이노 압력센서 사용(feat.FSR402) 안녕하세요 공대 박형입니다. 오늘은 아두이노 압력센서를 사용해보겠습니다. 코드부터 보시죠. int Led = 13; int FSRsensor = A0; // 센서값을 아나로그 A0핀 설정 int value = 0; // loop에서 사용할 변수 설정 void setup() { pinMode(Led, OUTPUT); Serial.begin(9600); } void loop() { value = analogRead(FSRsensor); // 아날로그 센서값을 value 변수에 저장 Serial.println(value); // 센서값을 시리얼 모니터에 출력 value = map(value, 0, 1023, 0, 255); // va..
[복사하고 따라하는 아두이노] 아두이노 EEPROM(feat.put&get) 안녕하세요. 공대 박형입니다. 오늘은 아두이노 EEPROM put, get 함수 예제를 실습해보겠습니다. 아두이노 EEPROM에서는 5개의 함수가 있습니다. 1.write : EEPROM의 인덱스에 전달된 매개변수 값을 저장 2.read : 매개변수로 전달되는 인덱스에 저장되어 있는 1바이트값을 읽어와서 반환 3.update : EEPROM의 인덱스에 저장된 ㄱ밧이 전달된 매개변수 값과 다를 경우 값을 저장 4.put : EEPROM의 위치에 전달된 데이터(구조체)를 저장 5.get : 매개변수로 전달되는 위치에 저장되어 있는 데이터를 가져옴 이번 시간에는 put 와 get함수를 실습해 보겠습니다. 대체적으로 많이 사용하는 방법..
[복사하고 따라하는 아두이노] 아두이노 EEPROM(feat.write&read) 안녕하세요. 공대 박형입니다. 오늘은 아두이노 EEPROM write, raed 함수 예제를 실습해보겠습니다. 아두이노 EEPROM에서는 5개의 함수가 있습니다. 1.write : EEPROM의 인덱스에 전달된 매개변수 값을 저장2.read : 매개변수로 전달되는 인덱스에 저장되어 있는 1바이트값을 읽어와서 반환3.update : EEPROM의 인덱스에 저장된 ㄱ밧이 전달된 매개변수 값과 다를 경우 값을 저장4.put : EEPROM의 위치(location)에 전달된 데이터(구조체)를 저장5.get : 매개변수로 전달되는 위치(location)에 저장되어 있는 데이터를 가져옴 이번 시간에는 write 와 read기능을 실습..
[복사하고 따라하는 아두이노] 아두이노 인터럽트 기능 안녕하세요 공대 박형입니다. 오늘은 아두이노 인터럽트 예제를 실습해보겠습니다. 코드부터 보시죠. const int r_led = 13; int sw = 2; void setup() { Serial.begin(9600); pinMode(sw, INPUT); pinMode(r_led, OUTPUT); attachInterrupt(0, r_led_off, RISING); // D2 의 신호가 0에서 1이될 때 r_led_off 함수 실행 } void loop() { digitalWrite(r_led, HIGH); delay(2000); digitalWrite(r_led, LOW); delay(2000); } void r_led_off() { digitalW..
[복사하고 따라하는 아두이노] 아두이노 타이머 사용하기 안녕하세요 공대 박형입니다. 오늘은 아두이노 타이머 예제를 실습해보겠습니다. 코드부터 보시죠. int led = 13; void setup() { pinMode(led, OUTPUT); } void loop() { digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000); } 이 코드에서 delay함수를 이용해 1초 동안 코드 처리를 중단시킵니다. 하지만 digitalWrite(led, HIGH);함수를처리하는시간은고려되지않았습니다. 즉 이와 같은 방법으로는 정확히 1초 간격으로 깜박이지 않고 오차가 발생합니다. 다른 방법으로 코드를 작성해보겠습니다. int led = 13;..
[복사하고 따라하는 아두이노] 아두이노 서보모터 제어 안녕하세요 공대 박형입니다. 오늘은 서보모터를 제어해보겠습니다. 코드부터 보시죠 #include Servo servo; const int servo_motor=3; int angle = 90; void setup() { Serial.begin(9600); servo.attach(servo_motor); servo.write(angle); } void loop() { servo.write(angle); Serial.print("angle = "); Serial.println(angle); delay(2000); angle += 20; if ( angle == 190) angle = 10; } 동작 영상입니다. 1초마다 각도를 20도씩 증가시키고, 각도가..
안녕하세요 공대 박형입니다. 오늘은 L293D모터 드라이버 IC를 사용하여 DC모터의 방향과 속도를 제어해보겠습니다. 코드부터 보시죠. const int enable = 11; // 속도 조정핀 const int left = 6; // 방향 조절핀 1 const int right = 5; // 방향 조절핀 2 int speed = 0; // 속도 조절 변수 int direction = 0; // 방향 조절 변수 void setup() { Serial.begin(9600); pinMode(enable,OUTPUT); pinMode(left,OUTPUT); pinMode(right,OUTPUT); Serial.println("Program start\nRight direction\n"); } void loo..
[복사하고 따라하는 아두이노] DC모터 속도 제어(feat. PWM ) 안녕하세요 공대 박형입니다. 오늘은 아두이노 DC모터를 구동시키고 PWM제어를통해 속도조절을 해보겠습니다. 코드부터 보시죠 const int dc=11; int speed = 0; void setup() { Serial.begin(9600); pinMode(dc,OUTPUT); } void loop() { analogWrite(dc,speed); Serial.print("speed = "); Serial.println(speed); speed = speed +85; // 속도를 0, 85, 170, 255, 0...순으로 if ( speed > 255 ) speed=0; // 속도가 255초과되면 0으로 변환 delay(1000); ..
안녕하세요. 공대 박형입니다. 오늘은 아두이노 초음파센서를 알아보겠습니다. 코드부터 보시죠. ( 3핀 초음파 센서 ) int distance = 0; void setup () { Serial.begin (9600); } void loop() { pinMode(9, OUTPUT); //출력 모드 digitalWrite(9, HIGH); // 초음파 송출 delay(10); digitalWrite(9, LOW); // 초음파 송출 정지 pinMode(9, INPUT); // 입력 모드 distance = 0.01723 * pulseIn(9, HIGH); // 들어온 값을 0.01723과 곱하여 거리 계산 Serial.print(distance); //계산된 거리를 cm로 출력 Serial.println(" ..
안녕하세요 공대 박형입니다. 오늘은 아두이노 pir센서를 사용해보겠습니다. 코드부터 보시죠 int g_led = 9; // 초록 led 핀 int b_led = 10; // 파란 led 핀 int r_led = 11; // 빨간 led 핀 void setup() { Serial.begin(9600); pinMode(g_led, OUTPUT); pinMode(b_led, OUTPUT); pinMode(r_led, OUTPUT); } void loop() { char data = Serial.read(); // 시리얼 값 data변수에 저장 if (data == 'g'){ digitalWrite(g_led, HIGH); // 초록 led는 키고 나머지는 off digitalWrite(b_led, LOW); ..
안녕하세요 공대 박형입니다. 오늘은 아두이노 시리얼 통신을 통해 데이터를 read 해보겠습니다. 코드부터 보시죠. int g_led = 9; // 초록 led 핀 int b_led = 10; // 파란 led 핀 int r_led = 11; // 빨간 led 핀 void setup() { Serial.begin(9600); pinMode(g_led, OUTPUT); pinMode(b_led, OUTPUT); pinMode(r_led, OUTPUT); } void loop() { char data = Serial.read(); // 시리얼 값 data변수에 저장 if (data == 'g'){ digitalWrite(g_led, HIGH); // 초록 led는 키고 나머지는 off digitalWrite(..
안녕하세요 공대 박형입니다. 오늘은 아두이노 시리얼 통신을 통해 데이터를 read 해보겠습니다. 코드부터 보시죠. void setup() { Serial.begin(9600); } void loop() { if (Serial.available()){ // 만약 시리얼 통신이 온다면 char data = Serial.read(); // 시리얼 통신 값을 문자형변수 data에 저장 Serial.println(data); // 그 값을 출력 } delay(100); } 짤과 같이 시리얼 모니터를 통해 정보를 전달하면 전달한 값을 data변수에 저장하고 시리얼 모니터에 출력합니다. 하지만 char변수는 문자는 저장 가능하지만 "mom"이나 "15"같은 문자가 하나 이상인 문자열은 한번에 출력하지 못하고 하나씩 ..
안녕하세요 공대 박형입니다. 오늘은 아두이노 가변저항 제어를 해보겠습니다. 코드부터 보시죠. void setup() { Serial.begin(9600); } void loop() { int data = analogRead(A5); // A5에 연결된 가변저항의 아날로그값을 data변수에 저장 Serial.println(data); delay(100); } 회로도입니다. 가운데 선을 아날로그핀(A5)으로 연결하고 나머지 두 핀을 전원과 그라운드에 연결하면 됩니다. 실제 가변저항은 저런 모양의 것을 많이 사용합니다. 띵커캐드로 작성한 회로도와 같이 가운데 선이 아날로그 신호선, 나머지 선을 전원과 그라운드에 각각 연결하면 됩니다. 가변저항 아날로그 값을 디지털값으로 변환하여 손잡이를 돌릴 때 data변수 ..
안녕하세요 공대 박형입니다. 오늘은아두이노 조도센서세요 공대 박형입니다. 오늘은아두이노 조도센서 제어를 해보겠습니다. 코드부터 보시죠. int cds = A0; int cds_val; void setup() { Serial.begin(9600); } void loop() { cds_val = analogRead(cds); Serial.println(cds_val); delay(100); } 회로도입니다. 아날로그 핀을통해 조도센서의 빛의 세기 값을 사용할 수 있습니다. 전원부에는 1k옴 저항을 달았습니다. 조도센서를 통해 빛의 밝기에 따라 아날로그 데이터 값을 출력하는 프로그램을 완성했습니다. 시리얼 모니터를 통해 밝기에 따라 값이 변화하는것을 확인할 수 있습니다. 빛이 강할 때는 0에 가까운 숫자를, ..
안녕하세요 공대 박형입니다. 오늘은아두이노 스위치 제어를 해보겠습니다. 코드부터 보시죠. int sw = 7; void setup() { Serial.begin(9600); pinMode(sw, INPUT); } void loop() { int value = digitalRead(sw); Serial.println(value); delay(100); } 회로도입니다. 풀다운 저항을 이용해 스위치를 눌렀을 때 HIGH(1)을 출력하여 LED를 점멸시키는 회로도입니다. 플로팅현상 제거를 위한 풀업, 풀다운 저항에 대해 자세한 설명은 아래 링크에 있습니다. engineerparkbro.tistory.com/11 스위치를 누르지 않을때는 스위치 왼쪽 라인에 LOW(0), 오른쪽 라인에 HIGH(1)이 출력됩니다..
안녕하세요 공대 박형입니다. 오늘은 PWM LED 제어를 해보겠습니다. 코드부터 보시죠. int led = 11; void setup() { Serial.begin(9600); pinMode(led, OUTPUT); } void loop() { analogWrite(led, 255); Serial.println("PWM 100%"); delay(2000); analogWrite(led, 191); Serial.println("PWM 75%"); delay(2000); analogWrite(led, 127); Serial.println("PWM 50%"); delay(2000); analogWrite(led, 63); Serial.println("PWM 25%"); delay(2000); analogWri..
안녕하세요 공대 박형입니다. 오늘은 LED 제어를 해보겠습니다. 코드부터 보시죠. void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); } 회로도입니다. 디지털 출력을 LED에 바로 인가하면 LED가 손상될 우려가 있기 때문에 약 150옴 정도의 저항을 연결합니다. 아두이노에 코드를 업로드하여 1초 간격으로 LED를 켰다 껐다를 반복하는 프로그램을 완성했습니다. 다음 시간에는 LED PWM 제어 방법에 대해 알아보겠습니다. 읽어주셔서 감사합니다.
안녕안녕하세요 공대 박형입니다. 오늘은 시리얼 통신을 통해 시리얼 모니터에 글자를 출력하는 방법에 대해 알아보겠습니다. 코드부터 보시죠. int time_sec = 0; void setup() { 1erial.begin(9600); 1Serial.println("시리얼 통신을 시작합니다. [공대 박형]"); } void loop() { 1Serial.print("아두이노가 시작된지 "); 1Serial.print(time_sec); 1Serial.println("초가 지났습니다."); time_sec++; // time_sec = time_sec + 1 수식의 간편화 delay(1000); } 아두이노 시리얼 출력을 통해 시리얼 모니터에 "시리얼 통신을 시작합니다. [공대 박형]" 를 출력했습니다. de..
안녕하세요 공대 박형입니다. 오늘은 아두이노와 pc를 연결해보겠습니다. 저는 아두이노 우노 ( UNO ) 를 준비했고 시리얼 통신을 위한 케이블선도 필요합니다. 우선 아두이노 케이블 USB단자를 PC에 연결합니다. 반대쪽 단자는 아두이노에 연결합니다. 아두이노를 실행시키고 툴 - 보드 - Arduino UNO 로 설정합니다. 다른 보드를 사용하시는 분들은 각자 환경에 맞게 설정하시면 됩니다. 다음으로 툴 - 포트 - COM4 로 설정합니다. 포트 숫자는 환경에따라 다르기 때문에 COM4가 아닌 다른 포트가 있다면 그 포트를 연결하면 됩니다. 만약 포트가 여러개라면 설정 - 장치 관리자 - 포트 탭에서 현재 연결되어있는 포트를 확인하고 아두이노에 연결한 포트를 찾아낼 수 있습니다. 어떤 포트가 아두이노와 ..
안녕하세요 공대 박형입니다. 오늘은 아두이노를 사용하기 위한 준비를 해보겠습니다. 우선 아두이노 소프트웨어를 설치하기위해 아래 주소로 접속합니다. www.arduino.cc/ Arduino - Home www.arduino.cc 주소로 접속하면 아래와 같은 화면이 보입니다. 여기서 SOFTWARE 를 접속합니다. 각자 사용하고계신 운영체제에따라 선택 옵션이 갈립니다. 저는 윈도우10을 사용하고 있으므로 Windows app을 선택했습니다. 어떤 옵션을 선택해도 이와같은 화면으로 넘어옵니다. 여기서 아두이노 IDE(통합 개발환경 소프트웨어) 개발자를 위해 기부할 수 있습니다. 기부할 의사가 있으시면 각 $달러를 선택하시고 CONTRIBUTE & DOWNLOAD를 선택하시면 됩니다. 의사가 없으시다면 JUS..