#include <Arduino.h>
static uint8_t out[] = { 3, 5, 6, 9 };
static uint8_t inp[] = { 2, 4 };
// https://m1cr0lab-esp32.github.io/remote-control-with-websocket/led-setup/
// https://forum.arduino.cc/t/port-register-manipulation/424880/3
struct button {
uint8_t PIN;
int debouns;
void update() {
digitalRead(this->PIN);
};
};
struct Led {
uint8_t PIN;
bool on = false;
Led(uint8_t PIN): PIN(PIN) {};
void update() {
digitalWrite(this->PIN, this->on ? HIGH : LOW);
};
};
Led l1(3);
Led leds[] = {3, 5, 6, 9};
// button b1 = {2, 100};
//aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
void setup() {
Serial.begin(115200);
// DDRD = B11111111;
// return;
for (auto pin : out)
pinMode(pin, OUTPUT);
for (auto pin : inp)
pinMode(pin, INPUT_PULLUP);
}
// int buttonDelay() {
// static int bd = 10;
// if (!digitalRead(inp[0])) {
// bd += 1;
// } else if (!digitalRead(inp[1])) {
// bd -= 1;
// }
// if (bd < 1) bd = 1;
// if (bd > 100) bd = 100;
// return bd;
// }
void wave() {
for (auto pin : out) {
digitalWrite(pin, HIGH);
delay(100);
}
for (auto pin : out) {
digitalWrite(pin, LOW);
delay(100);
}
}
// void setLed(uint8_t pin, bool dim = true) {
// for (int i = 0; dim ? (i < 256) : (i >= 0) ; i += (dim ? 1 : -1)) {
// analogWrite(pin, i);
// delay(5);
// }
// }
void toBinary(int num) {
for (auto pin : out) {
digitalWrite(pin, num % 2 ? HIGH : LOW);
num >>= 1;
}
}
int i = 0;
bool isInc = false;
void loop() {
// PORTD = B11110000; // digital 4~7 HIGH, digital 3~0 LOW
// delay(1000);
// PORTD = B00001111; // digital 4~7 LOW, digital 3~0 HIGH
// delay(1000);
for(auto l : leds) {
delay(200);
l.on ^= true;
l.update();
delay(200);
l.on ^= true;
l.update();
}
// leds[0].on ^= true;
// leds[0].update();
return;
toBinary(i);
isInc = !digitalRead(inp[0]);
if (isInc) {
i += 1;
delay(100);
// isInc = true;
// if (digitalRead(inp[0]))
// i -= 1;
}
if (!digitalRead(inp[1])) {
i = 0;
}
// delay(10);
i %= 1 << 4;
// return;
// for (auto pin : out) {
// for (int i = 0; i < 256; i++) {
// analogWrite(pin, i);
// int bv = buttonDelay();
// if (bv)
// delay(bv);
// }
// delay(10);
// }
// for (auto pin : out) {
// for (int i = 0; i < 256; i++) {
// analogWrite(pin, 255 - i);
// int bv = buttonDelay();
// if (bv)
// delay(bv);
// }
// delay(10);
// }
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
btn2:1.l
btn2:2.l
btn2:1.r
btn2:2.r
led8:A
led8:C
led9:A
led9:C
led10:A
led10:C
led11:A
led11:C
r8:1
r8:2
r9:1
r9:2
r10:1
r10:2
r11:1
r11:2