Advertisement
RuiViana

Jogo_Genio_C_LigDes

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