не выводится переменная на дисплей
- Войдите на сайт для отправки комментариев
Пнд, 18/04/2016 - 22:30
unsigned long micros_sp = 0; volatile int sp; #define CLOCK_PIN 4 #define RESET_PIN 5 int speed = 0; void resetNumber() { // Для сброса на мгновение ставим контакт // reset в HIGH и возвращаем обратно в LOW digitalWrite(RESET_PIN, HIGH); digitalWrite(RESET_PIN, LOW); } void showNumber(int n) { // Первым делом обнуляем текущее значение resetNumber(); // Далее быстро «прокликиваем» счётчик до нужного // значения //while (n) { digitalWrite(CLOCK_PIN, HIGH); digitalWrite(CLOCK_PIN, LOW); //} } void setup(){ attachInterrupt(1, speedometr, RISING); Serial.begin(9600); tone (7, 100); pinMode(2, INPUT_PULLUP); pinMode(RESET_PIN, OUTPUT); pinMode(CLOCK_PIN, OUTPUT); // Обнуляем счётчик при старте, чтобы он не оказался // в случайном состоянии resetNumber(); } void loop(){ showNumber(sp); } void speedometr(){ sp = (600000.0 / (micros() - micros_sp)); //600000.0 - 6 имп./м 1000000.0 - 10 имп./м и т.д micros_sp = micros(); }
Здравствуйте! подскажите пожалуйста,если не сложно,почему не выводится переменная (sp) на 7-ми сегментный дисплей,при том что другие цифры показывает. дисплей подключен через драйвер.Заранее спасибо
А где сам код вывода, собственно?
А где сам код вывода, собственно?
В строках 23-25, только while ТС закомментировал зачем-то.
А также ТС забыл нам сказать, что у него там стоит счётчик-дешифратор типа К176ИЕ4 или CD4026 или ещё что-то из той же оперы, который собственно и долже всё показывать.
ТС, может будете менее скрытным и расскажете, что у Вас там и как?
Прошу прощения! Чуть не тот код выложил. Вот правильный. Драйвер 4026.Код брал отсюда http://wiki.amperka.ru/%D0%B4%D0%B8%D1%81%D0%BF%D0%BB%D0%B5%D0%B8-%D0%B8-%D0%B8%D0%BD%D0%B4%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D1%8B:7-%D1%81%D0%B5%D0%B3%D0%BC%D0%B5%D0%BD%D1%82%D0%BD%D1%8B%D0%B9-%D0%B8%D0%BD%D0%B4%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80
23, 26 строка поправь по примеру
не обязательно постоянно выводить, запоминай старое значение. если новое и старое не равны тогда выводи. да и вывод можно прямо в прерывание запихнуть, а то какие будут последствия если во время вывода сработает прерывание, все равно делаев нет. но управлять все равно лучше через регистры (если в прерывание засунешь). так меньше вероятности ошибки
23, 26 строка поправь по примеру
не обязательно постоянно выводить, запоминай старое значение. если новое и старое не равны тогда выводи. да и вывод можно прямо в прерывание запихнуть, а то какие будут последствия если во время вывода сработает прерывание, все равно делаев нет. но управлять все равно лучше через регистры (если в прерывание засунешь). так меньше вероятности ошибки
спасибо! Попробую.