#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
 
// If using software SPI (the default case):
#define OLED_MOSI   9
#define OLED_CLK   10
#define OLED_DC    11
#define OLED_CS    12
#define OLED_RESET 13
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
volatile unsigned long Time = 0;
volatile int ptr_one = 0;
volatile int ptr_two = 0;
String utf8rus(String source)
{
  int i,k;
  String target;
  unsigned char n;
  char m[2] = { '0', '\0' };
 
  k = source.length(); i = 0;
 
  while (i < k) {
    n = source[i]; i++;
 
    if (n >= 0xBF){
      switch (n) {
        case 0xD0: {
          n = source[i]; i++;
          if (n == 0x81) { n = 0xA8; break; }
          if (n >= 0x90 && n <= 0xBF) n = n + 0x2F;
          break;
        }
        case 0xD1: {
          n = source[i]; i++;
          if (n == 0x91) { n = 0xB7; break; }
          if (n >= 0x80 && n <= 0x8F) n = n + 0x6F;
          break;
        }
      }
    }
    m[0] = n; target = target + String(m);
  }
return target;
}
void setup()  
{     
DDRD = B00000000; 
//attachInterrupt(0,my1,FALLING);
display.begin();  
display.clearDisplay();
//  display.drawPixel(10, 10, 1);
//  display.display();
//  delay(2000);
//  display.clearDisplay();
for(int i = 82; i != 18; i--)
{
display.clearDisplay();
display.setCursor(4, i);  
display.setTextColor(1); 
display.setTextSize(2); 
display.print(utf8rus("Приветсвую")); 
display.display();
}
delay(700);
}
void loop() 
{
  if(PIND == B01100000)
  {
   delay(400);
   display.clearDisplay();
   display.setCursor(0, 16);  
   display.setTextColor(1); 
   display.setTextSize(1); 
   display.print(utf8rus("Мощность1")); 
   display.display();
  }
  else if(PIND == B00100000)
  {
    delay(150);
    if(PIND == B00100000)
    {
      delay(150);
       display.clearDisplay();
   display.setCursor(0, 16);  
   display.setTextColor(1); 
   display.setTextSize(1); 
   display.print(utf8rus("Выход")); 
   display.display();
    }
    else
    {
    delay(150);
    display.clearDisplay();
    display.setCursor(0, 16);  
    display.setTextColor(1); 
    display.setTextSize(1); 
    display.print(utf8rus("Мощность")); 
    display.display();
    }
  }
  if(PIND == B01100000)
  {
    ptr_one--;
       display.clearDisplay();
   display.setCursor(0, 16);  
   display.setTextColor(1); 
   display.setTextSize(1); 
   display.print(utf8rus("Мощность2")); 
   display.display();
    delay(400);
  }
  else if(PIND == B01000000)
  {
     delay(150);
     ptr_two--;
     delay(150);
     display.clearDisplay();
     display.setCursor(0, 36);  
     display.setTextColor(1); 
     display.setTextSize(1); 
     display.print(utf8rus("Время")); 
     display.setCursor(0, 43);  
     display.setTextColor(1); 
     display.setTextSize(1); 
     display.print(utf8rus("отключения")); 
     display.display();
  }
}