Advertisement
Guest User

Untitled

a guest
Oct 6th, 2014
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.33 KB | None | 0 0
  1. #include <Wire.h>
  2. #include <LiquidCrystal_I2C.h>
  3.  
  4. LiquidCrystal_I2C lcd(0x20,16,2); // set the LCD address to 0x20(Cooperate with 3 short circuit caps) for a 16 chars and 2 line display
  5.  
  6. //indication des variables globales
  7.  
  8.  
  9. const int rouge_bouton = 2; //le bouton rouge est connecté à l'entrée 2
  10. const int rouge_led = 3; //la LED rouge est connectée à l'entrée 3
  11. const int vert_bouton = 8;
  12. const int vert_led = 9;
  13. const int bleu_bouton = 11;
  14. const int bleu_led = 12;
  15.  
  16. long vert_temps = 0;
  17. long vert_temps_minutes = 0;
  18. long vert_temps_secondes = 0;
  19.  
  20. long rouge_temps = 0;
  21. long rouge_temps_minutes = 0;
  22. long rouge_temps_secondes = 0;
  23.  
  24. boolean appui = 0;
  25. boolean basculement = 0;
  26. boolean en_partie = 0;
  27.  
  28. int decompte = 3000; //decompte lors du changement de camp
  29.  
  30. int static camp_actuel = 0; //0 = neutre, 1=vert, 2 = rouge
  31. int static camp_precedent = 0; //0 = neutre, 1=vert, 2 = rouge
  32. String toto="";
  33.  
  34. void setup()
  35. // initialise les entrée et sorties
  36. {
  37. pinMode(rouge_led, OUTPUT); //la led est une sortie
  38. pinMode(rouge_bouton, INPUT); //le bouton est une entrée
  39.  
  40. pinMode(vert_led, OUTPUT);
  41. pinMode(vert_bouton, INPUT);
  42.  
  43. pinMode(bleu_led, OUTPUT);
  44. pinMode(bleu_bouton, INPUT);
  45.  
  46. //GESTION DE L'ECRAN LCD//
  47. lcd.init();
  48. lcd.backlight();
  49.  
  50. lcd.home();
  51.  
  52. lcd.setCursor(2, 0);
  53. lcd.print("La Sabliere");
  54. lcd.setCursor(1, 1);
  55. lcd.print("Mode CONQUETE");
  56. }
  57.  
  58. void loop()
  59. {
  60. /* Variables locales de gestion du temps */
  61. static unsigned long temps_precedent = 0; // Temps antérieur
  62. static unsigned long temps_appui = 0; // Temps lors de l'appui sur un bouton
  63. unsigned long temps_actuel = millis(); // Temps actuel
  64.  
  65. if (temps_actuel - temps_precedent >= 1000) //on réalise un tour par seconde
  66. {
  67.  
  68. if (en_partie ==0)
  69. {
  70. digitalWrite(bleu_led,LOW);
  71. digitalWrite(vert_led,HIGH);
  72. digitalWrite(rouge_led,HIGH);
  73.  
  74. if (digitalRead(bleu_bouton) == LOW)
  75. {
  76. delay (3000);
  77. if (digitalRead(bleu_bouton) == LOW)
  78. {
  79. en_partie = 1;
  80. vert_temps = 0;
  81. rouge_temps = 0;
  82.  
  83. toto = "vert_led";
  84. digitalWrite(toto,LOW); //extinction de la lampe verte
  85. digitalWrite(rouge_led,LOW); //extinction de la lampe rouge
  86.  
  87. basculement = 0;
  88. camp_actuel = 0;
  89. appui = 0;
  90.  
  91. lcd.clear();
  92. lcd.setCursor(4, 0);
  93. lcd.print("OBJECTIF");
  94. lcd.setCursor(5, 1);
  95. lcd.print("NEUTRE");
  96. }
  97. }
  98.  
  99. if(digitalRead(vert_bouton) == LOW)
  100. {
  101. lcd.clear();
  102. lcd.setCursor(1, 0);
  103. lcd.print("Temps.Eq.VERTE");
  104. lcd.setCursor(5, 1);
  105. lcd.print(vert_temps_minutes);
  106. lcd.print("min");
  107. lcd.print(vert_temps_secondes);
  108. lcd.print("s");
  109. }
  110. if(digitalRead(rouge_bouton) == LOW)
  111. {
  112. lcd.clear();
  113. lcd.setCursor(1, 0);
  114. lcd.print("Temps.Eq.ROUGE");
  115. lcd.setCursor(5, 1);
  116. lcd.print(rouge_temps_minutes);
  117. lcd.print("min");
  118. lcd.print(rouge_temps_secondes);
  119. lcd.print("s");
  120. }
  121. }
  122.  
  123. if (en_partie == 1)
  124. {
  125. digitalWrite(bleu_led,HIGH);
  126.  
  127. if (digitalRead(vert_bouton) != LOW && digitalRead(rouge_bouton) != LOW && digitalRead(bleu_bouton) != LOW) //si aucun des boutons n'est appuyé, on réinitialise l'appui et l'affichage du décompte
  128. {
  129. appui = 0;
  130. lcd.setCursor(15, 0);
  131. lcd.print(" ");
  132. }
  133.  
  134. if (digitalRead(bleu_bouton) == LOW)
  135. {
  136. delay (3000);
  137. if (digitalRead(bleu_bouton) == LOW)
  138. {
  139. en_partie = 0;
  140.  
  141. lcd.clear();
  142. lcd.setCursor(2, 0);
  143. lcd.print("La Sabliere");
  144. lcd.setCursor(1, 1);
  145. lcd.print("Mode CONQUETE");
  146. }
  147. }
  148.  
  149. //***GESTION DES BOUTONS DE CHANGEMENT DE CAMP***//
  150.  
  151. //CAMP NEUTRE
  152. if(camp_actuel == 2 && digitalRead(vert_bouton) == LOW && digitalRead(rouge_bouton) != LOW || camp_actuel == 1 && digitalRead(rouge_bouton) == LOW && digitalRead(vert_bouton) != LOW )
  153. {
  154. if (appui == 0)
  155. {
  156. appui = 1;
  157. temps_appui = temps_actuel;
  158. }
  159. if (temps_actuel < temps_appui + decompte)
  160. {
  161. lcd.setCursor(15, 0);
  162. lcd.print((temps_appui + decompte - temps_actuel)/1000);
  163. }
  164. else if((temps_actuel > temps_appui + decompte) && appui==1 )
  165. {
  166. digitalWrite(vert_led,LOW); //extinction de la lampe verte
  167. digitalWrite(rouge_led,LOW); //extinction de la lampe rouge
  168.  
  169. basculement = 0;
  170. camp_actuel = 0;
  171. appui = 0;
  172.  
  173. lcd.clear();
  174. lcd.setCursor(4, 0);
  175. lcd.print("OBJECTIF");
  176. lcd.setCursor(5, 1);
  177. lcd.print("NEUTRE");
  178. }
  179. }
  180.  
  181. //CAMP VERT
  182.  
  183. else if(camp_actuel != 1 && digitalRead(vert_bouton) == LOW && digitalRead(rouge_bouton) != LOW && camp_actuel ==0)
  184. {
  185. if (appui == 0)
  186. {
  187. appui = 1;
  188. temps_appui = temps_actuel;
  189. }
  190. if (temps_actuel < temps_appui + decompte)
  191. {
  192. lcd.setCursor(15, 0);
  193. lcd.print((temps_appui + decompte - temps_actuel)/1000);
  194. }
  195. else if((temps_actuel >= temps_appui + decompte) && appui ==1)
  196. {
  197. basculement = 0;
  198. camp_actuel = 1;
  199. appui = 0;
  200.  
  201. digitalWrite(vert_led,HIGH);
  202. digitalWrite(rouge_led,LOW);
  203.  
  204. lcd.clear();
  205. lcd.setCursor(2, 0);
  206. lcd.print("Equipe VERTE");
  207. }
  208. }
  209.  
  210. //CAMP ROUGE
  211.  
  212. if(camp_actuel != 2 && digitalRead(vert_bouton) != LOW && digitalRead(rouge_bouton) == LOW && camp_actuel ==0)
  213. {
  214. if (appui == 0)
  215. {
  216. appui = 1;
  217. temps_appui = temps_actuel;
  218. }
  219. if (temps_actuel < temps_appui + decompte)
  220. {
  221. lcd.setCursor(15, 0);
  222. lcd.print((temps_appui + decompte - temps_actuel)/1000);
  223. }
  224. else if((temps_actuel >= temps_appui + decompte) && appui ==1)
  225. {
  226. basculement = 0;
  227. camp_actuel = 2;
  228. appui = 0;
  229.  
  230. digitalWrite(vert_led,LOW);
  231. digitalWrite(rouge_led,HIGH);
  232.  
  233. //rouge_temps = rouge_temps;
  234.  
  235. lcd.clear();
  236. lcd.setCursor(2, 0);
  237. lcd.print("Equipe ROUGE");
  238. }
  239. }
  240.  
  241. //***GESTION DU TEMPS***//
  242. //CAMP VERT
  243.  
  244. if (camp_actuel==1 && digitalRead(bleu_bouton) != LOW)
  245. {
  246. if (basculement == 0)
  247. {
  248. basculement = 1;
  249. }
  250. else
  251. {
  252. vert_temps = vert_temps +1;
  253. }
  254. if (vert_temps%60==0)
  255. {
  256. vert_temps_minutes = vert_temps/60;
  257. lcd.clear();
  258. lcd.setCursor(2, 0);
  259. lcd.print("Equipe VERTE");
  260. }
  261.  
  262. vert_temps_secondes = vert_temps - vert_temps_minutes * 60;
  263.  
  264. lcd.setCursor(5, 1);
  265. lcd.print(vert_temps_minutes);
  266. lcd.print("min");
  267. lcd.print(vert_temps_secondes);
  268. lcd.print("s");
  269. }
  270.  
  271. //CAMP ROUGE
  272.  
  273. if (camp_actuel==2 && digitalRead(bleu_bouton) != LOW)
  274. {
  275. if (basculement == 0)
  276. {
  277. basculement = 1;
  278. }
  279. else
  280. {
  281. rouge_temps = rouge_temps +1;
  282. }
  283.  
  284. if (rouge_temps%60==0)
  285. {
  286. rouge_temps_minutes = rouge_temps/60;
  287. lcd.clear();
  288. lcd.setCursor(2, 0);
  289. lcd.print("Equipe ROUGE");
  290. }
  291.  
  292. rouge_temps_secondes = rouge_temps - rouge_temps_minutes * 60;
  293.  
  294. lcd.setCursor(5, 1);
  295. lcd.print(rouge_temps_minutes);
  296. lcd.print("min");
  297. lcd.print(rouge_temps_secondes);
  298. lcd.print("s");
  299. }
  300.  
  301. temps_precedent = temps_actuel;
  302. }
  303. }
  304. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement