Stuck with a loop


hi

just wondering whether piece of code writting. meant game using lasers , ldrs receiver.  when try out seems run void loop until enters "playgame" not seem able exit "lose" function , return "options" function @ start of void loop.

second question within "playgame" function, unsure how add amount of time system has wait right input before exiting lose function.

code: [select]
#include <softwareserial.h>

softwareserial myserial(-1, 2); // rx9 disabled, tx on d2

// pins shift registers conected:
int latchpin = 5;
int clockpin = 6;
int datapin = 4;

// pins ldrs connected:
const int ldr1 = 13;
const int ldr2 = 12;
const int ldr3 = 11;
const int ldr4 = 10;
const int ldr5 = 9;
const int ldr6 = 8;
const int ldr7 = 7;
const int speaker = 3;

int ldr1state = 0;
int ldr2state = 0;
int ldr3state = 0;
int ldr4state = 0;
int ldr5state = 0;
int ldr6state = 0;
int ldr7state = 0;

int x=0;

// initial output shift registers:
unsigned char reg1 = 0;
unsigned char reg2 = 0;
unsigned char reg3 = 0;
unsigned char reg4 = 0;

#define note_b0  31
#define note_c1  33
#define note_cs1 35
#define note_d1  37
#define note_ds1 39
#define note_e1  41
#define note_f1  44
#define note_fs1 46
#define note_g1  49
#define note_gs1 52
#define note_a1  55
#define note_as1 58
#define note_b1  62
#define note_c2  65
#define note_cs2 69
#define note_d2  73
#define note_ds2 78
#define note_e2  82
#define note_f2  87
#define note_fs2 93
#define note_g2  98
#define note_gs2 104
#define note_a2  110
#define note_as2 117
#define note_b2  123
#define note_c3  131
#define note_cs3 139
#define note_d3  147
#define note_ds3 156
#define note_e3  165
#define note_f3  175
#define note_fs3 185
#define note_g3  196
#define note_gs3 208
#define note_a3  220
#define note_as3 233
#define note_b3  247
#define note_c4  262
#define note_cs4 277
#define note_d4  294
#define note_ds4 311
#define note_e4  330
#define note_f4  349
#define note_fs4 370
#define note_g4  392
#define note_gs4 415
#define note_a4  440
#define note_as4 466
#define note_b4  494
#define note_c5  523
#define note_cs5 554
#define note_d5  587
#define note_ds5 622
#define note_e5  659
#define note_f5  698
#define note_fs5 740
#define note_g5  784
#define note_gs5 831
#define note_a5  880
#define note_as5 932
#define note_b5  988
#define note_c6  1047
#define note_cs6 1109
#define note_d6  1175
#define note_ds6 1245
#define note_e6  1319
#define note_f6  1397
#define note_fs6 1480
#define note_g6  1568
#define note_gs6 1661
#define note_a6  1760
#define note_as6 1865
#define note_b6  1976
#define note_c7  2093
#define note_cs7 2217
#define note_d7  2349
#define note_ds7 2489
#define note_e7  2637
#define note_f7  2794
#define note_fs7 2960
#define note_g7  3136
#define note_gs7 3322
#define note_a7  3520
#define note_as7 3729
#define note_b7  3951
#define note_c8  4186
#define note_cs8 4435
#define note_d8  4699
#define note_ds8 4978

// note durations: 4 = quarter note, 8 = eighth note, etc.:
int notedurations[] = {
  4 };


void setup()

  pinmode(latchpin, output);
  pinmode(datapin, output); 
  pinmode(clockpin, output);
 
  pinmode(ldr1, input);
  pinmode(ldr2, input);
  pinmode(ldr3, input);
  pinmode(ldr4, input);
  pinmode(ldr5, input);
  pinmode(ldr6, input);
  pinmode(ldr7, input);
 
  reg1= b00111100;
  reg2= b00111100;
  reg3= b00111100;
  reg4= b00111100;
 
  updateshiftregister();
  serial.begin(9600);
  myserial.begin(9600);
  clearscreen();
  options();
}

void loop() {
  options();
  if (digitalread(ldr2)==1){
   tone(speaker, note_a3, 400);
   countdown();
   clearscreen();
   playgame();
   }
   if (digitalread(ldr6)==1){
   clearscreen();
   myserial.print("       ok       ");
   tone(speaker, note_e4, 400);
   delay(2000);
   options();
}
}

void options(){
  clearscreen();
  myserial.print("     play?      ");
  myserial.print("yes           no");
  col26green();
  delay(2000);
}
 
void countdown(){
   clearscreen();
   myserial.print("      ready     ");
   delay(1000);
   clearscreen();
   myserial.print("       3        ");
   myserial.print("                ");
   tone(speaker, note_a3, 400);
   col1green();
   col2green();
   delay(1000);
   myserial.print("       2        ");
   myserial.print("                ");
   tone(speaker, note_c4, 400);
   col3green();
   col4green();
   col5green();
   delay(1000);
   myserial.print("       1        ");
   myserial.print("                ");
   tone(speaker, note_e4, 400);
   col6green();
   col7green();
   delay(1000);
   myserial.print("       go!      ");
   myserial.print("                ");
   tone(speaker, note_a3, 50);
   delay(100);
   tone(speaker, note_c4, 50);
   delay(100);
   tone(speaker, note_e4, 50);
   delay(100);
   colallred();
   delay(1000);
}
 
 
void lose(){
   colallred();
   clearscreen();
   myserial.print("     oh no!     ");
   delay(2000);
   options();
 
}

void clearscreen(void){
myserial.write(0xfe);
myserial.write(0x01);
}


void updateshiftregister()
{
   digitalwrite(latchpin, low);
   shiftout(datapin, clockpin, msbfirst, reg4);
   shiftout(datapin, clockpin, msbfirst, reg3);
   shiftout(datapin, clockpin, msbfirst, reg2);
   shiftout(datapin, clockpin, msbfirst, reg1);
   digitalwrite(latchpin, high);
}

void col1green()
{
      reg1= b00000001;
      reg2= b00111100;
      reg3= b00111100;
      reg4= b00111100;
updateshiftregister();
      reg1= b00111101;
      reg2= b00111100;
      reg3= b00111100;
      reg4= b00111100;
updateshiftregister();
}

void col2green()
{
      reg1= b00000010;
      reg2= b00111100;
      reg3= b00111100;
      reg4= b00111100;
updateshiftregister();
      reg1= b00111110;
      reg2= b00111100;
      reg3= b00111100;
      reg4= b00111100;
updateshiftregister();
}

void col3green()
{
     reg1= b00000000;
     reg2= b00000011;
     reg3= b00000000;
     reg4= b00000000;
updateshiftregister();
     reg1= b00111100;
     reg2= b00111101;
     reg3= b11111100;
     reg4= b00111100;
updateshiftregister();
}

void col4green()
{
     reg1= b00000000;
     reg2= b00000010;
     reg3= b00000001;
     reg4= b00000000;
updateshiftregister();
      reg1= b00111100;
      reg2= b00111110;
      reg3= b00111101;
      reg4= b00111100;
updateshiftregister();
}

void col5green()
{
     reg1= b00000000;
     reg2= b00000000;
     reg3= b00000010;
     reg4= b00000000;
updateshiftregister();
     reg1= b00111100;
     reg2= b00111100;
     reg3= b00111110;
     reg4= b00111100;
updateshiftregister();
}

void col6green()
{
     reg1= b00000000;
     reg2= b00000000;
     reg3= b00000000;
     reg4= b00000001;
updateshiftregister();
     reg1= b00111100;
     reg2= b00111100;
     reg3= b00111100;
     reg4= b00111101;
updateshiftregister();
}

void col7green()
{
     reg1= b00000000;
     reg2= b00000000;
     reg3= b00000000;
     reg4= b00000010;
updateshiftregister();
     reg1= b00111100;
     reg2= b00111100;
     reg3= b00111100;
     reg4= b00111110;
updateshiftregister();
}

void col26green()
{
     reg1= b00000010;
     reg2= b00111100;
     reg3= b00000000;
     reg4= b00000001;
updateshiftregister();
     reg1= b00111110;
     reg2= b00111100;
     reg3= b00111100;
     reg4= b00111101;
updateshiftregister();
}

void colallred()
{
    reg1= b00111100;
    reg2= b00111100;
    reg3= b00111100;
    reg4= b00111100;
    updateshiftregister();
}

void playgame(){
  int i, current_random_number;
  for(i=0; i<7; i++)
  {
    current_random_number = rand()%2;
 
  if (current_random_number == 0)
  {
    tone(speaker, note_g3, 1000);
    col1green();
    if (digitalread(ldr1)==1);
    tone(speaker, note_g3, 1000);
  }
  else lose();
 
   if (current_random_number == 1)
  {
    tone(speaker, note_a3, 1000);
    col2green();
    if (digitalread(ldr2)==1);
    tone(speaker, note_a3, 1000);
  }
  else lose();
   if (current_random_number == 2)
  {
    tone(speaker, note_b3, 1000);
    col3green();
    if (digitalread(ldr3)==1);
    tone(speaker, note_b3, 1000);
  }
  else lose();
 
   if (current_random_number == 3)
  {
    tone(speaker, note_c4, 1000);
    col4green();
    if (digitalread(ldr4)==1);
    tone(speaker, note_c4, 1000);
  }
  else lose();
 
   if (current_random_number == 4)
  {
    tone(speaker, note_d4, 1000);
    col5green();
    if (digitalread(ldr5)==1);
    tone(speaker, note_d4, 1000);
  }
  else lose();
 
   if (current_random_number == 5)
  {
    tone(speaker, note_e4, 1000);
    col6green();
    if (digitalread(ldr6)==1);
    tone(speaker, note_e4, 1000);
  }
  else lose();
 
   if (current_random_number == 6)
  {
    tone(speaker, note_f4, 1000);
    col7green();
    if (digitalread(ldr7)==1);
    tone(speaker, note_f4, 1000);
  }
  else lose();
  }
 
}


thank you!

if "lose" this:

code: [select]

void lose(){
  colallred();
  clearscreen();
  myserial.print("     oh no!     ");
  delay(2000);
  options();
 
}


is normal can't out.

the main problem don't tell program exit!

the function options(); not same "exit game".



Arduino Forum > Using Arduino > Programming Questions > Stuck with a loop


arduino

Comments

Popular posts from this blog

opencv3, tbb and rasp pi 2 - Raspberry Pi Forums

small ethernet problem - Raspberry Pi Forums

Multithumb configuration params not working? - Joomla! Forum - community, help and support