~情報・プログラム編~

4.5問題を解いてみよう

問1


  if( ran_count <= 8 ){
    ran = 1;
  }else if( ran_count >= 13 ){
    ran = 3;
  }else{
    ran = 2;
  }

  if( digitalRead(TGS) == 0 ){

    left_seg= num[17];
    right_seg= num[17];
    fled = BLACK

    if( digitalRead(TS1) == 0 && lednumber <= 10 ){
      if( stop[0] == 1 ){
        stop[0] = 0;
        led[lednumber] = ran;
        lednumber++;
      }
    }else if( digitalRead(TS1) == 0 ){
      if( stop[0] == 1 ){
        stop[0] = 0;
        tone(BZ,100,100);
      }
    }else{
      stop[0] = 1;
      delay(10);
    }

    if( digitalRead(TS2) == 0 && timenumber <= 10 ){
      if( stop[1] == 1 ){
        stop[1] = 0;
        ledtime[timenumber] = ran * 2 * 1000 - 1000;
        timenumber++;
      }
    }else if( digitalRead(TS2) == 0 ){
      if( stop[1] == 1 ){
        stop[1] = 0;
        tone(BZ,100,100);
      }
    }else{
      stop[1] = 1;
      delay(10);
    }

  }else{

    if( digitalRead(TS1) == 0 && digitalRead(TS2) == 1 && lednumber > 1 ){
      left_seg= num[18];
      right_seg= num[19];
    }else if( digitalRead(TS1) == 0 && digitalRead(TS2) == 1 ){
      left_seg= num[20];
      right_seg= num[20];
    }

    if( digitalRead(TS2) == 0 && digitalRead(TS1) == 1 && lednumber > 1 ){
      if( stop[2] == 1 ){
        stop[2] = 0;
        start = 1;
      }
    }else{
      stop[2] = 1;
      delay(10);
    }

    if( digitalRead(TS2) == 0 && digitalRead(TS1) == 0 ){
      lednumber = 1;
      timenumber = 1;
      left_seg= num[17];
      right_seg= num[17];
      for (int i = 0; i < 11; i++) { 
        led[i] = 0;
        ledtime[i] = 1000; 
      }
      fled = BLACK
    }

  }

  if( start == 1 ){
    for( count = 1 ; count <= lednumber - 1 ; count++ ){
      switch(led[count]){
        case 1:
          fled = RED;
          delay(ledtime[count]);
          Serial.print( count );
          Serial.print( "RED" );
          Serial.println( ledtime[count] );
          break;
        case 2:
          fled = YELLOW;
          delay(ledtime[count]);
          Serial.print( count );
          Serial.print( "YELLOW" );
          Serial.println( ledtime[count] );
          break;
        case 3:
          fled = BLUE;
          delay(ledtime[count]);
          Serial.print( count );
          Serial.print( "BLUE" );
          Serial.println( ledtime[count] );
      }
    }
    start = 0;
  }

投稿者 くろう