Components and supplies
10 Green Led 5mm
10 jumper wires 100mm male
10 Yellow Led 5mm
Breadboard 830 points with Wire Kit
10 Blue Led 5mm
10 Red Led 5mm
Arduino UNO
5 PushButton 6x6
Project description
Code
Code snippet #1
arduino
1/*This sketch is a simple version of the famous Simon Says game. You can use it and improved it adding 2levels and everything you want to increase the diffuculty! 3 4There are five buttons connected to A0, A1, A2, A3 and A4. 5The buttons from A0 to A3 are used to insert the right sequence while A4 to start the game. 6 7When a wrong sequence is inserted all the leds will blink for three time very fast otherwhise the 8inserted sequence is correct. 9 10Hardware needed: 115x pushbuttons 121x Blue led 131x Yellow led 141x Red led 151x Green Led 164x 1k resistors 174x 10k resisors 1810x jumpers 19*/ 20 21const int MAX_LEVEL = 100; 22int sequence[MAX_LEVEL]; 23int your_sequence[MAX_LEVEL]; 24int level = 1; 25 26int velocity = 1000; 27 28void setup() { 29pinMode(A0, INPUT); 30pinMode(A1, INPUT); 31pinMode(A2, INPUT); 32pinMode(A3, INPUT); 33 34pinMode(2, OUTPUT); 35pinMode(3, OUTPUT); 36pinMode(4, OUTPUT); 37pinMode(5, OUTPUT); 38 39digitalWrite(2, LOW); 40digitalWrite(3, LOW); 41digitalWrite(4, LOW); 42digitalWrite(5, LOW); 43} 44 45void loop() 46{ 47if (level == 1) 48generate_sequence();//generate a sequence; 49 50if (digitalRead(A4) == LOW || level != 1) //If start button is pressed or you're winning 51{ 52show_sequence(); //show the sequence 53get_sequence(); //wait for your sequence 54} 55} 56 57void show_sequence() 58{ 59digitalWrite(2, LOW); 60digitalWrite(3, LOW); 61digitalWrite(4, LOW); 62digitalWrite(5, LOW); 63 64for (int i = 0; i < level; i++) 65{ 66digitalWrite(sequence[i], HIGH); 67delay(velocity); 68digitalWrite(sequence[i], LOW); 69delay(200); 70} 71} 72 73void get_sequence() 74{ 75int flag = 0; //this flag indicates if the sequence is correct 76 77for (int i = 0; i < level; i++) 78{ 79flag = 0; 80while(flag == 0) 81{ 82if (digitalRead(A0) == LOW) 83{ 84digitalWrite(5, HIGH); 85your_sequence[i] = 5; 86flag = 1; 87delay(200); 88if (your_sequence[i] != sequence[i]) 89{ 90wrong_sequence(); 91return; 92} 93digitalWrite(5, LOW); 94} 95 96if (digitalRead(A1) == LOW) 97{ 98digitalWrite(4, HIGH); 99your_sequence[i] = 4; 100flag = 1; 101delay(200); 102if (your_sequence[i] != sequence[i]) 103{ 104wrong_sequence(); 105return; 106} 107digitalWrite(4, LOW); 108} 109 110if (digitalRead(A2) == LOW) 111{ 112digitalWrite(3, HIGH); 113your_sequence[i] = 3; 114flag = 1; 115delay(200); 116if (your_sequence[i] != sequence[i]) 117{ 118wrong_sequence(); 119return; 120} 121digitalWrite(3, LOW); 122} 123 124if (digitalRead(A3) == LOW) 125{ 126digitalWrite(2, HIGH); 127your_sequence[i] = 2; 128flag = 1; 129delay(200); 130if (your_sequence[i] != sequence[i]) 131{ 132wrong_sequence(); 133return; 134} 135digitalWrite(2, LOW); 136} 137 138} 139} 140right_sequence(); 141} 142 143void generate_sequence() 144{ 145randomSeed(millis()); //in this way is really random!!! 146 147for (int i = 0; i < MAX_LEVEL; i++) 148{ 149sequence[i] = random(2,6); 150} 151} 152void wrong_sequence() 153{ 154for (int i = 0; i < 3; i++) 155{ 156digitalWrite(2, HIGH); 157digitalWrite(3, HIGH); 158digitalWrite(4, HIGH); 159digitalWrite(5, HIGH); 160delay(250); 161digitalWrite(2, LOW); 162digitalWrite(3, LOW); 163digitalWrite(4, LOW); 164digitalWrite(5, LOW); 165delay(250); 166} 167level = 1; 168velocity = 1000; 169} 170 171void right_sequence() 172{ 173digitalWrite(2, LOW); 174digitalWrite(3, LOW); 175digitalWrite(4, LOW); 176digitalWrite(5, LOW); 177delay(250); 178 179digitalWrite(2, HIGH); 180digitalWrite(3, HIGH); 181digitalWrite(4, HIGH); 182digitalWrite(5, HIGH); 183delay(500); 184digitalWrite(2, LOW); 185digitalWrite(3, LOW); 186digitalWrite(4, LOW); 187digitalWrite(5, LOW); 188delay(500); 189 190if (level < MAX_LEVEL); 191level++; 192 193velocity -= 50; //increase difficulty 194}
Downloadable files
Schematic 1
Schematic 1
Schematic 1
Schematic 1
Comments
Only logged in users can leave comments