Untitled

 avatar
unknown
plain_text
9 months ago
4.5 kB
15
Indexable
#include <Arduino.h> 
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <OneButton.h>
#include <ezButton.h>

int player=0;
const int buttonPin_red = 16;
const int buttonPin_black = 17;   // Button on GPIO 4
ezButton button_red(buttonPin_red);
ezButton button_black(buttonPin_black);
#define BUTTON_PIN_RED 16
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET     4 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
int a=0;
int b=0;
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void blinkCursor(unsigned long blinkInterval) {
  static unsigned long lastBlink = 0;
  static bool cursorState = false;
  unsigned long currentMillis = millis();

  // Check if it's time to toggle the cursor
  if (currentMillis - lastBlink >= blinkInterval) {
    cursorState = !cursorState; // Toggle cursor state
    lastBlink = currentMillis;

    // Get current cursor position
    int x = display.getCursorX();
    int y = display.getCursorY();

    // Set a single pixel at the cursor position
    display.drawPixel(x, y, cursorState ? SSD1306_WHITE : SSD1306_BLACK);
    display.display(); // Update the display
  }
}
void register_black(){
  button_black.loop();
if (button_black.isPressed()){
   a=display.getCursorX();
  b=display.getCursorY();
  if (player==0){
  display.println("X");
  player=1;
  display.display();
  display.setCursor(0,0);   
  display.setTextColor(WHITE,BLACK);          // Start at top-left corner
  display.println(("PLAYER O"));
  display.display();
  display.setCursor(22,16);
}
else if(player==1){
  display.println("O");
  player=0;
  display.display();
  
  display.setCursor(0,0);     
  display.setTextColor(WHITE,BLACK);        // Start at top-left corner
  display.println(("PLAYER X"));
  display.display();
  display.setCursor(22,16);
}
}
}
void updatedisplay(){
//   for(int i=0;i<120;i++){
//     display.setCursor(i,27);
// // display.print("-");

// display.display();
//   }
  display.drawLine(0,27,126, 27, WHITE);
//   for(int i=0;i<120;i++){
//     display.setCursor(i,45);
// display.print("-");
// display.display();
//   }
display.drawLine(0,45,126, 45, WHITE);
//   for(int i=10;i<64;i++){
//     display.setCursor(43,i);
// display.print("|");
// display.display();
// }
display.drawLine(43,0,43, 62, WHITE);
// for(int i=10;i<64;i++){
//     display.setCursor(86,i);
// display.print("|");
// display.display();
// }
display.drawLine(86,0,86, 62, WHITE);
display.display();
display.setCursor(22, 16);//(1,1)
}
void movecursor_red(){
  button_red.loop();
  


  if (button_red.isPressed()) {
   
    if(display.getCursorX()<106){
    Serial.println("The state changed from LOW to HIGH");
   display.setCursor(display.getCursorX()+42,display.getCursorY());
   Serial.print(display.getCursorX());
   Serial.println(display.getCursorY());
   
   
    }
    else if(display.getCursorX()==106 && display.getCursorY()!=56){
      display.setCursor(display.getCursorX()-84,display.getCursorY()+20);
   Serial.print(display.getCursorX());

         Serial.println(display.getCursorY());
    
    }
    else if(display.getCursorX()==106 && display.getCursorY()==56){
      display.setCursor(22,16);
      Serial.print(display.getCursorX());
   Serial.println(display.getCursorY());
    }
  }
  // save the last state
}

void setup() {
  Serial.begin(9600);
  if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);                          // Don't proceed, loop forever
  }
  delay(2000);                       // Pause for 2 seconds
  display.clearDisplay();
  display.setTextSize(1);             // Normal 1:1 pixel scale
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(0,0);             // Start at top-left corner
  display.println(("PLAYER X"));
  display.display();// Draw white text
  
  float a= display.getCursorX();
  float b= display.getCursorY();

  Serial.println(a);
  Serial.println(b);
  delay(2000);
  updatedisplay();
  button_red.setDebounceTime(10);
  button_black.setDebounceTime(10);
}

void loop() {
  blinkCursor(500);
  movecursor_red();
  register_black();
  
}

Editor is loading...
Leave a Comment