!ソース保管
コメントやデバッグコードもそのまま
>>>
#include <SoftModem.h> //ライブラリをインクルード
#include <ctype.h>

SoftModem modem; //SoftModemのインスタンスを作る

int latchPin = 9;
int clockPin = 13;
int dataPin = 11;

int ledPin = 10;

void setup(){
  modem.begin(); // setup()でbeginをコールする
   // 
   pinMode(latchPin,OUTPUT);
   pinMode(clockPin,OUTPUT);
   pinMode(dataPin,OUTPUT);
   pinMode(ledPin,OUTPUT);
   
   
     Serial.begin(9600);
    Serial.println("Hello");
}
int pattern[] = { //-------[DOT]
B11110110,
B00100010,
B10111100,
B10111010,
B01101010,
B11011010,
B11011110,
B01110010,
B11111111,
B11111010
/*
  B11011111, //0
  B10000011, //1
  B01110111, //2
  B11100111, //3
  B10101011, //4
  B11101101, //5
  B11111101, //6
  B10001111, //7
  B11111111, //8
  B11101111, //9
  */
};
int data[] = {0,1,2,3,4,5,6,7,8,9,0}; // 11 segments value
int data_in[] = {0,1,2,3,4,5,6,7,8,9,0}; // 11 segments value
int check_sum = 0;
            /*1,2,3,4            */
int count = 0;
int mode = B11111111;
int rcount = 0;

int icount = 0;
int index = 0;
void loop(){
    while(modem.available()){ //iPhoneからデータ受信しているか確認
    int c = modem.read(); //1byteリード
    if(isprint(c) && isdigit(c)){
      if(index == 11){
        if(check_sum == c - '0'){
          // valid!
          for(int j=0;j<11;j++){
            data[j] = data_in[j];
          }
          Serial.println("valid!");
        }else{
          Serial.println("invalid!");
        }
      }else{
        data_in[index] = c - '0';
        check_sum = (check_sum + c - '0') % 10;
        index++;
      }
      icount = 100;
      for(int j=0;j<11;j++){
        Serial.print(data_in[j]);
      }
      Serial.println();
      for(int j=0;j<11;j++){
        Serial.print(data[j]);
      }
     l Serial.println();
    }
    else{
      // 無視
    }

    // for debug
    if(isprint(c)){
      Serial.print((char)c); //PCに送信
      Serial.print("("); //表示できない文字はHexで表示
      Serial.print(c,HEX);
      Serial.println(")");      
    }
    else{
      Serial.print("("); //表示できない文字はHexで表示
      Serial.print(c,HEX);
      Serial.println(")");      
    }

  }
  if(icount >0){  
    icount --;
    if(icount == 0){
      index = 0;
      check_sum = 0;
    } 
  }
    /*
    // full mode
    count ++;
    if(count>11)count = 0;

    for(int i=0; i<11; i++){
      if(count == i){
        digitalWrite(latchPin, LOW);
        shiftOut(dataPin, clockPin, MSBFIRST, (i-8>0)?~(1<< (i-8)):0);
        shiftOut(dataPin, clockPin, MSBFIRST, ~(1 << i));
        shiftOut(dataPin, clockPin, LSBFIRST, pattern[data[i]]);
        digitalWrite(latchPin, HIGH);
      }
    }
    */
    // rinban mode
    rcount ++;
    if(rcount > 9600)rcount = 0;
    if(rcount > 4800){
      digitalWrite(ledPin,HIGH);
    }else{
      digitalWrite(ledPin,LOW);      
    }
    
    
    if(/*rcount>4800 || */false){
      count ++;
      if(count>4)count = 0;
  
      for(int i=0; i<4; i++){
        if(count == i){
          digitalWrite(latchPin, LOW);
          shiftOut(dataPin, clockPin, MSBFIRST, (i-8>0)?~(1<< (i-8)):0);
          shiftOut(dataPin, clockPin, MSBFIRST, ~(1 << i));
          shiftOut(dataPin, clockPin, LSBFIRST, pattern[data[i]]);
          digitalWrite(latchPin, HIGH);
        }
      }
    }else{
      count ++;
      if(count>11)count = 0;
  
      for(int i=0; i<11; i++){
        if(count == i){
          digitalWrite(latchPin, LOW);
          shiftOut(dataPin, clockPin, MSBFIRST, (i-8>=0)?(~(1<< (i-8))):B11111111);
          //shiftOut(dataPin, clockPin, MSBFIRST, B11111111);
          shiftOut(dataPin, clockPin, MSBFIRST, ~(1 << i));
          shiftOut(dataPin, clockPin, LSBFIRST, pattern[data[i]]);
          digitalWrite(latchPin, HIGH);
        }
      }
    }
    
    /*
    for(int i=2; i<4+2; i++){
      if(count == i){
        digitalWrite(latchPin, LOW);
        shiftOut(dataPin, clockPin, LSBFIRST, ~(1<< (i-8)));
        shiftOut(dataPin, clockPin, LSBFIRST, ~(1 << i));
        shiftOut(dataPin, clockPin, LSBFIRST, pattern[data[i]]);
        digitalWrite(latchPin, HIGH);
      }
    }*/
    
    /*
    if(count == 0){
       digitalWrite(latchPin, LOW);
       shiftOut(dataPin, clockPin, LSBFIRST, B11111111);
       shiftOut(dataPin, clockPin, LSBFIRST, B10111111);
       shiftOut(dataPin, clockPin, LSBFIRST, B11000000);
       digitalWrite(latchPin, HIGH);

       //digitalWrite(selectPin2,LOW);
       //digitalWrite(selectPin,HIGH);
    }else if(count == 1){
       digitalWrite(latchPin, LOW);
       shiftOut(dataPin, clockPin, LSBFIRST, B11111111);
       shiftOut(dataPin, clockPin, LSBFIRST, B11011111);
       shiftOut(dataPin, clockPin, LSBFIRST, B11111111);
       digitalWrite(latchPin, HIGH);
    } else{
       digitalWrite(latchPin, LOW);
       shiftOut(dataPin, clockPin, LSBFIRST, B11111111);
       shiftOut(dataPin, clockPin, LSBFIRST, B11111111);
       shiftOut(dataPin, clockPin, LSBFIRST, B00000000);
       digitalWrite(latchPin, HIGH);
    //  digitalWrite(latchPin, LOW);
      //shiftOut(dataPin, clockPin, LSBFIRST, B00000000);
    //  digitalWrite(latchPin, HIGH);

    //   digitalWrite(selectPin,LOW);
    //   digitalWrite(selectPin2,HIGH);
    }
    */
    //delay(30);
}
<<<
5643382
wiki
1316088195