FND( SevenSegment )
FND는 LED를 위와같이 배열하여 하나의 디스플레이 소자로써 숫자나 영문 표시를 한다.
실제 부품 핀 번호를 위에 A~ G까지 써놓았고 여기에 Com 단자와 Dot표시 Led가 존재한다.
다만 프로그래밍에서 제외시켰음.
이 프로그래밍은 C#을 막 시작해서 5달째쯤 되어 시간이 좀 되던중에 디지탈 숫자 표시에 관련된
얘기를 듣고 마침 객체지향에 대해 막 궁금해 하던 시절에 이걸 만들었었다. 아 ~ 옛날이여~~
내가 전자과라서 전자 부품은 거의 모두 알고 있었던 시절이었으니 부품에 대해 그리 사전조사가 필요없었고. 당시 객체 지향에 맞는 코드를 만들어보고자 위 FND를 설계후 디지탈 시계를 만들었었음.
/// <summary>
/// fillup: 채우다,
/// BackColor : 바탕색,
/// UserColor : 사용자 정의색
/// </summary>
enum FillUp {BacKColor,UserColor};
enum SegmentArray {a,b,c,d,e,f,g};
//핀 번호와 Led 표시상태를 구분짓는 값이다. Led가 On, Off되면서 숫자가 표시되므로
이 값을 위처럼 구분짓는다.
/// <summary>
/// 모서리 옵셋값
/// </summary>
float angleoffsetvalue = 9f;
public float AngleOffsetValue
{
get { return angleoffsetvalue; }
set { angleoffsetvalue = value;
CVPointSegments.Calculat(this.Size, angleoffsetvalue, thinkness);
}
}
// 이것은 Led 하나의 다각형 그림을 그릴때 그 모서리를 뽀족하게 할것인지 말것인지를 결정하는 값이다.
/// <summary>
/// 세그먼트 두께 값.
/// </summary>
float thinkness = 7f;
public float SegmentThinkness
{
get { return thinkness; }
set { thinkness = value;
CVPointSegments.Calculat(this.Size, angleoffsetvalue, thinkness);
}
}
// 이것은 세그먼트 표시되는 Led표시부의 두께 값이다.
/// <summary>
/// 외곽선 유무 기본값 : true
/// </summary>
Boolean displayouterwall = true;
public Boolean DisplayOuterWall
{
get {return displayouterwall; }
set {displayouterwall = value; }
}
// 이것은 표시될때 Led의 외곽선 표시임.
/// <summary>
/// 디스플레이~~!! 될 번호... 숫자 0~ 9 가운데...
/// </summary>
int displayIndex = 0;
public int DisplayNumber
{
get { return displayIndex; }
set {
displayIndex = value % 10;
}
}
// 표시될 숫자
/// <summary>
/// Segment 컬러.
/// </summary>
Color usercolor = Color.Red;
public Color UserColor{
get {return usercolor;}
set {usercolor = value;}
}
// Led 색상이 되겠다.
string[][] DisplayNumbers = new string[10][]
{
new string[] {"a","b","c","d","e","f"}, // 0
new string[] {"b","c"}, // 1
new string[] {"a","b","g","d","e"}, // 2
new string[] {"a","b","c","d","g"}, // 3
new string[] {"b","c","g","f"}, // 4
new string[] {"a","f","g","c","d"}, // 5
new string[] {"a","f","g","c","d","e"}, // 6
new string[] {"a","b","c"}, // 7
new string[] {"a","b","c","d","e","f","g"}, // 8
new string[] {"a","b","c","d","g","f"} // 9
};
위 표시는 숫자값에 따른 켜질 Led다!
위에만 봐도 FND의 실제 동작을 가늠할 수 있지 아니한가?
위에는 동작관련된것이고.
아래는 세그먼트 표시관련된 것.
// |offset|
// sp2******************sp3
// sp1******************************sp4 <== 세그먼트 1개
// sp6******************sp5
// halfhinkness : 두께의 절반.
//
이것이 기본 컨셉이었다!!
오~~ 그땐 그래도 머리가 잘 돌았나부다. 하하하!!
실제 존재하는 부품 동작 그대로를 프로그래밍 해보았음.
'# 2) .Net ( Vs 2005 ) > WinForm' 카테고리의 다른 글
HTML 자동 정렬 프로그램 (0) | 2009.05.02 |
---|---|
FND를 이용한 디지탈 시계 (0) | 2009.05.02 |
데이타베이스 브라우져 ver2 (0) | 2009.05.02 |
처음 만든 이미지 뷰어 (0) | 2009.05.02 |
폼간 데이타 전달 (0) | 2009.05.02 |