Доброго времени суток. Сидел вчера игрался с arduino nano, решил попробовать подключить к нему семисегментный индикатор. Я столкнулся с тем, что мне не хватило пеинов на порту, я подключал к порту D(PORTD). Как сказано в документации порт D это выводы с 0 по 7, выводы 0 и 1, тоже входят в порт(RX/TX) и тут у меня появилось несколько вопросов:
- Почему я не могу их использовать? Да и можно ли вообще их использовать? Это пины приема передачи данных, судя по доками использовать их можно. Я подключал к этому выводу светодиод, подавал логический уровень, чтобы зажечь, но он так и не засветился(Поэтому пришлось подключать на пины с D2 по D9)
- Как правильно писать в порт, ведь это можно сделать двумя способами:
- digitalWrite(pin, HIGH) - подать на pin лог. 1.
- PORTD |= (1<<5) - подать на 5 ножку лог. 1 Либо так: PORT = b00100000 - что тоже самое
Второй путь мне представляется более изящным и удобным. Именно так я попытался зажечь свои сегменты на индикаторе. Но здесь возникла проблема из-за тех самых выводов RX/TX. Так как использовать их у меня не получилось, то оставшиеся выводы(те, что не влезли в порт D) я подцепил на выводы 8 и 9, а это уже порт B, а как их теперь согласовывать то. Я теперь не могу просто написать: PORTD |= (1<<3), часть индикаторов не зажгётся. Как же с помощью второго способа заюзать сразу 2 порта? Хочется всё сделать по пацански, правильно, а не вызывать постоянно digitalWrite.
P.S. Почитал статей, можно выкрутиться с помощью сдвигового регистра, но это будет чуть позже :)
P.P.S. Семисегментный индикатор, как и светодиод, нужно подключать через резистор, дабы сбавить ток, я же решил сэкономить и подключил всего через 1 резистор и тот на питании, и походу спалил пины 8 и 9 :(
В документациях всё красиво написано, у всех всё получается, как сам сядешь делать, вечно, что-нибудь да не так... эх :(