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пин, вот и всё))