daily pastebin goal
52%
SHARE
TWEET

Asst

a guest Oct 15th, 2018 68 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top