7세그 디코더 IC용으로 10진→2진 변환한다.
이번에 7세그먼트 LED를 빛내기 위해서 7세그먼트 같이 디코드 IC를 입수했습니다.
이것은 4자리의 2진수에 의해 0~9까지의 숫자를 7세그먼트로 표시하기 위한 IC로, 좋아하는 숫자를 표시하기 위한 10진 2진 변환을 하기 위한 코드를 걸었으므로 비망록적 에 소개합니다.
Arduino Uno, Nano를 사용하여 7 세그 디코드 IC와 함께 사용하면 다음과 같이 7 세그먼트를 빛낼 수 있습니다.
여기까지 힘들었습니다 😇 피 c. 라고 r. 이 m / 3Y W9m MG — tueks (@tueks3) 10월 22, 2020
회로를 조립하지 않아도 직렬 모니터에서 10진수가 2진수로 변환되었는지 확인할 수 있습니다.
별로 똑똑하지 않다고 생각하지만 코드입니다.
//10進数を2進数に変換します。
//ArduinoUno/Nanoで動きます。
//2進数によって7セグメントをスタティック点灯させるデコードICのために作成しました。
//2020.11.10 tueksによって作成されました。
void setup() {
Serial.begin(9600);
}
/*10進数2進数変換*/
void ChangeBin(int Dec, int *Bin);
//https://monoist.atmarkit.co.jp/mn/articles/1408/07/news012.html
void loop()
{
int deadtime = 500; /*mSec*/
int Bin[4];//4桁2進数用の配列
int i;
int k = 0;
//0~9までの数字を順番に表示。
for (int n = 0; n < 10; n++) {
Serial.print(String(k)+" ");//シリアルモニタに10進の表示
ChangeBin(k, Bin);//kで与えられる10進数を2進数にエンコード
/*d2~4を出力ピンに設定、昇順に配列設定し、TC5068(7セグデコードIC)の入力ピンA~Dに対応*/
for (i = 0; i < 4; i++) {
//d2~d5に配列の値Bin[0]~Bin[3]を格納
if (Bin[i] == 1) {
digitalWrite(i + 2, HIGH);
} else {
digitalWrite(i + 2, LOW);
}
Serial.print(",");
Serial.print(Bin[i]);//シリアルモニタに2進数の表示
} Serial.println();
delay(deadtime);
k = k + 1;
}
}
//10進を4bitの2進数に変換し、配列に格納。
void ChangeBin(
int Dec, //input
int *Bin //roop()内で作成した配列のアドレスを受け取る。ポインタ渡し。
)
{
/*10進数が2進数に変換され、配列に格納。Bin[3]=0桁目,Bin[2]=1桁目,Bin[1]=2桁目,Bin[0}=3桁目*/
int m = 3;
for (int i = 0; i < 4; i++) {
Bin[m] = Dec % 2;
Dec = Dec / 2;
m = m - 1;
}
}
이하 잡음 코드의 해설입니다. 프로그래밍에는 정말 약하기 때문에 설명이 잘못되었을 수 있습니다. 뭔가 있으시면 지적해 주시면 좋겠습니다.
ChangeBin이라는 자작한 함수에 의해 10진수를 2진수로 변환합니다.
loop()내에서 k에 의해 주어진 10진수, Bin[]이라는 배열을 ChangeBin에 건네줍니다. 배열은 함수에 의해 직접 값을 재기록할 수 없기 때문에, 「포인터 전달」이라고 하는 작성한 배열 Bin[]의 주소를 건네줍니다.
ChangeBin 함수 내에서 10진수 이진 변환이 수행되고 이진수는 4자리 배열에 한 문자씩 저장됩니다.
loop()내에서 배열 Bin[0]~[3]의 값이 불려 가, digitalWrite에 의해 Arduino의 d0~d5를 2진수의 전압 출력으로 합니다.
2진수의 출력으로 직접 LED를 구동하면 이렇게 됩니다.
<script async=""src="https://platform.twitter.com/widgets.js"/>배열을 넘기는데 포인터를 사용한다든가 말하는 것도 잘 모르기 어려웠습니다. 미츠오 피 c. 라고 r. 코 m/Z9 우푸야우자
— tueks (@tueks3) 10월 22, 2020
이상입니다.
tueks
Reference
이 문제에 관하여(7세그 디코더 IC용으로 10진→2진 변환한다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tueks3/items/ddb4be8dcf7e36e4a6bc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)