#include "U8g2lib.h"
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0);
static const unsigned char basel [] U8X8_PROGMEM = {0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x70, 0x04, 0x07, 0x00, 0x00, 0x0c, 0x14, 0x18, 0x00, 0x00, 0x02, 0x08, 0x20, 0x00, 0x00, 0x01, 0x00, 0x40, 0x01, 0xa0, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x01, 0xa0, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x04, 0x00, 0x00, 0x00, 0x50, 0x02, 0x00, 0x00, 0x00, 0x30, 0x04, 0x00, 0x00, 0x00, 0x50, 0x03, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x00, 0x80, 0x02, 0x40, 0x01, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x80, 0x02, 0x40, 0x01, 0x00, 0x40, 0x00, 0x00, 0x02, 0x14, 0x20, 0x00, 0x00, 0x0c, 0x2c, 0x18, 0x00, 0x00, 0x70, 0x2c, 0x07, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00};
int angle = 0; // угол
int direction[60]; // массив для угла
int gX[60]; // массив для секунд
unsigned long timer;
int current_sec = 0;
char Sbuffer[10]; // буфер для строк
void setup() {
u8g2.begin();
timer = millis();
Serial.begin(9600);
for (int i = 0; i < 60; i++) gX[i] = i;
}
void loop() {
u8g2.setColorIndex(1);
int sensorValue = analogRead(A2);
angle = map(sensorValue, 0, 1023, 0, 359); // remap значение потенциометра из 0-670 в 45-315° для эмуляции энкодера
if (millis() - timer >= 1000) {
timer = millis(); // "сбросить" таймер
current_sec++;
if (current_sec > 59) current_sec = 0;
for (int i = 0; i <= 58; i++) {
direction[i] = direction[i + 1];
}
rotate_array();
direction[59] = map(angle, 0, 359, 0, 40);
//Serial.println(String(current_sec) + " " + String(direction[59]) + " " + String(sensorValue) + " " + String(angle));
Serial.println(angle);
}
u8g2.firstPage();
do {
for (int i = 0; i < 64; i ++) u8g2.drawPixel(i, i);
} while (u8g2.nextPage());
}
void rotate_array(void) {
int e = gX [0];
for (int i = 0; i <= 58; i++) {
gX[i] = gX[i + 1];
}
gX[59] = e;
}