Funduino+74hc595
- Войдите на сайт для отправки комментариев
Вс, 25/08/2013 - 16:45
Всем доброе время суток! На днях хотел подружить мегу 2560 от фундуины и сдвиговый регистор 74hc595, но появилась проблема: ничего не работает, пробывал разные коды, разные пины подключения, менял сами регисторы, а толку ноль. Делал по разным статьям, к примеру, код брал от сюда: http://arduino.cc/en/Tutorial/ShiftOut , пины подключения от сюда: http://www.pighixxx.com/pgdev/Temp/mega2.png .
сейчас прописан такой код:
#include <SPI.h> #include <SPI.h> int REG_SELECT=8; void setup() { /* Инициализируем шину SPI. Если используется программная реализация, * то вы должны сами настроить пины, по которым будет работать SPI. */ SPI.begin(); pinMode(REG_SELECT, OUTPUT); pinMode(51, OUTPUT); pinMode(52, OUTPUT); digitalWrite(REG_SELECT, LOW); // выбор ведомого - нашего регистра SPI.transfer(0); // очищаем содержимое регистра /* Завершаем передачу данных. После этого регистр установит * на выводах QA-QH уровни, соответствующие записанным битам. */ digitalWrite(REG_SELECT, HIGH); } /* Эта функция сдвигает биты влево на одну позицию, перемещая старший бит * на место младшего. Другими словами, она "вращает" биты по кругу. * Например, 11110000 превращается в 11100001. */ void rotateLeft(uint8_t &bits) { uint8_t high_bit = bits & (1 << 7) ? 1 : 0; bits = (bits << 1) | high_bit; } void loop() { static uint8_t nomad = 11100001; // это наш бегающий бит /* Записываем значение в сдвиговый регистр */ digitalWrite(REG_SELECT, LOW); SPI.transfer(nomad); digitalWrite(REG_SELECT, HIGH); /* И вращаем биты влево - в следующий раз загорится другой светодиод */ rotateLeft(nomad); delay(1000 / 8); // пробегаем все 8 светодиодов за 1 секунду }
Очень нужна помощь.
Заранее, благодарю!
Честно, не знаю как удалить эту тему, просто проблема решилась сама собой, плохо пропаял саму микросхему) а так подключать сдвиговый регистр к меге 2560 надо по такой схеме: 14пин у регистра-51пин у меги; 12пин-любой пин на ардуине, но надо будет укать какой... и 11пин-52пин, вот и всё))