Arduino UnoR3 + LEDs + shift registers

Обсуждаем Arduino, Raspberry Pi и другие электронные компоненты и проекты DIY
Natvorila
Сообщения: 14
Зарегистрирован: 13 фев 2013, 11:23

Arduino UnoR3 + LEDs + shift registers

Сообщение Natvorila »

проблем несколько:
1. Собрала схему по инструкции с официального сайта http://arduino.cc/en/Tutorial/ShiftOut. Проверила уже не раз. При подключении второго shift регистра и с ним второго набора из 8ми диодов мигание получается синхронным, т.е. при загрузке приведенных там примеров мигают два первых диода на обоих регистрах, потом два вторых диода и т.п. Т.е. не получается сделать так, чтобы диоды зажигались последовательно: сначала пройдя ряд на первом регистре, а потом на втором.
2. По проекту мне нужно сделать так, чтобы после того, как пройдет программа с набором света (вот эта: http://learn.adafruit.com/adafruit-ardu ... duino-code) в конце, тогда, когда загорается последний диод в линейке, должен подаваться звуковой сигнал (можно даже типовой из примеров в самом ардуино). после того, как он закончит играть мелодию, он должен замолчать.

я уже неделю пробую разные варианты: и пыталась диоды по-отдельности прописывать и разные другие программы грузила. никак не получается.

ПОМОГИТЕ ПОЖАЛУЙСТА
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1019
Зарегистрирован: 22 окт 2010, 23:57

Re: Arduino UnoR3 + LEDs + shift registers НЕ РАБОТАЕТ КАК О

Сообщение Mr.Kubikus »

Все специалисты сейчас заняты. Ожидайте ответа. Не вешайте трубку.

А еще хорошо бы увидеть ваш исходный код.

Спасибо.
С уважением, Григорий
GitHub FB ВК
Natvorila
Сообщения: 14
Зарегистрирован: 13 фев 2013, 11:23

Re: Arduino UnoR3 + LEDs + shift registers НЕ РАБОТАЕТ КАК О

Сообщение Natvorila »

Григорий, спасибо большое за оперативный ответ. Код, с которым я сейчас пытаюсь что-либо сделать во второй ссылке. Если честно у меня уже столько вариантов, что я уже запуталась в них. Я пытаюсь прописать последовательность перехода от одного регистра к другому. Как вариант я даже решила оставить синхронное включение на всех регистрах, но дописать в конце включение звука - но это тоже не получается.
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1019
Зарегистрирован: 22 окт 2010, 23:57

Re: Arduino UnoR3 + LEDs + shift registers НЕ РАБОТАЕТ КАК О

Сообщение Mr.Kubikus »

По поводу п. 1 - внимательно посмотрите, как соединены входы данных DS у сдвиговых регистров. Складывается ощущение, что они соединены между собой.

Проверьте, пожалуйста.

Кстати, какой чип вы используете?

К п.2 перейдем когда разберемся с п. 1.
С уважением, Григорий
GitHub FB ВК
Natvorila
Сообщения: 14
Зарегистрирован: 13 фев 2013, 11:23

Re: Arduino UnoR3 + LEDs + shift registers НЕ РАБОТАЕТ КАК О

Сообщение Natvorila »

DS первого регистра соединен с 11 пином на плате, а между собой регистры соединены ST CP первого регистра с таким же входом второго и с 9 пином на плате, SH CP первого с таким же второго и с 12 пином на плате. и еще Q7 выход на первом регистре соединен с DS на втором. я делала все по схеме из первой ссылке. проверила несколько раз.
Natvorila
Сообщения: 14
Зарегистрирован: 13 фев 2013, 11:23

Re: Arduino UnoR3 + LEDs + shift registers НЕ РАБОТАЕТ КАК О

Сообщение Natvorila »

чип - Выходной сдвиговый регистр 74HC595
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1019
Зарегистрирован: 22 окт 2010, 23:57

Re: Arduino UnoR3 + LEDs + shift registers НЕ РАБОТАЕТ КАК О

Сообщение Mr.Kubikus »

Попробуйте скетч, который я привел ниже, и напишите что отображается на светодиодах. Должно быть так: RG1=11111111, RG2=01010101

Код: Выделить всё


//Pin connected to ST_CP of 74HC595
int latchPin = 9;
//Pin connected to SH_CP of 74HC595
int clockPin = 12;
////Pin connected to DS of 74HC595
int dataPin  = 11;



void setup() {
  //Start Serial for debuging purposes	
  Serial.begin(9600);
  //set pins to output because they are addressed in the main loop
  pinMode(latchPin, OUTPUT);

}

void loop() {
    //ground latchPin and hold low for as long as you are transmitting
    digitalWrite(latchPin, 0);
    //count up on GREEN LEDs
    shiftOut(dataPin, clockPin, B01010101); 
    //count down on RED LEDs
    shiftOut(dataPin, clockPin, B11111111);
    //return the latch pin high to signal chip that it 
    //no longer needs to listen for information
    digitalWrite(latchPin, 1);
    delay(100);
}

void shiftOut(int myDataPin, int myClockPin, byte myDataOut) {
  // This shifts 8 bits out MSB first, 
  //on the rising edge of the clock,
  //clock idles low

  //internal function setup
  int i=0;
  int pinState;
  pinMode(myClockPin, OUTPUT);
  pinMode(myDataPin, OUTPUT);

  //clear everything out just in case to
  //prepare shift register for bit shifting
  digitalWrite(myDataPin, 0);
  digitalWrite(myClockPin, 0);

  //for each bit in the byte myDataOut
  //NOTICE THAT WE ARE COUNTING DOWN in our for loop
  //This means that %00000001 or "1" will go through such
  //that it will be pin Q0 that lights. 
  for (i=7; i>=0; i--)  {
    digitalWrite(myClockPin, 0);

    //if the value passed to myDataOut and a bitmask result 
    // true then... so if we are at i=6 and our value is
    // %11010100 it would the code compares it to %01000000 
    // and proceeds to set pinState to 1.
    if ( myDataOut & (1<<i) ) {
      pinState= 1;
    }
    else {	
      pinState= 0;
    }

    //Sets the pin to HIGH or LOW depending on pinState
    digitalWrite(myDataPin, pinState);
    //register shifts bits on upstroke of clock pin  
    digitalWrite(myClockPin, 1);
    //zero the data pin after shift to prevent bleed through
    digitalWrite(myDataPin, 0);
  }

  //stop shifting
  digitalWrite(myClockPin, 0);
}
С уважением, Григорий
GitHub FB ВК
Natvorila
Сообщения: 14
Зарегистрирован: 13 фев 2013, 11:23

Re: Arduino UnoR3 + LEDs + shift registers НЕ РАБОТАЕТ КАК О

Сообщение Natvorila »

постоянно горят все диоды на первом регистре и первый на втором
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1019
Зарегистрирован: 22 окт 2010, 23:57

Re: Arduino UnoR3 + LEDs + shift registers НЕ РАБОТАЕТ КАК О

Сообщение Mr.Kubikus »

Попробуйте другой вариант и сообщите результаты.

Код: Выделить всё

//Pin connected to ST_CP of 74HC595
int latchPin = 9;
//Pin connected to SH_CP of 74HC595
int clockPin = 12;
////Pin connected to DS of 74HC595
int dataPin  = 11;

void setup() {
    //set pins to output because they are addressed in the main loop
    pinMode(latchPin, OUTPUT);
    pinMode(clockPin, OUTPUT);
    pinMode(dataPin,  OUTPUT);
}

void loop() {
    digitalWrite(latchPin, 0);
    shiftOut(dataPin, clockPin, MSBFIRST, B01010101);
    shiftOut(dataPin, clockPin, MSBFIRST, B11111111);
    digitalWrite(latchPin, 1);
    delay(100);
}
С уважением, Григорий
GitHub FB ВК
Natvorila
Сообщения: 14
Зарегистрирован: 13 фев 2013, 11:23

Re: Arduino UnoR3 + LEDs + shift registers НЕ РАБОТАЕТ КАК О

Сообщение Natvorila »

результат тот же
Ответить