Люди есть код Код (Text): #include <OLED_I2C.h> OLED myOLED(SDA, SCL, 8); extern uint8_t BigNumbers[]; extern uint8_t SmallFont[]; int switchPin1 = 2; int switchPin2 = 3; int switchPin3 = 4; int switchPin4 = 5; int ledPin = 13; void setup() { Serial.begin(9600); pinMode(switchPin1, INPUT); pinMode(switchPin2, INPUT); pinMode(switchPin3, INPUT); pinMode(switchPin4, INPUT); pinMode(ledPin, OUTPUT); myOLED.begin(); myOLED.setFont(SmallFont); } void loop() { int sek = 30; boolean p1 = false; myOLED.setFont(BigNumbers); myOLED.printNumI(sek, CENTER, 20); myOLED.update(); Serial.println(p1); delay(1000); } Нужно чтобы каждую секунду от переменной "sek" отнималось по одному(в начале 30 через секунду 29 еще через секунду 28 и т.д.) типа мини таймера
Код (Text): #include <OLED_I2C.h> OLED myOLED(SDA, SCL, 8); extern uint8_t BigNumbers[]; extern uint8_t SmallFont[]; int switchPin1 = 2; int switchPin2 = 3; int switchPin3 = 4; int switchPin4 = 5; int ledPin = 13; void setup() { Serial.begin(9600); pinMode(switchPin1, INPUT); pinMode(switchPin2, INPUT); pinMode(switchPin3, INPUT); pinMode(switchPin4, INPUT); pinMode(ledPin, OUTPUT); myOLED.begin(); myOLED.setFont(SmallFont); } void loop() { int sek = 30; boolean p1 = false; if(digitalRead(switchPin1) == HIGH){ sek--; } myOLED.setFont(BigNumbers); myOLED.printNumI(sek, CENTER, 20); myOLED.update(); Serial.println(sek); delay(1000); }
У вас sek = 30; создается и инициализируется каждый цикл loop. Естественно ничего не работает. Сделайте ее глобальной и в loop уменьшайте на 1
Как вариант, можно было объявить как static. Получилось бы то же самое, что и при выносе в глобальные, только с сохранением ограниченной области видимости.