仕様書を見て作ったのですが、動かすと表示が真っ暗なままです。
手順としてはあっていると思うのですが・・・。
どうしても動かしたいので分かる方ご教授をお願いします。
仕様書はこちらです。http://www.originalmind.co.jp/useds/uploaddoc/37008.pdf
- コード: 全て選択
int D0_Pin = 2; //データライン0 out
int D1_Pin = 3; //データライン1 out
int D2_Pin = 4; //データライン2 out
int D3_Pin = 5; //データライン3 out
int Bsy_Pin = 6; //BUSY信号 in
int Str_Pin = 7; //STROBE信号 out
int Rst_Pin = 8; //RESET信号 通常LOW out
//データの定義
int disp_0[8] = {0,0,0,0,0,0,0,1};
int disp_1[8] = {1,0,0,0,0,0,0,1};
int disp_2[8]= {0,1,0,0,0,0,0,1};
int disp_3[8]= {1,1,0,0,0,0,0,1};
int disp_4[8]= {0,0,1,0,0,0,0,1};
int disp_5[8]= {1,0,1,0,0,0,0,1};
int disp_6[8]= {0,1,1,0,0,0,0,1};
int disp_7[8]= {1,1,1,0,0,0,0,1};
int disp_8[8]= {0,0,0,0,1,0,0,1};
int disp_9[8]= {1,0,0,0,1,0,0,1};
int disp_A[8]= {0,1,0,0,1,0,0,1};
int disp_B[8]= {1,1,0,0,1,0,0,1};
int disp_C[8]= {0,0,1,0,1,0,0,1};
int disp_D[8]= {1,0,1,0,1,0,0,1};
int disp_E[8]= {0,1,1,0,1,0,0,1};
int disp_F[8]= {1,1,1,0,1,0,0,1};
int disp_H[8]= {1,0,0,0,0,1,0,1};
int disp_I[8]= {0,1,0,0,0,1,0,1};
int disp_J[8]= {1,1,0,0,0,1,0,1};
int disp_L[8]= {1,0,1,0,0,1,0,1};
int disp_O[8]= {0,0,0,0,1,1,0,1};
int disp_P[8]= {1,0,0,0,1,1,0,1};
int disp_S[8]= {0,0,1,0,1,1,0,1};
int disp_U[8]= {0,1,1,0,1,1,0,1};
int disp_BL[8]= {0,0,1,0,0,0,1,1};
int disp_RR[8]= {0,1,1,0,0,0,1,1};
int disp_RL[8]= {1,1,1,0,0,0,1,1};
void setup() {
// initialize the digital pin as an output.
pinMode(D0_Pin, OUTPUT);
pinMode(D1_Pin, OUTPUT);
pinMode(D2_Pin, OUTPUT);
pinMode(D3_Pin, OUTPUT);
pinMode(Bsy_Pin, INPUT);
pinMode(Str_Pin, OUTPUT);
pinMode(Rst_Pin, OUTPUT);
init_pin();
Serial.begin(9600);
}
// the loop routine runs over and over again forever:
void loop() {
write_display('B');
delay(1000);
}
void init_pin(){
//各ピンLowにセット
digitalWrite(D0_Pin, LOW);
digitalWrite(D1_Pin, LOW);
digitalWrite(D2_Pin, LOW);
digitalWrite(D3_Pin, LOW);
digitalWrite(Str_Pin, LOW);
digitalWrite(Rst_Pin, LOW);
//リセットかける
digitalWrite(Rst_Pin, HIGH);
delay(500);
digitalWrite(Rst_Pin, LOW);
delay(1000);
}
void write_display(char disp_data){
int i;
int val = 0;
int data[8];
switch (disp_data){
case '0': memcpy(data, disp_0, sizeof(int) * 8); break;
case '1': memcpy(data, disp_1, sizeof(int) * 8); break;
case '2': memcpy(data, disp_2, sizeof(int) * 8); break;
case '3': memcpy(data, disp_3, sizeof(int) * 8); break;
case '4': memcpy(data, disp_4, sizeof(int) * 8); break;
case '5': memcpy(data, disp_5, sizeof(int) * 8); break;
case '6': memcpy(data, disp_6, sizeof(int) * 8); break;
case '7': memcpy(data, disp_7, sizeof(int) * 8); break;
case '8': memcpy(data, disp_8, sizeof(int) * 8); break;
case '9': memcpy(data, disp_9, sizeof(int) * 8); break;
case 'A': memcpy(data, disp_A, sizeof(int) * 8); break;
case 'B': memcpy(data, disp_B, sizeof(int) * 8); break;
case 'C': memcpy(data, disp_C, sizeof(int) * 8); break;
case 'D': memcpy(data, disp_D, sizeof(int) * 8); break;
case 'E': memcpy(data, disp_E, sizeof(int) * 8); break;
case 'F': memcpy(data, disp_F, sizeof(int) * 8); break;
case 'H': memcpy(data, disp_H, sizeof(int) * 8); break;
case 'I': memcpy(data, disp_I, sizeof(int) * 8); break;
case 'J': memcpy(data, disp_J, sizeof(int) * 8); break;
case 'L': memcpy(data, disp_L, sizeof(int) * 8); break;
case 'O': memcpy(data, disp_O, sizeof(int) * 8); break;
case 'P': memcpy(data, disp_P, sizeof(int) * 8); break;
case 'S': memcpy(data, disp_S, sizeof(int) * 8); break;
case 'U': memcpy(data, disp_U, sizeof(int) * 8); break;
case '*': memcpy(data, disp_BL, sizeof(int) * 8); break;
case ']': memcpy(data, disp_RR, sizeof(int) * 8); break;
case '[': memcpy(data, disp_RL, sizeof(int) * 8); break;
}
//データ書き込み
//①BUSY信号が0であることを確認
while(val != 0){
val = digitalRead(Bsy_Pin);
}
//LOWDATA書き込み
digitalWrite(D0_Pin, data[0]);
digitalWrite(D1_Pin, data[1]);
digitalWrite(D2_Pin, data[2]);
digitalWrite(D3_Pin, data[3]);
//②データ送信準備完了
digitalWrite(Str_Pin, HIGH);
//③データ受信中になるまで待つ
while(val != 1){
val = digitalRead(Bsy_Pin);
}
//④データ送信完了
digitalWrite(Str_Pin, LOW);
//⑤⑥データ受信完了になるまで待つ
while(val != 0){
val = digitalRead(Bsy_Pin);
}
//⑦HIGHDATA書き込み
digitalWrite(D0_Pin, data[4]);
digitalWrite(D1_Pin, data[5]);
digitalWrite(D2_Pin, data[6]);
digitalWrite(D3_Pin, data[7]);
//データ送信準備完了
digitalWrite(Str_Pin, HIGH);
//データ受信中になるまで待つ
while(val != 0){
val = digitalRead(Bsy_Pin);
}
//データ送信完了
digitalWrite(Str_Pin, LOW);
//for (i =0; i<8;i++){
// Serial.print(data[i]);
//}
//Serial.print("\n");
}