Advertisement
Guest User

Asst

a guest
Oct 15th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.96 KB | None | 0 0
  1. #include <LiquidCrystal_SR_LCD3.h>
  2. const int PIN_LCD_STROBE = 2;
  3. const int PIN_LCD_CLOCK = 3;
  4. const int PIN_LCD_DATA = 4;
  5. int pingPin = 13;
  6. int echoPin = 12;
  7. long duration, cm;
  8.  
  9. int a=11;
  10. int b=10;
  11. int c=9;
  12. int d=8;
  13. int e=7;
  14. int f=6;
  15. int g=5;
  16.  
  17. int score = 3;
  18.  
  19. LiquidCrystal_SR_LCD3 lcd(PIN_LCD_DATA, PIN_LCD_CLOCK, PIN_LCD_STROBE );
  20.  
  21. int led = A5;
  22. int tombol = 0;
  23. String randomXOAtas = "XOXXOXOO";
  24. String randomXOBawah = "OOXXXOXO";
  25. String panah = "<";
  26. boolean startGame=false;
  27. boolean ulang=true;
  28. int statusPanah=0;
  29. char charO='O';
  30. char charX='X';
  31.  
  32. void setup() {
  33. for(int i=11; i>=5; i--){
  34. pinMode(i, OUTPUT);
  35. }
  36.  
  37. Serial.begin(9600);
  38. pinMode(led, OUTPUT);
  39. lcd.begin(16, 2);
  40. lcd.home();
  41. lcd.setCursor(0,0);
  42. lcd.print("Nama: Wahyu N.");
  43. lcd.setCursor(0,1);
  44. lcd.print("NIM: 6706160059");
  45.  
  46. Serial.println("Tekan space untuk memulai game");
  47. }
  48.  
  49. void loop() {
  50. displayScoreSevenSegment();
  51.  
  52. if(Serial.available() > 0 && startGame==false){
  53. tombol = Serial.read();
  54. if(tombol == 32){
  55. Serial.println("Space");
  56. score=3;
  57. lcd.clear();
  58. Serial.print("Game Dimulai");
  59. lcd.clear();
  60. startGame=true;
  61. ulang=true;
  62. }
  63. }
  64.  
  65. if(startGame==true){
  66. lcd.clear();
  67. while (ulang==true){
  68. runXORandom();
  69. ulang=false;
  70. }
  71. if(score>0){
  72. startGame=false;
  73. lcd.clear();
  74. lcd.setCursor(0,0);
  75. lcd.print("Your Score : ");
  76. lcd.setCursor(0,1);
  77. lcd.print(score);
  78. }
  79. if(score==0){
  80. startGame=false;
  81. lcd.clear();
  82. lcd.setCursor(0,0);
  83. lcd.print("GAME OVER!!!");
  84. }
  85.  
  86. }
  87. }
  88.  
  89. void runXORandom() {
  90. boolean tampilGame=true;
  91. int karakterAtasKe=0;
  92. int karakterBawahKe=0;
  93. boolean barisAtas=true;
  94. String karakterAtas;
  95. String karakterBawah;
  96. for (int i=1; i<=40; i++){
  97. if(score==0){
  98. startGame=true;
  99. ulang=false;
  100. loop();
  101. }else{
  102. sensorUltrasonic();
  103.  
  104. if(tampilGame==true){
  105.  
  106. if(barisAtas==true){
  107. lcd.setCursor(0,1);
  108. karakterBawah = " " + karakterBawah;
  109. lcd.print(karakterBawah);
  110. lcd.setCursor(0,0);
  111. karakterAtas = randomXOAtas[karakterAtasKe] + karakterAtas;
  112. lcd.print(karakterAtas);
  113. karakterAtasKe++;
  114. tampilGame=false;
  115. barisAtas=false;
  116. karakterBawah = " " + karakterBawah;
  117. Serial.print("Isi baris atas : ");
  118. Serial.println(randomXOAtas[karakterAtasKe]);
  119. Serial.print("Isi baris atas : ");
  120. Serial.println(" ");
  121. char randomKarakter = randomXOAtas[karakterAtasKe-3];
  122. if(statusPanah == 119){
  123. lcd.setCursor(15, 0);
  124. lcd.print(panah);
  125. lcd.setCursor(15, 1);
  126. lcd.print(" ");
  127. if(i > 8){
  128. if(randomKarakter == charO){
  129. score = score + 1;
  130. }else{
  131. score = score - 1;
  132. }
  133. }
  134. displayScoreSevenSegment();
  135. }else if(statusPanah == 115){
  136. lcd.setCursor(15, 0);
  137. lcd.print(" ");
  138. lcd.setCursor(15, 1);
  139. lcd.print(panah);
  140. }
  141. } else {
  142. lcd.setCursor(0,0);
  143. karakterAtas = " " + karakterAtas;
  144. lcd.print(karakterAtas);
  145.  
  146. lcd.setCursor(0,1);
  147. karakterBawah = randomXOBawah[karakterBawahKe] + karakterBawah;
  148. lcd.print(karakterBawah);
  149. karakterBawahKe++;
  150. tampilGame=false;
  151. barisAtas=true;
  152. karakterAtas = " " + karakterAtas;
  153. Serial.print("Isi baris bawah : ");
  154. Serial.println(randomXOBawah[karakterBawahKe]);
  155. Serial.print("Isi baris bawah : ");
  156. Serial.println(" ");
  157. char randomKarakter = randomXOBawah[karakterBawahKe-3];
  158. if(statusPanah == 119){
  159. lcd.setCursor(15, 0);
  160. lcd.print(panah);
  161. lcd.setCursor(15, 1);
  162. lcd.print(" ");
  163. }else if(statusPanah == 115){
  164. lcd.setCursor(15, 0);
  165. lcd.print(" ");
  166. lcd.setCursor(15, 1);
  167. lcd.print(panah);
  168. if(i > 8){
  169. if(randomKarakter == charO){
  170. score = score + 1;
  171. }else{
  172. score = score - 1;
  173. }
  174. }
  175. displayScoreSevenSegment();
  176. }
  177.  
  178. }
  179. buttonSW();
  180. delay(cm);
  181. } else {
  182. karakterAtas = " " + karakterAtas;
  183. karakterBawah = " " + karakterBawah;
  184. tampilGame=true;
  185. }
  186.  
  187. }
  188.  
  189. }
  190. }
  191.  
  192. void buttonSW(){
  193. if(Serial.available() > 0){
  194. tombol = Serial.read();
  195. Serial.print("Input Keyboard : ");
  196. switch(tombol){
  197. case 119:
  198. Serial.println("w");
  199. lcd.setCursor(15, 0);
  200. lcd.print(panah);
  201. lcd.setCursor(15, 1);
  202. lcd.print(" ");
  203. statusPanah = 119;
  204. break;
  205. case 115:
  206. Serial.println("s");
  207. lcd.setCursor(15, 0);
  208. lcd.print(" ");
  209. lcd.setCursor(15, 1);
  210. lcd.print(panah);
  211. statusPanah = 115;
  212. break;
  213. }
  214. }
  215. }
  216.  
  217. void displayScoreSevenSegment(){
  218. if (score==0){
  219. digitalWrite(a,HIGH);
  220. digitalWrite(b,HIGH);
  221. digitalWrite(c,HIGH);
  222. digitalWrite(d,HIGH);
  223. digitalWrite(e,HIGH);
  224. digitalWrite(f,HIGH);
  225. digitalWrite(g,LOW);
  226. }if (score==1){
  227. digitalWrite(a,LOW);
  228. digitalWrite(b,HIGH);
  229. digitalWrite(c,HIGH);
  230. digitalWrite(d,LOW);
  231. digitalWrite(e,LOW);
  232. digitalWrite(f,LOW);
  233. digitalWrite(g,LOW);
  234. }if (score==2){
  235. digitalWrite(a,HIGH);
  236. digitalWrite(b,HIGH);
  237. digitalWrite(c,LOW);
  238. digitalWrite(d,HIGH);
  239. digitalWrite(e,HIGH);
  240. digitalWrite(f,LOW);
  241. digitalWrite(g,HIGH);
  242. }if (score==3){
  243. digitalWrite(a,HIGH);
  244. digitalWrite(b,HIGH);
  245. digitalWrite(c,HIGH);
  246. digitalWrite(d,HIGH);
  247. digitalWrite(e,LOW);
  248. digitalWrite(f,LOW);
  249. digitalWrite(g,HIGH);
  250. }if (score==4){
  251. digitalWrite(a,LOW);
  252. digitalWrite(b,HIGH);
  253. digitalWrite(c,HIGH);
  254. digitalWrite(d,LOW);
  255. digitalWrite(e,LOW);
  256. digitalWrite(f,HIGH);
  257. digitalWrite(g,HIGH);
  258. }if (score==5){
  259. digitalWrite(a,HIGH);
  260. digitalWrite(b,LOW);
  261. digitalWrite(c,HIGH);
  262. digitalWrite(d,HIGH);
  263. digitalWrite(e,LOW);
  264. digitalWrite(f,HIGH);
  265. digitalWrite(g,HIGH);
  266. }if (score==6){
  267. digitalWrite(a,HIGH);
  268. digitalWrite(b,LOW);
  269. digitalWrite(c,HIGH);
  270. digitalWrite(d,HIGH);
  271. digitalWrite(e,HIGH);
  272. digitalWrite(f,HIGH);
  273. digitalWrite(g,HIGH);
  274. }if (score==7){
  275. digitalWrite(a,HIGH);
  276. digitalWrite(b,HIGH);
  277. digitalWrite(c,HIGH);
  278. digitalWrite(d,LOW);
  279. digitalWrite(e,LOW);
  280. digitalWrite(f,LOW);
  281. digitalWrite(g,LOW);
  282. }if (score==8){
  283. digitalWrite(a,HIGH);
  284. digitalWrite(b,HIGH);
  285. digitalWrite(c,HIGH);
  286. digitalWrite(d,HIGH);
  287. digitalWrite(e,HIGH);
  288. digitalWrite(f,HIGH);
  289. digitalWrite(g,HIGH);
  290. }if (score==9){
  291. digitalWrite(a,HIGH);
  292. digitalWrite(b,HIGH);
  293. digitalWrite(c,HIGH);
  294. digitalWrite(d,HIGH);
  295. digitalWrite(e,LOW);
  296. digitalWrite(f,HIGH);
  297. digitalWrite(g,HIGH);
  298. }
  299. }
  300.  
  301. void sensorUltrasonic(){
  302. pinMode(pingPin,OUTPUT);
  303. digitalWrite(pingPin,LOW);
  304. delayMicroseconds(2);
  305. digitalWrite(pingPin,HIGH);
  306. delayMicroseconds(10);
  307. digitalWrite(pingPin,LOW);
  308. pinMode(echoPin, INPUT);
  309. duration = pulseIn(echoPin, HIGH); cm =
  310. microsecondsToCentimeters(duration);
  311.  
  312. if(cm < 400){
  313. digitalWrite(led, HIGH);
  314. } else {
  315. digitalWrite(led, LOW);
  316. }
  317. }
  318.  
  319. long microsecondsToCentimeters(long microseconds) {
  320. return microseconds / 29 / 2;
  321. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement