Advertisement
RuiViana

Jogo_Genio

Jan 7th, 2016
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.10 KB | None | 0 0
  1. #define buzzer 3 // declaracao de variaveis (buzzer; pinos de leds; pinos de botoes;)
  2.  
  3. #define led_red 4
  4. #define led_yellow 5
  5. #define led_green 6
  6. #define led_blue 7
  7.  
  8. #define botao_1 8
  9. #define botao_2 9
  10. #define botao_3 10
  11. #define botao_4 11
  12.  
  13. byte JogoNovo = 0; // Para mostrar o ledes picando uma vez só
  14.  
  15. int sequencia[10]; //declaracao da quantidade sequencial;
  16. int contador_jogo = 0; //contador para jogo;
  17. int contador_botao = 0; //contador para botao;
  18. boolean jogo = true; //variavel booleana que so assume valor verdadeiro ou falso;
  19.  
  20. //-----------------------------------------
  21. void setup() //declaracao de entradas e saidas da protoboard;
  22. {
  23. Serial.begin(9600);
  24. pinMode (buzzer, OUTPUT);
  25.  
  26. pinMode (led_red, OUTPUT);
  27. pinMode (led_yellow, OUTPUT);
  28. pinMode (led_green, OUTPUT);
  29. pinMode (led_blue, OUTPUT);
  30.  
  31. pinMode (botao_1, INPUT_PULLUP);
  32. pinMode (botao_2, INPUT_PULLUP);
  33. pinMode (botao_3, INPUT_PULLUP);
  34. pinMode (botao_4, INPUT_PULLUP);
  35.  
  36. randomSeed(analogRead(0)); // gera numeros mais aleatorios pois utiliza ponto-flutuante, no caso o pino 0 está desconectado;
  37. }
  38. //----------------------------------------
  39. void loop() //declaracao do laco a ser executado pelo loop;
  40. {
  41. while (JogoNovo == 0)
  42. {
  43. inicio (); // zera contadores e confirma que jogo esteja em true (verdadeiro) para começar.
  44. pisca();
  45. delay(100);
  46. pause(); // pausa e confirma todos os leds desligados;
  47. delay(500);
  48. JogoNovo = 1;
  49. }
  50. if (jogo == true) // condicional para inicio do jogo;
  51. {
  52. funcao_randomica ();
  53. delay(100);
  54. }
  55. else
  56. {
  57. espera_botao ();
  58. }
  59. }
  60. //----------------------------------------
  61. // bloco que realiza sorteio dos leds;
  62. void funcao_randomica ()
  63. {
  64. jogo = false;
  65. sequencia[contador_jogo] = random (4); // numero randomico é incrementado na variavel sequencia, com indicador determinado pelo contador_jogo;
  66.  
  67. // cada numero armazenado corresponde a uma cor de led, que é definida na condicional "if" / se ; Ao entrar numa condicional, ele chama a funcao (pisca_leds) corresponde a cor;
  68. for ( int i = 0; i <= contador_jogo; i++)
  69. {
  70. if (sequencia[i] == 0) // de 0 a 3 e não de 1 a 4
  71. {
  72. pisca_red();
  73. delay(200);
  74. }
  75. else
  76. {
  77. if (sequencia[i] == 1)
  78. {
  79. pisca_yellow();
  80. delay(200);
  81. }
  82. else
  83. {
  84. if (sequencia[i] == 2)
  85. {
  86. pisca_green(); // tava trocado co o proximo
  87. delay(200);
  88. }
  89. else
  90. {
  91. if (sequencia[i] == 3)
  92. {
  93. pisca_blue();
  94. delay(200);
  95. }
  96. delay(100);
  97. }
  98. }
  99. }
  100. }
  101. for (int j = 0; j < (contador_jogo+1); j++)
  102. {
  103. Serial.print(sequencia[j]);
  104. Serial.print(" ");
  105. }
  106. Serial.print("\n\r");
  107. contador_jogo ++;
  108. }
  109. // bloco que espera jogada do jogador;
  110. //----------------------------------------
  111. void espera_botao () //recebe botoes pressionados pelo jogador;
  112. {
  113. for (byte repeticao = 0; repeticao <contador_jogo; repeticao++)
  114. {
  115. int botok = 0 ;
  116. while (botok == 0) // Flag pra saber se apertou botão
  117. {
  118. int input = 0;
  119. int BotApertado = 0;
  120. while(BotApertado == 0)
  121. {
  122. if (digitalRead(botao_1) == LOW)
  123. {
  124. BotApertado = 1;
  125. botok = 1;
  126. pisca_red();
  127. input = 0;
  128. }
  129. if (digitalRead(botao_2) == LOW)
  130. {
  131. BotApertado = 1;
  132. botok = 1;
  133. pisca_yellow ();
  134. input = 1;
  135. }
  136. if (digitalRead(botao_3) == LOW)
  137. {
  138. BotApertado = 1;
  139. botok = 1;
  140. pisca_green ();
  141. input = 2;
  142. }
  143. if (digitalRead(botao_4) == LOW)
  144. {
  145. BotApertado = 1;
  146. botok = 1;
  147. pisca_blue ();
  148. input = 3;
  149. }
  150. }
  151. if ( sequencia[repeticao] != input)
  152. {
  153. delay(300);
  154. pisca_errou(8, 150);
  155. delay (3000);
  156. inicio();
  157. }
  158. }
  159. }
  160. jogo = true;
  161. }
  162. //----------------------------------------
  163. void sound_red() // foi passado parametro para que ficasse mais legivel o codigo, no caso o sound_red, utiliza paramentro do led_red. Quando ligado, chama a funcao sound_red;
  164. {
  165. tone(buzzer, 262); //DO // incrementa-se o comando "Tone" indicando qual variavel ta sendo usado o som (no caso, buzzer), e qual a frequencia deve ser emitida;
  166. delay (180); // para desliga-lo basta digitar "notone" seguido do nome da variavel do som (buzzer);
  167. noTone (buzzer);
  168. }
  169. //-------------------------------------------------
  170. void sound_yellow()
  171. {
  172. tone(buzzer, 294); //RE
  173. delay (180);
  174. noTone (buzzer);
  175. }
  176. //-------------------------------------------------
  177. void sound_green()
  178. {
  179. tone(buzzer, 349); //FA
  180. delay (180);
  181. noTone (buzzer);
  182. }
  183. //-------------------------------------------------
  184. void sound_blue()
  185. {
  186. tone(buzzer, 330); //MI
  187. delay (180);
  188. noTone (buzzer);
  189. }
  190. //----------------------------------------
  191. void pisca_errou (int qtd, int t) {
  192.  
  193. for (int y = 1; y <= qtd; y++) {
  194.  
  195. digitalWrite (led_red, HIGH);
  196. sound_red ();
  197. digitalWrite (led_yellow, HIGH);
  198. sound_yellow ();
  199. digitalWrite (led_green, HIGH);
  200. sound_green ();
  201. digitalWrite (led_blue, HIGH);
  202. sound_blue ();
  203. delay (100);
  204. digitalWrite (led_red, LOW);
  205. digitalWrite (led_yellow, LOW);
  206. digitalWrite (led_green, LOW);
  207. digitalWrite (led_blue, LOW);
  208. delay (80);
  209. }
  210. }
  211. //----------------------------------------
  212. // bloco para comandos repetidos de pisca leds; utilizados na hora de apertar o botão e no sorteio do randomico;
  213. void pisca_red ()
  214. {
  215. digitalWrite (led_red, HIGH);
  216. delay(100);
  217. sound_red ();
  218. digitalWrite (led_red, LOW);
  219. }
  220. //-----------------------------------------------------
  221. void pisca_yellow ()
  222. {
  223. digitalWrite (led_yellow, HIGH);
  224. delay(100);
  225. sound_yellow ();
  226. digitalWrite (led_yellow, LOW);
  227. }
  228. //-----------------------------------------------------
  229. void pisca_green ()
  230. {
  231. digitalWrite (led_green, HIGH);
  232. delay(100);
  233. sound_green ();
  234. digitalWrite (led_green, LOW);
  235. }
  236. //-----------------------------------------------------
  237. void pisca_blue ()
  238. {
  239. digitalWrite (led_blue, HIGH);
  240. delay(100);
  241. sound_blue ();
  242. digitalWrite (led_blue, LOW);
  243. }
  244. //----------------------------------------
  245. void inicio()
  246. {
  247. contador_jogo = 0;
  248. contador_botao = 0;
  249. jogo = true;
  250. }
  251. //bloco para comando ao iniciar jogo quando rodada = 0;
  252. //----------------------------------------
  253. void pisca()
  254. {
  255. digitalWrite (led_red, HIGH);
  256. sound_red ();
  257. digitalWrite (led_yellow, LOW);
  258. digitalWrite (led_green, LOW);
  259. digitalWrite (led_blue, LOW);
  260.  
  261. digitalWrite (led_red, LOW);
  262. digitalWrite (led_yellow, HIGH);
  263. sound_yellow ();
  264. digitalWrite (led_green, LOW);
  265. digitalWrite (led_blue, LOW);
  266.  
  267. digitalWrite (led_red, LOW);
  268. digitalWrite (led_yellow, LOW);
  269. digitalWrite (led_green, HIGH);
  270. sound_green ();
  271. digitalWrite (led_blue, LOW);
  272.  
  273. digitalWrite (led_red, LOW);
  274. digitalWrite (led_yellow, LOW);
  275. digitalWrite (led_green, LOW);
  276. digitalWrite (led_blue, HIGH);
  277. sound_blue ();
  278.  
  279. digitalWrite (led_red, LOW);
  280. digitalWrite (led_yellow, LOW);
  281. digitalWrite (led_green, HIGH);
  282. sound_green ();
  283. digitalWrite (led_blue, LOW);
  284.  
  285. digitalWrite (led_red, LOW);
  286. digitalWrite (led_yellow, HIGH);
  287. sound_yellow ();
  288. digitalWrite (led_green, LOW);
  289. digitalWrite (led_blue, LOW);
  290.  
  291. digitalWrite (led_red, HIGH);
  292. sound_red ();
  293. digitalWrite (led_yellow, LOW);
  294. digitalWrite (led_green, LOW);
  295. digitalWrite (led_blue, LOW);
  296.  
  297. digitalWrite (led_red, LOW);
  298. digitalWrite (led_yellow, LOW);
  299. digitalWrite (led_green, LOW);
  300. digitalWrite (led_blue, LOW);
  301. delay (80);
  302. digitalWrite (led_red, HIGH);
  303. sound_red ();
  304. digitalWrite (led_yellow, HIGH);
  305. sound_yellow ();
  306. digitalWrite (led_green, HIGH);
  307. sound_green ();
  308. digitalWrite (led_blue, HIGH);
  309. sound_blue ();
  310. }
  311. //bloco para dar uma pausa durante os programas e confirmar todos os leds desligados;
  312. //----------------------------------------
  313. void pause ()
  314. {
  315. digitalWrite (led_red, LOW);
  316. digitalWrite (led_yellow, LOW);
  317. digitalWrite (led_green, LOW);
  318. digitalWrite (led_blue, LOW);
  319. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement