How do I create a sequence selection Button


hello, ladies , gentlemen. hope create script selects sequence of instructions per button press , after set amount of time executes program. allows me time scroll through sequences. aim of each sequence set different pattern on flasher via pulses.

if it's possible i'd 4 or more selectable sequences allow me other types of flasher.

further this, adding relay selects between ground , vin come when have basic program working intended.

the states in code leds show sequence have selected

here have far:

code: [select]
int relaypin = 5;
int buttonpin = 11;
int oldbuttonstate = high;
int x = 0;
int state1 = a0;
int state2 = a1;
int state3 = a2;
int state4 = a3;

void setup() {
// put setup code here, run once:
 pinmode(relaypin, output);
 pinmode(buttonpin, input_pullup);
}

void loop() {
// current state of button
  int newbuttonstate = digitalread(buttonpin);

  // has button gone high since last read it?
  if (newbuttonstate == high && oldbuttonstate == low) {

    if (x == 0) {
      // sequence 1
digitalwrite(state1, high);
delay(100);
digitalwrite(relaypin, high);
delay(5000);
digitalwrite(relaypin, low);
delay(200);
digitalwrite(relaypin, high);
delay(200);
digitalwrite(relaypin, low);
delay(200);
digitalwrite(relaypin, high);
delay(200);
digitalwrite(relaypin, low);
delay(200);
digitalwrite(relaypin, high);
delay(200);
digitalwrite(relaypin, low);
delay(200);
digitalwrite(relaypin, high);
delay(200);
digitalwrite(relaypin, low);
delay(200);
digitalwrite(state1, low);
delay(100);
      x = 1;
} else {
      // sequence 2
digitalwrite(state2, high);
delay(100);
digitalwrite(relaypin, high);
delay(5000);
digitalwrite(relaypin, low);
delay(200);
digitalwrite(relaypin, high);
delay(200);
digitalwrite(relaypin, low);
delay(200);
digitalwrite(relaypin, high);
delay(200);
digitalwrite(relaypin, low);
delay(200);
digitalwrite(relaypin, high);
delay(200);
digitalwrite(relaypin, low);
delay(200);
digitalwrite(relaypin, high);
delay(200);
digitalwrite(relaypin, low);
delay(200);
digitalwrite(relaypin, high);
delay(200);
digitalwrite(relaypin, low);
delay(200);
digitalwrite(state2, low);
delay(100);
      x = 0;
    }
  }

  // store button's state can tell if it's changed next time round
  oldbuttonstate = newbuttonstate;
}


i'm new coding i'm rather lost @ point, in advance can give :).

wrote single button speed selector, steps each button press , takes current speed if paused 1.5 seconds, might give ideas, sorry, no comments if need them.
code: [select]


uint32_t tstart, timestart, tend;// = 2000ul;
int speeds [] = {0, 50, 100, 200, 400};
int speed;
const byte dbtime = 15, btn = 4, ledpin = 13;
bool btnstate = false, bstate = true, oldbstate = true,
     timing = false, speedset = false;
byte cntr;

void setup()
{
  serial.begin(115200);
  pinmode(btn, input_pullup);
  pinmode(ledpin, output);
}

void loop()
{
// debounce-----------------------------
  if (digitalread(btn) != btnstate) // different!
  {
    btnstate ^= 1;                  // make them equal
    timestart = millis();           // restart timer
  }
  if (millis() - timestart > dbtime)  // if not changed dbtime,
     bstate = btnstate; // btnstate valid, use it
// end debounce-------------------------
 
  if(!timing && !bstate && oldbstate)
  {
    tstart = millis();
    tend = 1500ul;
    cntr = 0;
    timing = true;
    speedset = true;
   
  }

 
  if(timing && !bstate && oldbstate)
  {
    if(++cntr > 5)
      cntr = 1;
    tstart = millis();
    serial.println(speeds[cntr - 1]);
    oldbstate = bstate;
  }

  if(millis() - tstart > tend)
  {
    timing = false;   
    if(speedset)
    {
      speed = speeds[cntr - 1];
      if(!bstate)
        speed = 0;
      serial.print("speed set ");
      serial.println(speed);
      serial.println("press button change");
      speedset = false;
    }
  }
  digitalwrite(ledpin,timing);
  oldbstate = bstate;

   
}


Arduino Forum > Using Arduino > Programming Questions > How do I create a sequence selection Button


arduino

Comments

Popular posts from this blog

Flip address is out of range arduino uno r3

Arduino Uno not uploading

Indesign and MathType fonts