
~情報・プログラム編~
4.5問題を解いてみよう
問1
if( digitalRead(TGS) == 1 ){
if( digitalRead(TS1) == 0 && digitalRead(TS2) == 1 && 4 > count ){
if( stop == 1 ){
stop = 0;
count++;
}
}else if( digitalRead(TS2) == 0 && digitalRead(TS1) == 1 && 1 < count ){
if( stop == 1 ){
stop = 0;
count--;
}
}else{
stop = 1;
}
switch( count ){
case 1:
dc_sp = 3;
stm_sp = 0;
dc_dir = TOKEI;
break;
case 2:
dc_sp = 0;
stm_sp = 1;
stm_dir = TOKEI;
break;
case 3:
dc_sp = 3;
stm_sp = 1;
dc_dir = HANTOKEI;
stm_dir = HANTOKEI;
break;
case 4:
dc_sp = 0;
stm_sp = 0;
}
left_seg= num[count];
right_seg= num[17];
}else{
count = 1;
dc_sp = 0;
stm_sp = 0;
left_seg= num[17];
right_seg= num[17];
fled = BLACK;
}
問2
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;
}