반응형

【 Leonardo #3 Visualize Temperature& Brightness Data on your PC with Leonardo

 Using the Arduino Leonardo board, you can store data from a temperature sensor and a light sensor (CDS) in real time on a PC. This data can be visualized through the Processing IDE.
Let's have fun!   

 

▶ Pre-learning :
      1. 【 Leonardo #1】 Let's collect Temperature & Brightness data to PC! ☜ (Click)

 

▶ The Goal  

1. Screen size (width x height pixels): 500 x 500)You can connect and operate the temperature sensor (Tmp36) and the light sensor (cds) circuit on the Leonardo board.

2. Background color and lines: background (180), stroke (0), strokeWeight (5), fill (255, 20)You can send data from the temperature sensor and the light sensor to the notepad.

3. Circle drawing uses ellipse (x, y, diam, diam) functionTransmitted data can be visualized with processing IDE coding.

 

▶ 실습 목표 :  
 1. [ 레오나르도 보드에 온도센서(Tmp36)와 광센서(cds) 회로를 연결하고 동작시킬 수 있다.
 2. [ 온도센서와 광센서로 부터의 데이터 값을 PC메모장을 통해 전송 시킬 수 있다.]
 3. [ 전송된 데이터를 엑셀 등을 이용해서 활용해 볼 수 있다 ]
 

 4. [ 전송된 데이터를 프로세싱 IDE 코딩을 통해 보기 좋게 비주얼화 시킬 수 있다. ] 

 

▶ Connection diagram :
  ( Click image to enlarge )

▶ 실행 결과 이미지 :

온도 밝기 센싱값 출력화면

 【Arduino Coding】  : 
/* Leonardo board Transfer temperature & brightness data to PC with Leonardo board */

#include <Keyboard.h>   
const int TEMP = 0;    // A0 port
const int CDS = 1;    // A1 port  
const int LED = 12; 
const int BUTTON = 11; 
boolean lastBtn = LOW; 
boolean currentBtn = LOW; 
boolean running = false; 
int counter = 1;

void setup ( ) {  
  pinMode(LED, OUTPUT);
  Keyboard.begin();
  Serial.begin();
}

void loop ( )  {
  currentBtn = debounce (lastBtn); 
  if (lastBtn == LOW && currentBtn == HIGH) //Click the button
  { 
     running = !running;   // Change state values backwards 
   } 
  lastBtn = currentBtn; // Update button state values
  if (running) // Writing data 
  { 
     digitalWrite(LED, HIGH); 
     // The millis () function returns the data in ms.
     // So this function is used when the delay () function is not available
   if (millis()%1000 == 0) // Execute if statement every second
   { 
      int temperature = analogRead(TEMP); 
      int  brightness = analogRead(CDS);
      float mVoltage = temperature*5000.0/1024.0; //Converted to Celsius temperature 
      float TempDotC = (mVoltage - 500) / 10.0;   //Converted to Celsius temperature
      Keyboard.print(counter);  // Data numbering before each line 
      Keyboard.print(",");
      Keyboard.print(TempDotC);  // Temperature data
      Keyboard.print(",");
      Keyboard.print(brightness);   // Brightness data
      Keyboard.print("\n");
      counter++;
    }     
  } 
  else 
  { 
    digitalWrite(LED, LOW); 
  } 
}

// Generate subfunctions to prevent button bouncing
boolean debounce (boolean last) 
{ 
  boolean current = digitalRead (BUTTON); 
  if(last != current) 
  { 
    delay(5); 
    current = digitalRead(BUTTON); 
  } 
  return current;     
}

▶ Arduino Code download : 
( The code is zip compressed.)

Eng_TMP36CDStoPC_Arduino-code.zip
0.00MB

---------------------------------------------------------------------------------

 

 【Processing Coding】  : 
/* Visualizing Temperature & Brightness Data on a PC */

PImage imgCDS;
PImage imgTemp;
PFont font;
import processing.serial.*;
Serial port;
String temp ="";
String br ="";
String data="";
int index=0;

void setup () {
  size(800, 600);
  background(255);
  port =new Serial(this, "COM21", 9600);
  port.bufferUntil('.');
  font=loadFont("Arial-Black-50.vlw"); 
  textFont(font, 200);  
}
void draw() {
  background(255,255,255);
  imgTemp = loadImage("Temp1.png");
  imgCDS = loadImage("cds1.png");
  image(imgTemp, 0, 0);
  image(imgCDS, 450, 10, 250,250);    

  fill(150, 150, 10);
//  textSize(80);
  text(temp, 70, 500);
  fill(50, 0, 200);
  text(br, 450, 500);
}
void serialEvent(Serial port) {
  data=port.readStringUntil('.');
  data=data.substring(0, data.length()-1);
  index=data.indexOf(",");
  temp=data.substring(0, index);
  br=data.substring(index+1,data.length());
}

 

▶ Download Processing code :
( The code is zip compressed.)

imageTempCDS (Ras).zip
4.87MB

 

▶ Making Processing Font
(In order to use the window font on the processing output screen, it is necessary to convert the bitmap font into a usable bitmap font in the following process)

[Tools menu  》 "Create font"  》 Select font (size)  》 "Click OK"  》 Copy file name  》 "Paste into processing code]

 

▶ Video lecture :  
(Look in full screen view)

(youTube)

https://youtu.be/1E1DgOqXY2o

 

 

Troubleshooting :  
 If you get the following error when running a sketch in the Arduino IDE: 

 

If the above error appears, you need to confirm that you have selected the board as a Leonardo board from the board menu under Tools menu in the Arduino sketch. If the board selection is not selected by Leonardo, it will not be able to run even if it is compiled, and this will cause a 'Keyboard' error.

 

 

반응형
반응형

【 Leonardo #1 Let's collect Temperature & Brightness value to PC!

Welcome to RasINO~!   
In this chapter, we will learn how to use Arduino Leonardo board.    Let's go~!

▶ The Goal : 
 1. You can see how to use the Leonardo board.
 2. You can transfer the data from the temperature sensor & optical sensor (CDS) to the PC.
 3. You can make your data into Excel charts or use them in a variety of ways.

▶ Connection diagram :
  ( Click image to enlarge )

 

▶ Coding and annotation : 
/* Leonardo board Transfer temperature & brightness data to PC with Leonardo board */

#include <Keyboard.h>   
const int TEMP = 0;    // A0 port 
const int CDS = 1;    // A1 port  
const int LED = 12; 
const int BUTTON = 11; 
boolean lastBtn = LOW; 
boolean currentBtn = LOW; 
boolean running = false; 
int counter = 1;

void setup ( ) {  
  pinMode(LED, OUTPUT);
  Keyboard.begin();
}

void loop ( )  {
  currentBtn = debounce (lastBtn); 
  if (lastBtn == LOW && currentBtn == HIGH) // Click the button
  { 
     running = !running;   // Change state values backwards
   } 
  lastBtn = currentBtn; // Update button state values 
  if (running) // Writing data
  { 
     digitalWrite(LED, HIGH); 
     // The 'millis()' function returns the data in ms. 
     // So this function is used when the 'delay()' function is not available 
   if (millis()%1000 == 0) // Execute if statement every second
   { 
      int temperature = analogRead(TEMP); 
      int  brightness = analogRead(CDS);
      float mVoltage = temperature*5000.0/1024.0; // Converted to Celsius temperature 
      float TempDotC = (mVoltage - 500) / 10.0;   // Converted to Celsius temperature 
      Keyboard.print(counter);  // Data numbering before each line 
      Keyboard.print(",");
      Keyboard.print(TempDotC);  // Temperature data
      Keyboard.print(",");
      Keyboard.print(brightness);   // Brightness data
      Keyboard.print("\n");
      counter++;
    }     
  } 
  else 
  { 
    digitalWrite(LED, LOW); 
  } 
}

// Generate subfunctions to prevent button bouncing 
boolean debounce (boolean last) 
{ 
  boolean current = digitalRead (BUTTON); 
  if(last != current) 
  { 
    delay(5); 
    current = digitalRead(BUTTON); 
  } 
  return current;     
}

▶ Code download : 
( The code is zip compressed.)

Eng_TMP36_CDS_to_PC.zip
0.00MB

 

▶ Video lecture :  
(Look in full screen view)

 

(You can watch it on YouTube.)
https://youtu.be/K-Dc5MqBYaI

 

반응형
반응형

【 아두이노 센서#29】 터치 LED센서( Heltec) Sensor 다루기 


 오늘은 Heltec 의 터치( Touch) LED 센서를 다루어 보고자 한다. 지난시간  터치 센서인 TTP223B를 다루어 보았는데, 이것과의 차이점은 터치 하였을 때 터치판 자체가 LED 불 빛을 내준다는 것이다. 미관적으로 좋고, 제품인테리어를 고려한 부품으로 사용해도 좋을 것이다. 


▶ 선수 학습 :

 없음. 

▶ IR 센서 사양 및 동작 특성




▶ 실습 목표 :  

1. 터치 LED 센서의 기본 작동 방식에 대해 이해하고 스위치 기능으로 사용 할 수 있다.

2. 터치 되었을 때 센서의 출력값을 LED 혹은 멀티테스터 등으로 확인 할 수 있다. 


▶ 실습 회로도면 :
  (이미지 클릭하면 확대 가능)

▶ 실습 절차  : 


1.    위 회로 연결도를 참고하여 부품들을 연결한다
2.    터치 LED 센서만 연결하여 터치 되었을 때, 센서의 출력 값을 멀티 테스터기로 확인 해본다. . 
3.    LED를 별도로 넣어 LED센서가 터치되었을 때 출력을 LED로 확인 해본다. (센서의 출력 값 3.3v 를 이용한 LED 점등) 

▶ 프로그램 코드 및 설명 : 

/* 터치 LED 센서의 동작확인은 별다른 코드 없이  확인 가능하다.     */

▶ 실행영상 :  

(전체화면 보기로 보세요)


1. 블루 불빛 LED 터치 센서의 터치시 출력 전압값을 멀티테스터 측정기로 확인.



2. 레드 불빛 LED 터치 센서의 터치 동작 확인 .



▶ 아두이노 파일다운 :

없음. 




반응형
반응형

【 아두이노 센서#28】 터치 센서( TTP223B) Touch Sensor 다루기 #2


 지난 시간에 이어 터치( Touch) 센서인 TTP223B를 다루어 보려고 한다. 이 터치 모듈은 정전식(사람의 몸에서 발생하는 작은 전기를 이용) 으로서 , 터치 되었을 때 칩 LED가 켜져 터치 되었다는 것을 알려주는 등 아주 사용하기 편하고 쉽다. 이번에는 LED를 13번포트에 직결하고 시리얼 플로터를 통해 터치가 되는지를 간단히 실험해보려 한다. 


▶ 선수 학습 :

 1. (센서)#27 터치센서다루기 #1 (TTP223B 터치센서 이해1 강좌보기클릭


▶ IR 센서 사양 및 동작 특성

▶ 실습 목표 :  

1. 터치 센서의 기본 작동 방식에 대해 이해하고 스위치 기능으로 사용 할 수 있다.

2. 터치 되었을 때 센서로 부터 얻은 값을 시리얼 모니터 혹은 시리얼 플로터 창을 통해 확인 할 수 있다. 

3. LED를 연결하거나 다른 출력으로 사용하여 기기를 작동시킬 수 있음을 이해한다.


▶ 실습 회로도면 :
  (이미지 클릭하면 확대 가능)

▶ 실습 절차  : 


1.    위 회로 연결도를 참고하여 부품들을 연결한다
2.    시리얼 모니터 창을 열어 터치 유무에 따른 출력 값을 확인 한다. 
3.    시리얼 플로터 창을 열어 터치 유무에 따른 출력 그래프를 확인 한다.
4. LED를 13번포트(LED+단자) 와 인접한 GND(LED-단자)에 바로 직결 연결한다(LED 연결에는 기본적으로 저항을 연결하여야 하나, 이와 같은 회로에서는 아두이노는 충분히 보호된다)

▶ 프로그램 코드 및 설명 : 

/* 터치 센서 (Touch sensor) 사용하기 프로그램       */
/*  by RASIno , http://rasino.tistory.com  */


#define Touch 7  // 터치센서의 핀 정의


void setup( ) {

  Serial.begin(9600);

  pinMode(Touch, INPUT);

  pinMode(13, OUTPUT);  

}


void loop( ) {

  int a = digitalRead(Touch);

  if (a == HIGH) {   digitalWrite(13, HIGH);

    Serial.println(a);    

    delay(1);       // 최소한의 delay 값을 주도록 한다.

    }  else  {  

         digitalWrite(13, LOW);

         Serial.println(a);      

  }

}


▶ 실행영상 :  

(전체화면 보기로 보세요)




▶ 아두이노 파일다운 :

TouchSensorLED.ino





반응형
반응형

【 아두이노 센서#27】 터치 센서( TTP223B) Touch Sensor 다루기 #1

 오늘은 터치( Touch) 센서인 TTP223B를 다루어 보려고 한다. 이 터치 모듈은 정전식(사람의 몸에서 발생하는 작은 전기를 이용) 으로서 , 터치 되었을 때 칩 LED가 켜져 터치 되었다는 것을 알려주는 등 아주 사용하기 편하고 쉽다. 


▶ 선수 학습 :

 없음. 

▶ IR 센서 사양 및 동작 특성

▶ 실습 목표 :  

1. 터치 센서의 기본 작동 방식에 대해 이해하고 스위치 기능으로 사용 할 수 있다.

2. 터치 되었을 때 센서로 부터 얻은 값을 시리얼 모니터 혹은 시리얼 플로터 창을 통해 확인 할 수 있다. 


▶ 실습 회로도면 :
  (이미지 클릭하면 확대 가능)

▶ 실습 절차  : 


1.    위 회로 연결도를 참고하여 부품들을 연결한다
2.    시리얼 모니터 창을 열어 터치 유무에 따른 출력 값을 확인 한다. 
3.    시리얼 플로터 창을 열어 터치 유무에 따른 출력 그래프를 확인 한다.

▶ 프로그램 코드 및 설명 : 

/* 터치 센서 (Touch sensor) 사용하기 프로그램       */
/*  by RASIno , http://rasino.tistory.com  */


#define Touch 9  // 터치센서의 핀 정의


void setup( ) {

  Serial.begin(9600);

  pinMode(Touch, INPUT);

}


void loop( ) {

  int a = digitalRead(Touch);

  Serial.println(a);

  delay(1);   // 최소한의 delay 값을 주도록 한다.

}


▶ 실행영상 :  

(전체화면 보기로 보세요)



▶ 아두이노 파일다운 :

TouchSensor.ino




반응형
반응형

 【 아두이노 센서#5】 TMP36 온도센서 #3 with LCD 




 지난 시간 TMP36 온도센서를 가지고 온도값을 시리얼 모니터로 확인하는 실습을 진행하였다. (바로가기 ☞ TMP36 온도센서 시리얼모니터 편)

이번 시간에는 지난시간에 이어서 센싱되는 온도값을 LCD 디스플레이 화면으로 출력해보는 실습을 진행 하려고 한다. 


▶ 실험에 사용되는 온도센서 자료 ( TMP36 ) 


아래는 온도 값과 출력전압과의 상관관계를 나타낸 그래프이다.

예를 들어 TMP36센서는 주변 온도가 50도씨 일때 출력단자로 1.0V의 전압값을 출력한다는 뜻이다.


 그래프특성을 살펴보고 자신이 사용하고자 하는 환경에 맞는 센서를 사용하면 되며,  통상적으로 활용 온도 범위가 넓은 TMP36센서를 많이 사용한다. 


[ 실습에 사용될 RGB LED(3색LED) 구조 및 사양 ]


RGB LED 는 그림에서 보듯 3가지 색 LED가 한 몸체에 구성되어 있다고 이해하면 쉽다.

다만, 단자하나는 공통단자로 연결되어 있고, LED의 마이너스(-) 극이 공통단자로 되면 Common 케소드(음극),    플러스(+)극이 공통단자로 되면 Common 애노드(양극)이 된다. (통상적으로 부품의 다리 길이가 제일 긴 단자가 공통단자다)


따라서 부품을 사용하기전에 자신의 부품이 컴온 캐소드 타입인지? , 컴온 애노드 타입인지?  반드시 확인해야 하며, 단자의 색상 위치도 그림과 순서가 다를 수 있으니 멀티테스터기 혹은? 3V 정도의 낮은 전원을 가하여 색의 위치를 사전에 확인하면 좋을 것이다. 



▶ 실습 목표 :  


1. 온도 범위에 따라 LED의 색을 다르게 표시하라. 

[예, 수치 값이 165 이하는 블루색, 165~175는 그린색,  그 이상은 레드색]

2. 온도(섭씨) 값을 LCD 화면으로 출력하라.


▶ 실습 회로도면 :

  (이미지 클릭하면 확대 가능)






※ LCD 부분 연결은 위 회로도를 보며 연결하도록 한다.


▶ 실습 절차  : 

1. 안정적으로 사용하기 위해서는 LED 공통단자에 220Ω정도의 저항을 
 달아 준다.

2.LED 3개를 사용 하여 회로를 구성하여도 무방하며이때에도 각각 
 저항을 연결해주는 것이 좋다.

3.실습에 사용되는 LCD는 16열 2행(16by2)LCD로서 기본적으로 가장 
 많이 사용되던 형태이다. 16핀 중에서 주요 제어 라인을 아두이노
 포트로 직접 제어를 하는 형태이다.

4. 만약, LCD로 출력이 잘 되지 않을 경우 먼저 시리얼모니터로 
 데이터 출력을 점검해보고 이상이 없다면 LCD 연결라인이나 LCD관련 프로그램 부분을 살펴보면 좋을 것이다. (다음 실습에서 사용하기 편리한 I2C 타입의 LCD를 다루어 볼 것이다)   




▶ 프로그램 코드 및 설명 : 


#include <LiquidCrystal.h>            // LCD를 사용하기 위한 헤더파일

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);    // LCD 핀 설정

const int RLED=9;    // 빨간색 LED 상수형변수에 아두이노 9번 핀 할당

const int GLED=10; // 녹색 LED 상수형변수에 아두이노 10핀 할당

const int BLED=11; //파란색 LED 상수형변수에 아두이노 11핀 할당

const int TEMP=0;     // 아날로그 입력 0(A0) 핀 선

const int LOWER_BOUND=162;      // 온도 하한 값을 정의 함

const int UPPER_BOUND=168;       // 온도 상한 값을 정의 함

int val=0;                      // 온도 센서의 현재 값을 저장하는 변수 선언

byte SpecialChar1[8] = { B00010,  B00101B00101, B00010,

 B00000B00000B00000B00000   };

void setup() {

  Serial.begin(9600);

  pinMode(RLED, OUTPUT);        // RLED를 출력으로 지정

  pinMode(GLED, OUTPUT);        // GLED를 출력으로 지정

  pinMode(BLED, OUTPUT);        // BLED를 출력으로 지정

  Serial.begin(9600);

  pinMode(RLED, OUTPUT);        // RLED를 출력으로 지정

  pinMode(GLED, OUTPUT);        // GLED를 출력으로 지정

  pinMode(BLED, OUTPUT);        // BLED를 출력으로 지정

  lcd.begin(16,2);

  lcd.clear();

  lcd.createChar(1,SpecialChar1);     

}

void loop()    {

  val=analogRead(TEMP); 

  Serial.println(val);

  float mVoltage = val*5000.0/1024.0;

  float TempDotC = (mVoltage - 500) / 10.0;

  Serial.print(TempDotC);     Serial.println("℃\n");

  lcd.setCursor(0,0); 

  lcd.print("Tmp36 Sensor !");

  lcd.setCursor(0,1);

  lcd.print("Temp:");

  lcd.print(TempDotC);

  lcd.write(1);      

  lcd.print("C"); 

  delay(500);

  if(val < LOWER_BOUND) {       // 경계 값 비교     

    digitalWrite(RLED,HIGH);

    digitalWrite(GLED,HIGH);

    digitalWrite(BLED, HIGH);   } //  켜려고 하는 LEDHIGH 값 지정

  else if (val>UPPER_BOUND) {//상위 경계선값 이상이면 Red LED ON

    digitalWrite(RLED,HIGH);

    digitalWrite(GLED, LOW); 

    digitalWrite(BLED, LOW);    }

else {  // 경계선 사이 값이라면 Green LED On

    digitalWrite(RLED, LOW);

    digitalWrite(GLED, HIGH);  

    digitalWrite(BLED, LOW);    }    

}   


1.TMP 36 온도 센서를 이용해서 온도값에 따른 RGB LED의 색을 
 다르게출력 해보는 실습이다.
2.Common Anode 타입의 RGB LED는 공통단자를 V+ 연결 하기 
 때문에 LED를 On 하기 위해서는 입력단자 LOW신호가 들어가야 한다.

3.온도 변화에 따른 LED 색을 다르게 표시하기 위해  TMP36의 출력 
 값을 측정하여 경계값을 설정한다
  예165  이하면  블루 LED ON’     
  175 
값 이상이면  레드 LED ON’ 
  165~175 
사이 값이면  그린 LED ON’

4. 정상 동작이 되면 온도 변환 공식을 이용하여 섭씨온도로 
변환하여 시리얼 모니터를 통해 화면에 표시하는 프로그램을 다음 
과제로 진행해 본다.


※위의 섭씨온도식에서 






▶ 실행 결과 :

 (영상은 고화질로 설정하고 전체화면으로 보세요)





반응형
반응형

 【 아두이노 센서#4】 TMP36 온도센서 #2





▶ 실험에 사용되는 온도센서 자료 ( TMP36 ) 


아래는 온도 값과 출력전압과의 상관관계를 나타낸 그래프이다.

예를 들어 TMP36센서는 주변 온도가 50도씨 일때 출력단자로 1.0V의 전압값을 출력한다는 뜻이다.


 그래프특성을 살펴보고 자신이 사용하고자 하는 환경에 맞는 센서를 사용하면 되며,  통상적으로 활용 온도 범위가 넓은 TMP36센서를 많이 사용한다. 


[ 실습에 사용될 RGB LED(3색LED) 구조 및 사양 ]


RGB LED 는 그림에서 보듯 3가지 색 LED가 한 몸체에 구성되어 있다고 이해하면 쉽다.

다만, 단자하나는 공통단자로 연결되어 있고, LED의 마이너스(-) 극이 공통단자로 되면 Common 케소드(음극),    플러스(+)극이 공통단자로 되면 Common 애노드(양극)이 된다. (통상적으로 부품의 다리 길이가 제일 긴 단자가 공통단자다)


따라서 부품을 사용하기전에 자신의 부품이 컴온 캐소드 타입인지? , 컴온 애노드 타입인지?  반드시 확인해야 하며, 단자의 색상 위치도 그림과 순서가 다를 수 있으니 멀티테스터기 혹은? 3V 정도의 낮은 전원을 가하여 색의 위치를 사전에 확인하면 좋을 것이다. 



▶ 실습 목표 :  


 온도 범위에 따라 LED의 색을 다르게 표시하라. 

[예, 수치 값이 165 이하는 블루색, 165~175는 그린색,  그 이상은 레드색]


▶ 실습 회로도면 :

  (이미지 클릭하면 확대 가능)





▶ 실습 절차  : 

1. 안정적으로 사용하기 위해서는 LED 공통단자에 220Ω정도의 저항을 
 달아 준다.

2.LED 3개를 사용 하여 회로를 구성하여도 무방하며이때에도 각각 
 저항을 연결해주는 것이 좋다.




▶ 프로그램 코드 및 설명 : 


const int RLED=9;            //9번 핀을 사용하는 빨간색 BLED 상수정의

const int GLED=10;         //10번 핀을 사용하는 초록색 GLED 상수정의

const int BLED=11;         //11번 핀을 사용하는 파란색 RLED 상수 정의

const int TEMP=0;                        //아날로그 입력 0번 핀을 상수 정의

const int LOWER_BOUND=165;      // 온도 하한 값을 정의 함

const int UPPER_BOUND=175;       // 온도 상한 값을 정의 함

int val=0;                          // 온도 센서의 현재 값을 저장하는 val 변수 선언

void setup() {

  pinMode(RLED, OUTPUT);       // RLED를 출력으로 지정

  pinMode(GLED, OUTPUT);       // GLED를 출력으로 지정

  pinMode(BLED, OUTPUT);      // BLED를 출력으로 지정

}

void loop() {                        // 공통단자가 '-'인 RGB LED 부품 사용

  val=analogRead(TEMP); 

  Serial.println(val);

  float mVoltage = val*5000.0/1024.0;     // 센서의 출력값을 전압값으로 변환

  float TempDotC = (mVoltage - 500) / 10.0;  // 전압값을 Tmp36식에 의해 섭씨온도로변환

  Serial.print(TempDotC);

  Serial.println("℃\n");

  delay(500);

  if(val < LOWER_BOUND)   {         // 아래쪽 경계 값 보다 작다면

    digitalWrite(RLED,HIGH);

    digitalWrite(GLED,HIGH);      val=analogRead(TEMP);     // 하위 경계선 값 이하이면 Blue LED ON

  if(val < LOWER_BOUND)   {

    digitalWrite(RLED, LOW);

    digitalWrite(GLED, LOW);

    digitalWrite(BLED, HIGH);      //  켜려고 하는 LED HIGH 값 지정

  }

  else if (val>UPPER_BOUND) {//상위 경계선값 이상이면 Red LED ON

    digitalWrite(RLED,HIGH);

    digitalWrite(GLED, LOW); 

    digitalWrite(BLED, LOW);    

  }

  else {                                               // 경계선 사이 값이라면 Green LED On

    digitalWrite(RLED, LOW);

    digitalWrite(GLED, HIGH);  

    digitalWrite(BLED, LOW);    

  }

}   


1.TMP 36 온도 센서를 이용해서 온도값에 따른 RGB LED의 색을 
 다르게출력 해보는 실습이다.
2.Common Anode 타입의 RGB LED는 공통단자를 V+ 연결 하기 
 때문에 LED를 On 하기 위해서는 입력단자 LOW신호가 들어가야 한다.

3.온도 변화에 따른 LED 색을 다르게 표시하기 위해  TMP36의 출력 
 값을 측정하여 경계값을 설정한다
  예165  이하면  블루 LED ON’     
  175 
값 이상이면  레드 LED ON’ 
  165~175 
사이 값이면  그린 LED ON’

4. 정상 동작이 되면 온도 변환 공식을 이용하여 섭씨온도로 변환하여 
 시리얼 모니터를 통해 화면에 표시하는 프로그램을 다음 과제로 진행해
 본다.


※위의 섭씨온도식에서 




▶ 실행 결과 :

 (영상은 고화질로 설정하고 전체화면으로 보세요)





반응형
반응형

 【 아두이노 센서#3】 TMP36 온도센서 #1




▶ 실험에 사용되는 온도센서 자료 ( TMP36 ) 


아래는 온도 값과 출력전압과의 상관관계를 나타낸 그래프이다.

예를 들어 TMP36센서는 주변 온도가 50도씨 일때 출력단자로 1.0V의 전압값을 출력한다는 뜻이다.


 그래프특성을 살펴보고 자신이 사용하고자 하는 환경에 맞는 센서를 사용하면 되며,  통상적으로 활용 온도 범위가 넓은 TMP36센서를 많이 사용한다. 


[ 실습에 사용될 RGB LED(3색LED) 구조 및 사양 ]


RGB LED 는 그림에서 보듯 3가지 색 LED가 한 몸체에 구성되어 있다고 이해하면 쉽다.

다만, 단자하나는 공통단자로 연결되어 있고, LED의 마이너스(-) 극이 공통단자로 되면 Common 케소드(음극),    플러스(+)극이 공통단자로 되면 Common 애노드(양극)이 된다. (통상적으로 부품의 다리 길이가 제일 긴 단자가 공통단자다)


따라서 부품을 사용하기전에 자신의 부품이 컴온 캐소드 타입인지? , 컴온 애노드 타입인지?  반드시 확인해야 하며, 단자의 색상 위치도 그림과 순서가 다를 수 있으니 멀티테스터기 혹은? 3V 정도의 낮은 전원을 가하여 색의 위치를 사전에 확인하면 좋을 것이다. 



▶ 실습 목표 :  


 온도 범위에 따라 LED의 색을 다르게 표시하라. 

[예, 수치 값이 165 이하는 블루색, 165~175는 그린색,  그 이상은 레드색]


▶ 실습 회로도면 :

  (이미지 클릭하면 확대 가능)






▶ 실습 절차  : 

1. 안정적으로 사용하기 위해서는 LED 공통단자에 220Ω정도의 저항을 
 달아 준다.

2.LED 3개를 사용 하여 회로를 구성하여도 무방하며, 이때에도 각각 
 저항을 연결해주는 것이 좋다.



▶ 프로그램 코드 및 설명 : 


const int RLED=9;            //9번 핀을 사용하는 빨간색 BLED 상수정의

const int GLED=10;         //10번 핀을 사용하는 초록색 GLED 상수정의

const int BLED=11;         //11번 핀을 사용하는 파란색 RLED 상수 정의

const int TEMP=0;                        //아날로그 입력 0번 핀을 상수 정의

const int LOWER_BOUND=165;      // 온도 하한 값을 정의 함

const int UPPER_BOUND=175;       // 온도 상한 값을 정의 함

int val=0;                          // 온도 센서의 현재 값을 저장하는 val 변수 선언


void setup() {

  pinMode(RLED, OUTPUT);       // RLED를 출력으로 지정

  pinMode(GLED, OUTPUT);       // GLED를 출력으로 지정

  pinMode(BLED, OUTPUT);      // BLED를 출력으로 지정

}


void loop() {                        // 공통단자가 '-'RGB LED 부품 사용

  val=analogRead(TEMP);     // 하위 경계선 값 이하이면 Blue LED ON

  if(val < LOWER_BOUND)   {

    digitalWrite(RLED, LOW);

    digitalWrite(GLED, LOW);

    digitalWrite(BLED, HIGH);      //  켜려고 하는 LEDHIGH 값 지정

  }

  else if (val>UPPER_BOUND) {//상위 경계선값 이상이면 Red LED ON

    digitalWrite(RLED,HIGH);

    digitalWrite(GLED, LOW); 

    digitalWrite(BLED, LOW);    

  }

  else {                                               // 경계선 사이 값이라면 Green LED On

    digitalWrite(RLED, LOW);

    digitalWrite(GLED, HIGH);  

    digitalWrite(BLED, LOW);    

  }

}   


1.TMP 36 온도 센서를 이용해서 온도값에 따른 RGB LED의 색을 
 다르게출력 해보는 실습이다.
2.Common Anode 타입의 RGB LED는 공통단자를 V+ 연결 하기 
 때문에 LEDOn 하기 위해서는 입력단자 LOW신호가 들어가야 한다.

3.온도 변화에 따른 LED 색을 다르게 표시하기 위해  TMP36의 출력 
 값을 측정하여 경계값을 설정한다
  예) 165 이하면  블루 LED ON’    
  175
값 이상이면  레드 LED ON
  165~175
사이 값이면  그린 LED ON’

4. 정상 동작이 되면 온도 변환 공식을 이용하여 섭씨온도로 변환하여 
 시리얼 모니터를 통해 화면에 표시하는 프로그램을 다음 과제로 진행해
 본다.



▶ 실행 영상 :

 (영상은 고화질로 설정하고 전체화면으로 보세요)




반응형
반응형

 【 아두이노 센서#2 】 적외선(근접)센서 TCRT5000 #2





▶ 실험에 사용되는 적외선 센서 자료 ( TCRT5000) 




 TCRT 5000은 적외선 방식이어서 적외선 센서로 불리지만, 가깝고 짧은 거리에 사용되기 때문에 근접센서라고 불리우기도 한다.


[ TCRT5000 모듈의 내부 회로도 참고 ]


▶ 근접센서 동작 원리 



 주로 라인트레이서 등에 활용하기 좋은 TCRT 센서 이기 때문에 센서의 방향이 위의 이미지에서 처럼 아래로 향하게 된다. 

 적외선 신호는 색이 밝을 수록(흰색) 반사되는 성질이 있으며, 

 색이 어두울 수록(흑색) 반사되지 않는(흡수) 성질이 있다.

 사람은 가시광선의 신호만 눈으로 확인 가능하기 때문에, 가시광선 영역밖인, 

 적외선 신호 등은 사람의 눈으로 확인이 불가하다.  하지만, 카메라 렌즈는 이를 식별하기 때문에 휴대폰 카메라도 동작이 될 때 카메라 렌즈를 통해서 보면 붉으스름한 빛이 나는 것을 확인 할 수 있다.   다만, 최근의 휴대폰들은 사진 찍을 때 나타나는 적목현상(사진속 눈에 붉은점이 나타나는 현상) 제거를 위해 적외선 신호 제거 기능이 있어서 확인이 되지 않는다.


▶ 실습 목표 :  

 적외선 신호가 감지(반사)되면  AO 단자의 아날로그 출력 값을 시리얼 모니터 창을 통해 확인해 볼 수 있다. 


▶ 실습 회로도면 :

  (이미지 클릭하면 확대 가능)








▶ 실습 절차  : 

1. 센서의 VCCGND 단자를 아두이노의 VCCGND 단자에 각각 연결 한다


2. 센서에 물체가 감지 되면 AO핀으로 아날로그 값(전압레벨)이 출력된다. 이 출력 값을 아두이노의 A0포트로 읽어 시리얼 모니터로 확인하면 된다


3. 출력값을 그대로 포트로 읽어 들이기 때문에 별다른 프로그램 없이 바로 

   동작이 된다



▶ 실행 영상 :

 (영상은 고화질로 설정하고 전체화면으로 보세요)











반응형
반응형

 【 아두이노 센서#1】  아두이노 센서 활용편

  이제 아두이노 기초부분은 지난번 아두이노 기초 격인, 37개의 강좌를 통해서 학습이 되었을 것이다. (혹시 아두이노 기초부문 학습이 필요하다면 여기 아두이노 기초강좌 부분을 먼저 살펴보면 좋을 것이다.  [ ☞ 아두이노 기초 강좌편 ] )


 이번 시간 부터는 본격적으로 센서를 가지고 아두이노를 활용해보려고 한다. 센세를 다룰 수 있게 되면 실생활에 바로 응용 가능한 작품들을 만들 수 있기 때문에  한 층 더 재미있게 학습할 수 있을 것이다. 


 앞으로 다룰 주요 센서 목록중에서 첫 시간으로 1. 적외선 센서를 다루어 보고자 한다.



 #1 적외선 센서( TCRT5000 ) 


▶ 실험에 사용되는 적외선 센서 자료 ( TCRT5000) 



 TCRT 5000은 적외선 방식이어서 적외선 센서로 불리지만, 가깝고 짧은 거리에 사용되기 때문에 근접센서라고 불리우기도 한다.


[ TCRT5000 모듈의 내부 회로도 참고 ]


▶ 근접센서 동작 원리 



 주로 라인트레이서 등에 활용하기 좋은 TCRT 센서 이기 때문에 센서의 방향이 위의 이미지에서 처럼 아래로 향하게 된다. 

 적외선 신호는 색이 밝을 수록(흰색) 반사되는 성질이 있으며, 

 색이 어두울 수록(흑색) 반사되지 않는(흡수) 성질이 있다.

 사람은 가시광선의 신호만 눈으로 확인 가능하기 때문에, 가시광선 영역밖인, 

 적외선 신호 등은 사람의 눈으로 확인이 불가하다.  하지만, 카메라 렌즈는 이를 식별하기 때문에 휴대폰 카메라도 동작이 될 때 카메라 렌즈를 통해서 보면 붉으스름한 빛이 나는 것을 확인 할 수 있다.   다만, 최근의 휴대폰들은 사진 찍을 때 나타나는 적목현상(사진속 눈에 붉은점이 나타나는 현상) 제거를 위해 적외선 신호 제거 기능이 있어서 확인이 되지 않는다.


▶ 실습 목표 :  

 적외선 신호가 감지(반사)되면(DO 핀이 VCC(5V) → GND로 변화됨) 

LED를 켜는 실험을 해보자. 


▶ 실습 회로도면 :

  (이미지 클릭하면 확대 가능)







▶ 실습 절차  : 

1. LED ‘+단자VCC 전원으로 연결하고 ‘–단자를 센서의 Do   (Digital Out) 단자에 연결한다.

2. 센서에 물체가 감지 되면 Do핀이 0V(GND)가 되고, 감지 LEDOn 
 된다. 물체가 감지 되지 않으면 VCC가 출력된다.

3. , 별다른 프로그램 없이 아두이노 전원 만을 이용하여 LED를 작동
 시킬 수 있는 회로이다.



▶ 실행 영상 : 









반응형