7-세그먼트(SR-1056A) 사용하기

세그먼트 사용법을 알아보고자 한다. 먼저 사용되는 세그먼트는 SR-1056A로 다른 세그먼트와 핀이 다를 수도 있다. 세그먼트에 관한 정보는 링크를 통해서 확인하기 바란다.


출처 링크


회로 구성



프로그램 코드

byte seven_seg_digits[10][7] = { 
  { 0,0,0,0,0,0,1 },  // = 0
  { 1,0,0,1,1,1,1 },  // = 1
  { 0,0,1,0,0,1,0 },  // = 2
  { 0,0,0,0,1,1,0 },  // = 3
  { 1,0,0,1,1,0,0 },  // = 4
  { 0,1,0,0,1,0,0 },  // = 5
  { 0,1,0,0,0,0,0 },  // = 6
  { 0,0,0,1,1,1,1 },  // = 7
  { 0,0,0,0,0,0,0 },  // = 8
  { 0,0,0,1,1,0,0 }   // = 9
 };

void setup() {
  int pinNum = 2;
  // segment init
  for(pinNum = 2; pinNum < 10; pinNum++) {
    pinMode(pinNum, OUTPUT);
  }
  writeDot(0); // start with the "dot" off
}

void writeDot(byte dot) {
  digitalWrite(9, dot);
}

void sevenSegWrite(byte digit) {
  byte pin = 2;
  for (byte segCount = 0; segCount < 7; ++segCount) {
    digitalWrite(pin, seven_seg_digits[digit][segCount]);
    ++pin;
  }
}

void loop() {
  for (byte count = 10; count > 0; --count) {
    delay(1000);
    sevenSegWrite(count - 1);
  }
  delay(4000);
}


실험결과

0부터 1까지 카운트하는 코드로, 아주 잘 출력되었다. 2자리 숫자를 표현하려고했는데 핀에 꼽을 선이 너무많아 다른 방법을 찾아보아야겠다.


"본 제품은 아이씨뱅큐 무상체험단 21기 활동의 일환으로 체험 제품을 제공받아 작성되었습니다."

아두이노에서 날짜, 시간 출력하기.

먼저 아두이노에서 링크를 통해 Time 라이브러리는 받는다. 압축을 해제하고 각 폴더들을 아두이노 라이브러리폴더안에 넣는다. (그냥 압축 풀고 통째로 넣으면 헤더파일을 읽어오지 못한다.)



다운로드 주소
http://playground.arduino.cc/Code/Time
아두이노 라이브러리 경로
C:\Program Files (x86)\Arduino\libraries 혹은
C:\Users\사용자명\Documents\Arduino\libraries

라이브러리를 사용하는 2가지 방법이 있다. 먼저 아두이노 설치경로안에 libraries 폴더 안에 넣거나, Documents 폴더내의 아두이노 폴더에 넣는 방법이다. 다른 점은 크게 없고, 어떻게 화면에 나누어지는가의 차이인 것 같다. 아래 사진은 Documents 폴더 내의 아두이노 라이브러리에 넣은 화면이다.(초록색)


실행하기

코드는 라이브러리 설치 후에 '파일 > 예제'에 있는 TimeRTC 코드를 조금 수정한 것으로, RTC(Real Time Clock)칩에 저장된 값을 불러와서 출력한다.

#include <Time.h>  
#include <Wire.h>  
#include <DS1307RTC.h> 

void setup()  {
  Serial.begin(9600);
  setSyncProvider(RTC.get);  
  setTime(17,39,0,24,2,15);
  if(timeStatus()!= timeSet) 
     Serial.println("Unable to sync with the RTC");
  else
     Serial.println("RTC has set the system time");      
}

void loop()
{
   digitalClockDisplay();  
   delay(1000);
}

void digitalClockDisplay(){
  Serial.print(hour());
  printDigits(minute());
  printDigits(second());
  Serial.print(" ");
  Serial.print(day());
  Serial.print(" ");
  Serial.print(month());
  Serial.print(" ");
  Serial.print(year()); 
  Serial.println(); 
}

void printDigits(int digits){
  Serial.print(":");
  if(digits < 10)
    Serial.print('0');
  Serial.print(digits);
}
시간 설정
setTime(hr, min, sec, day, month, year);
예 : setTime(17,39,0,24,2,15); // 2015.2.24 17:39:00

업로드하고 난 뒤에, 시리얼 모니터를 확인하면 다음과 같은 화면을 보여준다.



관련 문제점

에러 : 'BYTE' was not declared in this scope

에러 : must be const in order to be put into read-only section by means of '__attribute__((progmem))'


결론

먼저 실행하기 전에 컴파일단계에서 에러때문에 꽤나 답답하였다. 위 코드에서 문제점은 현재시각을 출력하지 않는다는 점이다. 앞으로 컴퓨터나 핸드폰의 시간을 받아와서 출력하도록 해봐야겠다. 혹은 인터넷의 시간을 가져오는 방법도 찾아봐야겠다.


참고사이트 링크링크, 링크


문제점

Time.h 을 사용하려는데 발생하는 에러.


해결방안

Time 라이브러리가 있는 디렉토리에서 DateStrings.cpp 파일에서 PROGMEM을 모두 지우고 실행하였더니 에러가 발생하지않았다. 아래 파일은 PROGMEM을 지운 파일이다.

DateStrings.cpp


문제점

아래 코드에서 발생하는 에러

  int  value = 1;
  Serial.print(value, BYTE);
'BYTE' was not declared in this scope

해결방안

  int  value = 1;
  Serial.write(value);

참고사이트 링크

아두이노 온도 센서 사용하기

온도 센서에는 여러 종류가 있다. LM34, LM35, LM36 등이 있으며 각각 온도를 구하는 공식이 약간 다르다. 

LM35 = (5.0 * reading * 100.0) / 1024.0;
TMP36 = (((reading * 5.0) / 1024.0) - 0.5) * 100

이번 실험에는 LM35 를 사용한다. 생김새는 아래 그림과 같이 뒷부분에 LM35라고 적혀있으며 반대쪽은 둥근형태이다. Output은 Analog In에 연결한다.


사진 출처

사진 출처


실험결과

따로 저항도 필요없고 쉽게 연결할 수 있어서 매우 편리하다. 코드는 아래와 같이 간단하며, 두번째 사진은 실행결과이다. 이 점에서 값을 구하는 식이 다르다는 점을 반드시 확인하여야한다. 아무것도 모르고 있을 땐, 센서가 고장난 줄 알고 한참을 헤매였다.




"본 제품은 아이씨뱅큐 무상체험단 21기 활동의 일환으로 체험 제품을 제공받아 작성되었습니다."


참고 사이트 링크, 링크, 링크

아두이노 편집기(IDE) 폰트 변경하기

먼저 '파일 > 환경설정'을 선택하면, 아래 추가적인 환경 설정은 직접 편집할수 있다고 알려준다. 그 경로를 선택한다.


font 부분에 자신의 원하는 폰트를 입력한다.

나눔고딕일 경우 > NanumGothic


안녕하세요. DFRduino UNO R3 Beginner Kit 개봉기를 올려보려고합니다.

ICBanQ 21기 체험단을 지원했을 때 그냥 '아두이노 비기너 킷'이라고만 생각하고 지원하였습니다.

그런데 검은색으로 평소 생각했던 파랑색의 아두이노와 달라서 긴가민가했습니다.

찾아보니 이 제품은 아두이노의 호환보드로 DFTobot에서 만든 DFRduino라고 합니다.

(하지만 기존의 아두이노와 100% 호환되며, 성능과 사용법이 모두 같다고 하네요. 참고)

 

먼저 박스를 개봉하고 제품의 모습입니다.


받기전에 사진을 보았을 땐 아주 컸던것 같은데, 직접보니 손바닥 크기로 생각보다 작았습니다.


박스를 열고 난 모습입니다. 첫 느낌은 정리가 아주 잘되어있다고 느꼈습니다.

오른쪽에는 들어있는 제품들의 목록이 적혀있고, 왼쪽엔 각각의 부품, 센서들을 사용하는 방법들이 그려져있는 카드가 들어있습니다. (회로에 대해서는 많이 부족한 저에게 정말 필요한 것이라서 아주 마음에 들었습니다.)


사용설명서와 리스트를 걷어내면 아주 잘 정리된 부품들을 볼 수 있었습니다.


하나하나 빼면서 나열하는데 정말 차곡차곡 잘 정리되어있었고, 처음 시작하기에 알맞은 많은 부품들이 있었습니다.


DFRduino UNO R3의 모습입니다. 라즈베리파이보다 조금 더 작은 크기같고, 기존 아두이노랑 거의 똑같이 생겼습니다.


쉴드 장착후 컴퓨터에 연결하고 테스트 해보았습니다. LED 불 들어오는 것만으로도 엄청난 성취감을 느꼈습니다..

그리고 기존의 아두이노는 ON LED가 파랑색인데 디에프알두이노는 빨간색인 것 같습니다. 처음엔 에러가 난건지 계속 고민했는데 그냥 빨간색 인것 같습니다..(제것만 그런건가요..?)

(그리고 노랑색 LED가 불량이라서 좀 아쉬웠습니다..하나는 브레드보드에 꼽았을 때 치칙!하면서 아예 타버려서 놀랐습니다..)

 

비기너 킷을 개봉하면서 많은 구성물(스위치, 모터, 리모콘, 센서, 알람, 세그먼트, 팬 등)과 잘 정돈되고 각 하나하나 스티커가 부탁되어있음으로 처음하는 사람들에게 아주 괜찮은 것 같습니다. 또한 많은 응용을 할 수 있을것 같습니다.

결과적으로 아주 아주 만족스러운 제품인 것 같습니다.

 

"본 제품은 아이씨뱅큐 무상체험단 21기 활동의 일환으로 체험 제품을 제공받아 작성되었습니다."

+ Recent posts