Įrašo turinys
# include <SPI.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_MOSI 11 #define OLED_CLK 13 #define OLED_DC 9 #define OLED_CS 10 #define OLED_RESET 8 #define TOUCH_PIN 5 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); int mode = 0; bool lastTouch = LOW; int starX[10] = {10,20,30,40,60,80,100,110,120,50}; int starY[10] = {5,15,25,10,20,8,18,12,6,30}; void setup() { pinMode(TOUCH_PIN, INPUT); display.begin(SSD1306_SWITCHCAPVCC); display.clearDisplay(); randomSeed(analogRead(0)); } void loop() { bool currentTouch = digitalRead(TOUCH_PIN); // Tugma bosilganda rejim o'zgaradi if (currentTouch == HIGH && lastTouch == LOW) { mode++; if (mode > 2) mode = 0; delay(300); // debounce } lastTouch = currentTouch; if (mode == 0) showGreeting(); if (mode == 1) showMoon(); if (mode == 2) showRobo(); } void showGreeting() { display.clearDisplay(); drawStars(); display.setTextSize(1); display.setCursor(15, 25); display.println("RO'ZA MUNOSABATI"); display.setCursor(35, 40); display.println("BILAN TABRIK!"); display.display(); } void showMoon() { display.clearDisplay(); drawStars(); display.fillCircle(64, 25, 18, SSD1306_WHITE); display.fillCircle(72, 25, 18, SSD1306_BLACK); display.setCursor(25, 55); display.setTextSize(1); display.println("Ramazon Muborak!"); display.display(); } void showRobo() { display.clearDisplay(); drawStars(); display.setTextSize(2); display.setCursor(10, 25); display.println("ROBO"); display.setCursor(25, 45); display.println("SHOP.UZ"); display.display(); } void drawStars() { for (int i = 0; i < 10; i++) { int r = random(0,2); if (r == 1) display.drawPixel(starX[i], starY[i], SSD1306_WHITE); } }