Фантомная засветка на семисегментнике.

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

BOOM пишет:

dalay(1);

поменял на

delayMicroseconds(500);

При этом яркость примерно одинаковая. Если уменьшить до 300, то яркость существенно понижается.


Где то тут проект выкладывал, часы барометр термометр, тоже семисегментники, но на сдвиговых регистра, стоит 350 мкс, вполне нормально светит.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

andycat пишет:
BOOM пишет:

PORTB |= ~(numbers[bitNum]);

Данный код выдает все нули и все точки горят. Но это просто пальцем в небо. Стоит ли продолжать?

Стоит однозначно :) Вот откопал древний пример http://arduino.ru/forum/proekty/prosto-termometr-na-dvukh-7-segmentnykh-... До сих пор полноценно использую железку.

Наверное мы друг друга не поняли. Я имел ввиду оптимизацию кода по предложению Komandir. В Вашем коде я ничего подобного не увидел (честно говоря и смотрел мельком, в поисках PORTB).

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

andycat пишет:
BOOM пишет:

dalay(1);

поменял на

delayMicroseconds(500);

При этом яркость примерно одинаковая. Если уменьшить до 300, то яркость существенно понижается.

Где то тут проект выкладывал, часы барометр термометр, тоже семисегментники, но на сдвиговых регистра, стоит 350 мкс, вполне нормально светит.

В моем случае даже 400мкс давали снижение яркости, а 300 - существенное снижение яркости. Это, наверное, "на вкус и цвет" :)

Green
Offline
Зарегистрирован: 01.10.2015

andycat пишет:
Вот откопал древний пример...

Пожалуй, мой древнее.))

 

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Green, кода нет - не зачёт)))

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

BOOM пишет:

andycat пишет:
BOOM пишет:

PORTB |= ~(numbers[bitNum]);

Данный код выдает все нули и все точки горят. Но это просто пальцем в небо. Стоит ли продолжать?

Стоит однозначно :) Вот откопал древний пример http://arduino.ru/forum/proekty/prosto-termometr-na-dvukh-7-segmentnykh-... До сих пор полноценно использую железку.

Наверное мы друг друга не поняли. Я имел ввиду оптимизацию кода по предложению Komandir. В Вашем коде я ничего подобного не увидел (честно говоря и смотрел мельком, в поисках PORTB).


Ну гляньте повнимательнее, ddrd есть)
Update : вру, PORTD есть, почитайте уже литературу, все ж просто и код примитивный.

Green
Offline
Зарегистрирован: 01.10.2015

andycat пишет:
Green, кода нет - не зачёт)))
Код есть - выкладывать стыдно.( Да и не Ардуино.))

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

BOOM пишет:

Komandir пишет:

39-41 меняем на PORTB=numbers[bitNum]

Вот с этим засада. Кракозябры. Пробовал отрицание ( ! ) - вообще не светятся индикаторы. Ну а я, уже говорил, не понимаю еще в этом всем...

Так у вас во второй строке сегменты заданы как бог на душу положил и потом в 40 это все выводится задом наперед ...

С учетом вашей распайки:

8-17 меняем на

B10101111,
B00001100,
B01100111,
B01101110,
B11001100,
B11101010,
B11101011,
B00001110,
B11101111,
B11101110,

26-28 меняем на DDRB=0B11111111

39-41 меняем на PORTB=numbers[bitNum]

(http://arduino.ru/Tutorial/Upravlenie_portami_cherez_registry)