Помогите привести код в порядок
- Войдите на сайт для отправки комментариев
Чт, 10/03/2016 - 13:38
const int dataPin = 8; const int latchPin = 9; const int clockPin = 10; void setup() { pinMode(dataPin, OUTPUT); pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); } void loop() { for (int z=0; z <= 9999; z++) { displayNumber(z, 100); } } void displayNumber(int number, int duration) { int units = number % 10; //Получаем единицы int dozens = number % 100 / 10; //Десятки int hundreds = number % 1000 / 100; //Сотни int thousands = number / 1000; //Тысячи int numberOfDigits; //Количество разрядов будем записывать сюда if (thousands == 0 && hundreds == 0 && dozens == 0) numberOfDigits = 1; else if (thousands == 0 && hundreds == 0) numberOfDigits = 2; else if (thousands == 0) numberOfDigits = 3; else if (thousands > 0) numberOfDigits = 4; //Посчитали количество разрядов в числе number unsigned long loopTimer = millis(); //Фиксируем время для таймера while (millis() - loopTimer <= duration) { //Отображаем число на протяжении duration миллисекунд if (numberOfDigits == 4) { //Если у нас 4-х разрядное число - отображаем все 4 разряда shiftToRegister((0b0001 << 4) + thousands); //Пишем в сдвиговый регистр байт shiftToRegister((0b0010 << 4) + hundreds); //В котором содержится информация shiftToRegister((0b0100 << 4) + dozens); //О цифре и ее положении на индикаторе shiftToRegister((0b1000 << 4) + units); //Причем цифры быстро переключаются } //Таким образом создается динамическая индикация else if (numberOfDigits == 3) { //Если у нас 3-х разрядное число - отображаем 3 разряда shiftToRegister((0b0010 << 4) + hundreds); shiftToRegister((0b0100 << 4) + dozens); shiftToRegister((0b1000 << 4) + units); } else if (numberOfDigits == 2) { //Если у нас 2-х разрядное число - отображаем 2 разряда shiftToRegister((0b0100 << 4) + dozens); shiftToRegister((0b1000 << 4) + units); } else if (numberOfDigits == 1) { //Если у нас 1 разрядное число - отображаем 1 разряд shiftToRegister((0b1000 << 4) + units); } } shiftToRegister(0b0); //Стираем символы с дисплея } void shiftToRegister(byte j) { digitalWrite(latchPin, LOW); //Открываем защелку shiftOut(dataPin, clockPin, MSBFIRST, j); //Отправляем последовательно байт digitalWrite(latchPin, HIGH); //Закрываем защелку }
Я не особо шарю в программировании, вот накалякал такой код, чую, что он ужасен
Как можно улучшить код, сократить количество строк, что тут можно по массивам распихать?
Помогите, если не трудно
const int dataPin = 8;
for
(
int
z=0; z <= 9999; z++) {
13
displayNumber(z, 100);
14
}
вместо всей функции void displayNumber(int number, int duration)