I'm in need of some guidance.
I'm building the an Arduino based Cyclone Arcade game with a twist.
Using a 2560. LEDs are pins 2-42. LEDs chase each other based on dt, Delay Time.
Right now I would just like some help switching from delay to mill. But maybe there is a better way.
Once I get the mili figured out, here's what I'm ultimately trying to do.
Would appreciate any assistance.
Pin 21 has a different delay variable delay time called Win.
I'm trying to modify my code from delay () to milli(). I'm stuck.
Ultimately I need to add the button to make it a game. That's pbA.
Logic
When pgA = high && pin 21 = HIGH goto/jump/break to WIN routine.
Win routine has not been added. But it's essentially chase LEDs 21, then 20 & 22, 19 & 21, 18 & 22.....
If pbB pressed and LED 21 is low or not high goto/jump/break to loose routine.
(Not sure what loose routine will be, but it needs to be waiting for pbB input.
There's a second pushbutton, pbB. This button when pressed once resets Arduino and starts the game all over again.
If double pressed will win variable is set to lower 8 and starts game.
If long press win variable is set to 100 and starts game.
Original code
// Cyclone Game
byte PBA = 0 ;
byte PBB = 0 ;
byte DT = 20 ;
int WIN = 8;
void setup() {
// Iinitialize pins 2 - 43 as an output:
for (byte thisPin = 2; thisPin < 43; thisPin++) {
pinMode(thisPin, OUTPUT);
}
pinMode (44, INPUT) ;
pinMode (45, INPUT) ;
}
void loop() {
// put your main code here, to run repeatedly:
PBA = digitalRead (44) ;
PBB = digitalRead (45) ;
digitalWrite (21, PBA) ;
digitalWrite (22, PBB) ;
digitalWrite (42, HIGH) ;
digitalWrite (2, HIGH) ;
delay (DT);
digitalWrite (2, LOW) ;
digitalWrite (3, HIGH) ;
delay (DT);
digitalWrite (3, LOW) ;
digitalWrite (4, HIGH) ;
delay (DT);
digitalWrite (4, LOW) ;
digitalWrite (5, HIGH) ;
delay (DT);
digitalWrite (5, LOW) ;
digitalWrite (6, HIGH) ;
delay (DT);
digitalWrite (6, LOW) ;
digitalWrite (7, HIGH) ;
delay (DT);
digitalWrite (7, LOW) ;
digitalWrite (8, HIGH) ;
delay (DT);
digitalWrite (8, LOW) ;
digitalWrite (9, HIGH) ;
delay (DT);
digitalWrite (9, LOW) ;
digitalWrite (10, HIGH) ;
delay (DT);
digitalWrite (10, LOW) ;
digitalWrite (11, HIGH) ;
delay (DT);
digitalWrite (11, LOW) ;
digitalWrite (12, HIGH) ;
delay (DT);
digitalWrite (12, LOW) ;
digitalWrite (13, HIGH) ;
delay (DT);
digitalWrite (13, LOW) ;
digitalWrite (14, HIGH) ;
delay (DT);
digitalWrite (14, LOW) ;
digitalWrite (15, HIGH) ;
delay (DT);
digitalWrite (15, LOW) ;
digitalWrite (16, HIGH) ;
delay (DT);
digitalWrite (16, LOW) ;
digitalWrite (17, HIGH) ;
delay (DT);
digitalWrite (17, LOW) ;
digitalWrite (18, HIGH) ;
delay (DT);
digitalWrite (18, LOW) ;
digitalWrite (19, HIGH) ;
delay (DT);
digitalWrite (19, LOW) ;
digitalWrite (20, HIGH) ;
delay (DT);
digitalWrite (20, LOW) ;
digitalWrite (21, HIGH) ;
delay (WIN); //<-----------------Note this delay time can be modified. Win variable.
digitalWrite (21, LOW) ;
digitalWrite (22, HIGH) ;
delay (DT);
digitalWrite (22, LOW) ;
digitalWrite (23, HIGH) ;
delay (DT);
digitalWrite (23, LOW) ;
digitalWrite (24, HIGH) ;
delay (DT);
digitalWrite (24, LOW) ;
digitalWrite (25, HIGH) ;
delay (DT);
digitalWrite (25, LOW) ;
digitalWrite (26, HIGH) ;
delay (DT);
digitalWrite (26, LOW) ;
digitalWrite (27, HIGH) ;
delay (DT);
digitalWrite (27, LOW) ;
digitalWrite (28, HIGH) ;
delay (DT);
digitalWrite (28, LOW) ;
digitalWrite (29, HIGH) ;
delay (DT);
digitalWrite (29, LOW) ;
digitalWrite (30, HIGH) ;
delay (DT);
digitalWrite (30, LOW) ;
digitalWrite (31, HIGH) ;
delay (DT);
digitalWrite (31, LOW) ;
digitalWrite (32, HIGH) ;
delay (DT);
digitalWrite (32, LOW) ;
digitalWrite (33, HIGH) ;
delay (DT);
digitalWrite (33, LOW) ;
digitalWrite (34, HIGH) ;
delay (DT);
digitalWrite (34, LOW) ;
digitalWrite (35, HIGH) ;
delay (DT);
digitalWrite (35, LOW) ;
digitalWrite (36, HIGH) ;
delay (DT);
digitalWrite (36, LOW) ;
digitalWrite (37, HIGH) ;
delay (DT);
digitalWrite (37, LOW) ;
digitalWrite (38, HIGH) ;
delay (DT);
digitalWrite (38, LOW) ;
digitalWrite (39, HIGH) ;
delay (DT);
digitalWrite (39, LOW) ;
digitalWrite (40, HIGH) ;
delay (DT);
digitalWrite (40, LOW) ;
digitalWrite (41, HIGH) ;
delay (DT);
digitalWrite (41, LOW) ;
}
Updated code
// Cyclone Game
byte pbA = 0;
byte pbB = 0;
//Time varibles
unsigned long startTime; //Initial start time.
unsigned long currentTime;
unsigned long dt = 40; //delay time <------- Change this value for faster/slower chase.
//============= SETUP =====================================================
void setup() {
startTime = millis(); // Set startTime to Arduino clock.
// Iinitialize pins 2 - 43 as an outputs:
for (byte LEDS = 2; LEDS < 43; LEDS++) {
pinMode(LEDS, OUTPUT);
}
pinMode (44, INPUT);
pinMode (45, INPUT);
digitalWrite (42, HIGH); // Turn on Push buttonA (pbA) LED on
}
//============ LOOP =======================================================
void loop() {
// put your main code here, to run repeatedly:
for (byte LED = 2; LED < 42; LED++) { //chase LEDs 2-41
digitalWrite (LED, HIGH);
delay (dt);
digitalWrite (LED, LOW);
}
pbA = digitalRead (44);
pbB = digitalRead (45);
digitalWrite (21, pbA);
digitalWrite (22, pbB);
}