roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 май 2025, 10:02

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Подключение сдвиговых регистров
СообщениеДобавлено: 13 сен 2011, 14:17 
Не в сети

Зарегистрирован: 31 авг 2011, 16:14
Сообщения: 4
Я делаю первые шаги в освоении Arduino и микроконтроллеров вообще. Так что вопросы могут быть глупые, заранее извиняюсь.
В общем захотел подключить сдвиговый регистр для мигания светодиодами. Как это лучше сделать? Может кто видел в интернете что-нибудь похожее с описанием для новичков?
В описании atmega168 написано, что там уже есть Serial peripheral interface. Как до него добраться из Arduino IDE? Может уже есть там где библиотека? Как считывать/записывать регистры микроконтроллера, отвечающие за настройку работы этого интерфейса (да и вообще все настроечные регистры)?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение сдвиговых регистров
СообщениеДобавлено: 13 сен 2011, 18:51 
Не в сети

Зарегистрирован: 31 авг 2011, 16:14
Сообщения: 4
Сам задал вопрос, сам на него ответил, стоило только немного поискать :)
Информации, которая тут http://robocraft.ru/blog/arduino/519.html мне вполне достаточно


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение сдвиговых регистров
СообщениеДобавлено: 13 сен 2011, 19:05 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Vikidor писал(а):
Может уже есть там где библиотека?
наверняка есть. в google спрашивайте arduino и компонент, например: arduino spi или arduino hc595 - и получите много ответов с примерами.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение сдвиговых регистров
СообщениеДобавлено: 19 сен 2011, 12:25 
Не в сети

Зарегистрирован: 31 авг 2011, 16:14
Сообщения: 4
Не стал я использовать SPI. Решил напрямую управлять битами для тренировки. Написал программку, типа "Helo world". Программа выводит 2 байта в 3 последовательных регистра с параллельным выходом. Выходы регистров подключены к LED дисплею, который показывает цифирки.
Код:
#define OE_Reg 10 //Output Enable
#define LE_Reg 11 //Latch Enable
#define CLK_Reg 12 //Clock
#define SDI_Reg 13 //Serial Data Input

void setup()
{
  pinMode(OE_Reg, OUTPUT);
  pinMode(LE_Reg, OUTPUT);
  pinMode(CLK_Reg, OUTPUT);
  pinMode(SDI_Reg, OUTPUT);
}

void loop()
{
  digitalWrite(OE_Reg, HIGH);
  digitalWrite(LE_Reg, LOW);
  NumberToSymbol(555);
  digitalWrite(LE_Reg, HIGH);
  digitalWrite(OE_Reg, LOW);
  digitalWrite(LE_Reg, LOW);
  while(true){
  continue;
  }
}

void ByteSerialTransfer(byte Data)
{ // Последовательный вывод байта
  byte SendData = 0;
  for (int i=0; i < 8; i++)
  {
    digitalWrite(CLK_Reg, LOW);
    SendData = Data & B10000000;
    if (SendData == B10000000)
    {
      digitalWrite(SDI_Reg, HIGH);
    }
    else
    {
      digitalWrite(SDI_Reg, LOW);
    }
    Data = Data << 1;
    digitalWrite(CLK_Reg, HIGH);
  }
  digitalWrite(CLK_Reg, LOW);
}

void NumberToSymbol(int Number)
{ //Перевод числа в 3 байта символов дисплея
  byte symbol[10] = {
    B00101000, // 0
    B01101111, // 1
    B10100010, // 2
    B00100110, // 3
    B01100101, // 4
    B00110100, // 5
    B00110000, // 6
    B00101111, // 7
    B00100000, // 8
    B00100100  // 9
  };
  int SendNumber;
  SendNumber = Number;
  for (int i=0; i < 3;i++)
  {
    ByteSerialTransfer(symbol[SendNumber%10]);
    SendNumber /= 10;
  }
}

Собственно это моя первая программа. Хотел бы чтобы её кто-то покритиковал. Может что-то сделал не так или можно что-то улучшить.
На досуге спаяю схемку, проверю как работает.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO