Нужна помощь в редактирование скетча Цифровой счетчик на TM1637..
- Войдите на сайт для отправки комментариев
Чт, 24/08/2017 - 21:58
В приведеном ниже коде индекатор разбит на 2 двузначных числа
нужно разделить 4х значный индекатор на 4 однозначных числа
и добавить 2 кнопки для 2 добавившихся цифр., а звук и ускорение переключения при долгом нажатие нужно вырезать. Знания програмированния нет! Зарание благадарю за уделёнае мне время для оказания помощи!
{САМ СКЕТЧ НИЖЕ БЕЗ ИЗМЕНЕНИЙ КАК ЕСТЬ!}
/*
Цифровой счетчик.
Описание действия. Теоретическая часть.
Устройство служит для ведения счета игры от 0 до 99.
После включения питания запускается заставка,
демонстрирующая исправность всех светодиодов и динамика.
Затем на дисплее загорается 0000.
Точки загораются, когда задействованы кнопки.
Каждое изменение индикации сопровождается звуком той или ной тональности.
На индикаторе отображается два двузначных числа, для подсчета очков команды "А" и "Б".
Когда однократно нажата кнопка №1, то число очков команды "А" возрастает на 1 очко, а когда №2 - команды "Б".
Если каждую из этих кнопок подержать нажатой,
то число увеличиваются тем быстрее, чем дольше нажата кнопка.
Кнопка №3 изменяет яркость свечения дисплея.
Кнопка №4 - альтернативное действие.
Когда она зажата, то загораются точки.
Если при зажатой копке №4 нажать любую другую кнопку, то точки будут гаснуть.
Кнопки №1 и №2 при зажатой кнопке №4 начнут считать очки в обратную сторону,
а кнопка №3 при этом сбросит счетчик в 0000.
*/
#define DISPLAY_CLK_PIN 11 // подключаем TM1637
#define DISPLAY_DIO_PIN 12 // подключаем TM1637
#include "TM1637.h" // библиотека для TM1637
#define Btn_1 7 //назначаем кнопку №1
#define Btn_2 6 //назначаем кнопку №2
#define Btn_3 5 //назначаем кнопку №3
#define Btn_4 4 //назначаем кнопку №4
#define ledPin 13 //вводим эту строчку, чтобы погасить светодиод на плате
TM1637 display(DISPLAY_CLK_PIN, DISPLAY_DIO_PIN);
unsigned char A=0; //начало отсчета очков команды "А"
unsigned char B=0; //начало отсчета очков команды "Б"
unsigned char dots=0; //для точек индикатора
void setup()
{
display.set(1); //яркость индикатора (0-7)
pinMode(Btn_1, INPUT_PULLUP); // включаем внутренний резистор
pinMode(Btn_2, INPUT_PULLUP); // включаем внутренний резистор
pinMode(Btn_3, INPUT_PULLUP); // включаем внутренний резистор
pinMode(Btn_4, INPUT_PULLUP); // включаем внутренний резистор
pinMode(ledPin, OUTPUT); //гасим светодиод на плате
}
void loop()
{
action_buttons();
displey();
}
void action_buttons()
{
if (digitalRead(Btn_1)==LOW){delay (250), A++;} //если кнопка №1 нажата, то счет команды "А" возрастает
if (digitalRead(Btn_2)==LOW){delay (250), B++;} //если кнопка №2 нажата, то счет команды "Б" возрастает
}
void displey()
{
int8_t timeDisp[4];
timeDisp[0] = A / 10;
timeDisp[1] = A % 10;
timeDisp[2] = B / 10;
timeDisp[3] = B % 10;
display.display(timeDisp);
display.point(dots ==0 ? POINT_OFF : POINT_ON); //гасим точки на индикаторе
}
Вы ошиблись разделом, Вам вот сюда. Там и поблагодарите за помощь.
По данному вопросу помощь уже не требуется, я просил не написать за меня программу а помочь разобраться в этой, по ломав голову 2 вечера я разобраля сам вот выкладываю то что получилось.
Выложеный код полностью исправен и протестирован на UNO и NANO ползуйтесь если комуто пригодится!
Неправда. Когда хотят разобраться - задают вопросы. В Вашем посте вопросов не было - была только хотелка.
Выложеный код полностью исправен
Вот и замечательно! Но, правильнее всё же сначала ломать голову, а потом уж постить sos'ы.
Выложеный код полностью исправен
Программ без ошибок не бывает в природе. Если бы они были, то это было бы нарушением Закона Брукса.
Выложеный код полностью исправен и протестирован на UNO и NANO ползуйтесь если комуто пригодится!
Программ без ошибок не бывает в природе. Если бы они были, то это было бы нарушением Закона Брукса.
Не только.
Разве Клапауций не запрещал программы без ошибок?