Bilder Upload
Follow Me!
#1

Arduino-SIMON Game-LEDs funken nicht ganz richtig

in Fortgeschrittene 09.08.2011 16:26
von Kamikatze
avatar

Hallo Leute,
arbeite gerade daran das Spiel SIMON (Senso) mit Arduino nachzubauen. (für alle die nicht wissen was ich mein, bitte hier guggen: http://de.wikipedia.org/wiki/Senso_%28Spiel%29)

Hier mal der Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
 
int switch1 = 11;
int switch2 = 10;
int switch3= 9;
int switch4 = 8;
 
int led1= 5;
int led2 = 4;
int led3= 3;
int led4= 2;
int turn = 0;
int input1= LOW;
int input2= LOW;
int input3= LOW;
int input4 = LOW;
 
int randomArray[100]; //Intentionally long to store up to 100 inputs (doubtful anyone will get this far)
int inputArray[100];
 
void setup() {
 
Serial.begin(9600);
 
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(switch1, INPUT);
pinMode(switch2, INPUT);
pinMode(switch3, INPUT);
pinMode(switch4, INPUT);
randomSeed(analogRead(0)); //Added to generate "more randomness" with the randomArray for the output function
 
for (int y=0; y<=99; y++){ //For statement to loop through the output and input functions
output();
input();
}
 
}

void output() { //function for generating the array to be matched by the player

for (int y=turn; y <= turn; y++){ //Limited by the turn variable
Serial.println(""); //Some serial output to follow along
Serial.print("Turn: ");
Serial.print(y);
Serial.println("");
randomArray[y] = random(1, 5); //Assigning a random number (1-4) to the randomArray[y], y being the turn count
for (int x=0; x <= turn; x++){
 
Serial.print(randomArray[x]);
 
if (randomArray[x] == 1) { //if statements to display the stored values in the array
digitalWrite(led1, HIGH);
delay(500);
digitalWrite(led1, LOW);
delay(100);
}
 
if (randomArray[x] == 2) {
digitalWrite(led2, HIGH);
delay(500);
digitalWrite(led2, LOW);
delay(100);
}
 
if (randomArray[x] == 3) {
digitalWrite(led3, HIGH);
delay(500);
digitalWrite(led3, LOW);
delay(100);
}
 
if (randomArray[x] == 4) {
digitalWrite(led4, HIGH);
delay(500);
digitalWrite(led4, LOW);
delay(100);
}
}
}
}



void input() { //Function for allowing user input and checking input against the generated array
 
for (int x=0; x <= turn;){ //Statement controlled by turn count
input1 = digitalRead(switch1);
input2 = digitalRead(switch2);
input3 = digitalRead(switch3);
input4 = digitalRead(switch4);
 
if (input1 == HIGH){ //Checking for button push
digitalWrite(led1, HIGH);
delay(200);
digitalWrite(led1, LOW);
inputArray[x] = 1;
delay(50);
Serial.print(" ");
Serial.print(1);
if (inputArray[x] != randomArray[x]) { //Checks value input by user and checks it against
fail(); //the value in the same spot on the generated array
} //The fail function is called if it does not match
x++;
}
 
if (input2 == HIGH){
digitalWrite(led2, HIGH);
delay(200);
digitalWrite(led2, LOW);
inputArray[x] = 2;
delay(50);
Serial.print(" ");
Serial.print(2);
if (inputArray[x] != randomArray[x]) {
fail();
}
x++;
 
}
 
if (input3 == HIGH){
digitalWrite(led3, HIGH);
delay(200);
digitalWrite(led3, LOW);
inputArray[x] = 3;
delay(50);
Serial.print(" ");
Serial.print(3);
if (inputArray[x] != randomArray[x]) {
fail();
}
x++;
 
}
 
if (input4 == HIGH){
 
digitalWrite(led4, HIGH);
delay(200);
digitalWrite(led4, LOW);
inputArray[x] = 4;
delay(50);
Serial.print(" ");
Serial.print(4);
if (inputArray[x] != randomArray[x]) {
fail();
}
x++;
 
}
}
delay(500);
turn++; //Increments the turn count, also the last action before starting the output function over again
}
 
void fail() { //Function used if the player fails to match the sequence

for (int y=0; y<=5; y++){ //Flashes lights for failure
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
delay(200);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
delay(200);
}
delay(500);
turn = -1; //Resets turn value so the game starts over without need for a reset button
}
 
void loop() { //Unused void loop(), though for some reason it doesn't compile without this /shrug
}
 
 



Soweit sogut, wenn ich nun den Code auf das Board lade, dann drehen die LEDS durch. zuerst leuchten eine oder zwei kurz auf, dann leuchten alle vier so als hätte man einen Fehler gemacht, aber ich komm ja net mal zum button drücken bzw. wenn ich se drücke passiert nix. Was mach ich falsch??
Auf dem angehängten Bild seht ihr wie ich das zusammengestackt hab (Info: bei den Leds hängt bei jeder noch ein 220 Ohm Wiederstand dran, die sind auf dem Bild noch net drauf)

Angefügte Bilder:
simon.jpg
nach oben springen

#2

RE: Arduino-SIMON Game-LEDs funken nicht ganz richtig

in Fortgeschrittene 09.08.2011 16:29
von Kamikatze
avatar

noch zur info: das game soll so funktionieren das zuerst eine LED aufleuchtet dann drückt man einen button, wenn man den richtigen drückt geht es weiter, dh. es leuchten dann zwei Leds hintereinander auf usw. Drückt man falsch blinken alle LEDs und es geht von vorne los. Also so wie das typische SIMON Game.

nach oben springen

#3

RE: Arduino-SIMON Game-LEDs funken nicht ganz richtig

in Fortgeschrittene 21.11.2011 18:47
von Andreas
avatar

Hi, ich bin ja eigentlich erst Anfänger. Abeer wenn ich deine Schaltung anschaue sehe ich, das du die Masse (GND) der Schalter nicht auf der digitalen Seite benutzt und wozu gibst du deinen Schaltern 5V!? Wenn ich es richtig verstanden habe werden doch die Taster einfach über die digitalen Punkte ausgelesen und dann die LED geschaltet, wozu also 5V für die Schalter? Und müßten die Widerstände nicht vor die LED gesetzt werden, die Spannung kommt ja nicht von den Schaltern, sondern direkt aus der Arduino. Ich hoffe ich habe mich richtig ausgedrückt.

gruss

Andreas

nach oben springen

#4

RE: Arduino-SIMON Game-LEDs funken nicht ganz richtig

in Fortgeschrittene 06.12.2011 17:12
von Andreas
avatar

hi,
mein erster tip war vollkommen daneben wie ich jetzt gemerkt habe. aber hier ist noch einer. wen ich dein progi richtig verstanden habe, stimmen die pins bei der zuweisung nicht mit deinem hardwareaufbau zusammen. die led sind an den hohen pins 13,12,11,10 und die schalter an den kleineren, im progi weißt du ihen die pins aber umgekehrt zu. ich denke das könnte der fehler sein oder?

gruß

Andreas

nach oben springen


Besucher
0 Mitglieder und 1 Gast sind Online

Wir begrüßen unser neuestes Mitglied: hobbit23
Forum Statistiken
Das Forum hat 139 Themen und 222 Beiträge.

Xobor Forum Software von Xobor.de
Einfach ein Forum erstellen