#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <qrcode.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
const int qrCodeVersion = 3;
const int pixelSize = 2;
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void showQRCode(String qrCodeString) {
QRCode qrcode;
uint8_t qrcodeBytes[qrcode_getBufferSize(qrCodeVersion)];
qrcode_initText(&qrcode, qrcodeBytes, qrCodeVersion, ECC_LOW,
qrCodeString.c_str());
display.clearDisplay();
int startX = (SCREEN_WIDTH - (qrcode.size * pixelSize) - (pixelSize * 2))
/ 2;
int startY = (SCREEN_HEIGHT - (qrcode.size * pixelSize) - (pixelSize * 2))
/ 2;
int qrCodeSize = qrcode.size;
display.fillRect(startX, startY, (qrCodeSize * pixelSize) + (pixelSize * 2),
(qrCodeSize * pixelSize) + (pixelSize * 2), WHITE);
for (uint8_t y = 0; y < qrCodeSize; y++) {
for (uint8_t x = 0; x < qrCodeSize; x++) {
if (qrcode_getModule(&qrcode, x, y)) {
display.fillRect(x * pixelSize + startX + pixelSize,
y * pixelSize + startY + pixelSize, pixelSize,
pixelSize, BLACK);
}
}
}
display.display();
}
void setup() {
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
showQRCode("https://www.youtube.com/@redlineMK3");
}
void loop() {
}