Отвечаю всем и выкладываю код который на данный момент есть как есть! Удалил, т.к. получилось несколько сообщений как-будто сам с собой поговорил ))) вот их и удалил. Код не идеален, но пока иду медленными шагами к созданию менюшки и работы вообще с 7 сегментниками.
‘’’
#include “GyverButton.h”
#include “GyverTimer.h”
#define segmentA 2
#define segmentB 3
#define segmentC 4
#define segmentD 5
#define segmentE 6
#define segmentF 7
#define segmentG 8
#define DIGIT_1PIN 9 //(4)
#define DIGIT_2PIN A0 //(3)
#define DIGIT_3PIN 11 //(2)
#define DIGIT_4PIN 12 //(1)
#define BTN_PIN1 A1 //кнопка режим
#define BTN_PIN2 A2 // кнопка UP
#define BTN_PIN3 A3 // кнопка DOWN
#define BTN_PIN4 A4 // кнопка SET
GButton butt1(BTN_PIN1);
GButton butt2(BTN_PIN2);
void setTimeout(uint16_t timeout);
int t11 = 57;
int t12 = 7;
int t21 = 7;
int t22 = 7;
int numMenu = 0;
// This function displays numbers from 0 to 9
void show_number(int num)
{
switch(num)
{
case 0:
digitalWrite(segmentA, LOW);
digitalWrite(segmentB, LOW);
digitalWrite(segmentC, LOW);
digitalWrite(segmentD, LOW);
digitalWrite(segmentE, LOW);
digitalWrite(segmentF, LOW);
digitalWrite(segmentG, HIGH);
break;
case 1:
digitalWrite(segmentA, HIGH);
digitalWrite(segmentB, LOW);
digitalWrite(segmentC, LOW);
digitalWrite(segmentD, HIGH);
digitalWrite(segmentE, HIGH);
digitalWrite(segmentF, HIGH);
digitalWrite(segmentG, HIGH);
break;
case 2:
digitalWrite(segmentA, LOW);
digitalWrite(segmentB, LOW);
digitalWrite(segmentC, HIGH);
digitalWrite(segmentD, LOW);
digitalWrite(segmentE, LOW);
digitalWrite(segmentF, HIGH);
digitalWrite(segmentG, LOW);
break;
case 3:
digitalWrite(segmentA, LOW);
digitalWrite(segmentB, LOW);
digitalWrite(segmentC, LOW);
digitalWrite(segmentD, LOW);
digitalWrite(segmentE, HIGH);
digitalWrite(segmentF, HIGH);
digitalWrite(segmentG, LOW);
break;
case 4:
digitalWrite(segmentA, HIGH);
digitalWrite(segmentB, LOW);
digitalWrite(segmentC, LOW);
digitalWrite(segmentD, HIGH);
digitalWrite(segmentE, HIGH);
digitalWrite(segmentF, LOW);
digitalWrite(segmentG, LOW);
break;
case 5:
digitalWrite(segmentA, LOW);
digitalWrite(segmentB, HIGH);
digitalWrite(segmentC, LOW);
digitalWrite(segmentD, LOW);
digitalWrite(segmentE, HIGH);
digitalWrite(segmentF, LOW);
digitalWrite(segmentG, LOW);
break;
case 6:
digitalWrite(segmentA, LOW);
digitalWrite(segmentB, HIGH);
digitalWrite(segmentC, LOW);
digitalWrite(segmentD, LOW);
digitalWrite(segmentE, LOW);
digitalWrite(segmentF, LOW);
digitalWrite(segmentG, LOW);
break;
case 7:
digitalWrite(segmentA, LOW);
digitalWrite(segmentB, LOW);
digitalWrite(segmentC, LOW);
digitalWrite(segmentD, HIGH);
digitalWrite(segmentE, HIGH);
digitalWrite(segmentF, HIGH);
digitalWrite(segmentG, HIGH);
break;
case 8:
digitalWrite(segmentA, LOW);
digitalWrite(segmentB, LOW);
digitalWrite(segmentC, LOW);
digitalWrite(segmentD, LOW);
digitalWrite(segmentE, LOW);
digitalWrite(segmentF, LOW);
digitalWrite(segmentG, LOW);
break;
case 9:
digitalWrite(segmentA, LOW);
digitalWrite(segmentB, LOW);
digitalWrite(segmentC, LOW);
digitalWrite(segmentD, LOW);
digitalWrite(segmentE, HIGH);
digitalWrite(segmentF, LOW);
digitalWrite(segmentG, LOW);
break;
default:
digitalWrite(segmentA, HIGH);
digitalWrite(segmentB, LOW);
digitalWrite(segmentC, LOW);
digitalWrite(segmentD, LOW);
digitalWrite(segmentE, LOW);
digitalWrite(segmentF, HIGH);
digitalWrite(segmentG, LOW);
break;
}
}
void show_f(){
digitalWrite(segmentA, LOW);
digitalWrite(segmentB, HIGH);
digitalWrite(segmentC, HIGH);
digitalWrite(segmentD, HIGH);
digitalWrite(segmentE, LOW);
digitalWrite(segmentF, LOW);
digitalWrite(segmentG, LOW);
}
void displayNameMode()
{
show_f();
digitalWrite(DIGIT_2PIN,LOW);
digitalWrite(DIGIT_1PIN,HIGH);
delay(5);
digitalWrite(DIGIT_2PIN,HIGH);
digitalWrite(DIGIT_1PIN,LOW);
show_number(3);
delay(5);
}
void displayTime(){
digitalWrite(DIGIT_2PIN,LOW);
digitalWrite(DIGIT_1PIN,HIGH);
show_number(0);
delay(5);
digitalWrite(DIGIT_2PIN,LOW);
digitalWrite(DIGIT_1PIN,HIGH);
show_number(0);
delay(5);
}
void displayDigit()
{
if ((t11>=0) && (t11<=9)) {digitalWrite(DIGIT_1PIN,LOW); digitalWrite(DIGIT_2PIN,HIGH); show_number(t11); delay(15);}
if ((t11>=10) && (t11<=59))
{
int a = t11/10;
digitalWrite(DIGIT_2PIN,LOW);
digitalWrite(DIGIT_1PIN,HIGH);
show_number(a);
delay(5);
int b = t11%10;
digitalWrite(DIGIT_2PIN,HIGH);
digitalWrite(DIGIT_1PIN,LOW);
show_number(b);
delay(5);
}
if (t11>59){t11=0;}
}
void setup() {
Serial.begin(9600);
pinMode(segmentA , OUTPUT);
pinMode(segmentB , OUTPUT);
pinMode(segmentC , OUTPUT);
pinMode(segmentD , OUTPUT);
pinMode(segmentE , OUTPUT);
pinMode(segmentF , OUTPUT);
pinMode(segmentG , OUTPUT);
pinMode(DIGIT_1PIN,OUTPUT);
pinMode(DIGIT_2PIN,OUTPUT);
pinMode(A1, INPUT_PULLUP);
pinMode(A2, INPUT_PULLUP);
}
void loop() {
butt1.tick();
butt2.tick();
switch (numMenu) {
case 0: displayNameMode(); break;
case 1: displayDigit(); break;
}
//выбор меню
if (butt1.isPress()) { numMenu++; if (numMenu==2) numMenu=0;}
//кнопка UP
if (butt2.isPress()) { t11++; tone(10, 1000); delay(50); noTone(10); }
}
‘’’
Понимаю, что код можно и нужно упрощать в десятки раз, но пока делаю в тупую, далее видно будет. Просто как-то странно, что на просторах сети нет примеров по типу менюшек на 7 сегментниках, отображение часов и прочего полно, а вот с выбором режимов и прочего - как-то не нашел, или есть но на asm )))