Untitled
unknown
plain_text
9 months ago
4.5 kB
13
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