регистр

Тема в разделе "Arduino & Shields", создана пользователем Жека, 28 сен 2012.

  1. Жека

    Жека Нуб

    Доброе время суток, суть темы такова
    Два регистра сдвига подключены последовательно 74HC165 у нас получается 16 кнопак
    Регистр сдвига подключаем к Атмега 1280 (Ардуино)
    Пишем:
    int indataPin = 11;
    int inclockPin = 12;
    int inloadPin = 13;
    int temp = 0;.

    void setup(){
    Serial.begin(9600);
    pinMode(indataPin, INPUT);
    pinMode(inclockPin, OUTPUT);
    pinMode(inloadPin, OUTPUT);
    }

    void loop(){
    digitalWrite(inloadPin, 0);
    digitalWrite(inloadPin, 1);
    for(int i=0; i<=15; i++){
    digitalWrite(inclockPin, 0);
    temp = digitalRead(indataPin);
    digitalWrite(inclockPin, 1);
    Serial.print (temp);
    }
    Serial.println ("");
    Serial.println ("--------");
    delay(2000);


    Всё работает всё выводится в терминал при нажатие кнопки
    Далее подключаем регистр сдвига 74HC595 тоже последовательно в качестве нагрузки используем 16 светодиодов
    Пешем :

    #define DS 11
    #define SHCP 12
    #define STCP 8

    void setup()
    {
    pinMode(DS,OUTPUT);
    pinMode(SHCP,OUTPUT);
    pinMode(STCP,OUTPUT);
    }

    void loop()
    {
    shiftOut(DS,SHCP,LSBFIRST,B01111111);
    shiftOut(DS,SHCP,LSBFIRST,B11111111);
    digitalWrite(STCP,HIGH);

    Подскажите пожалуйста как сделать чтобы это всё в мете работало , когда нажимаешь первую кнопку загорается первый светодиод, нажимаешь вторую загорается второй.

    Безимени-1 схема копия.jpg
     
  2. mike124

    mike124 Нерд

    Вы считываете код с клавиатуры. Вот этот код загоняйте в регистры светодиодной матрицы.
     
  3. Жека

    Жека Нуб

    Код (Text):

     
        int DS = 9;                      // дата
        int SHCP = 10;                  // защёлка
        int STCP = 8;                  // время
     
        int indataPin = 11;            // Вывод  данных 165
        int inclockPin = 12;          // Вывод время 165
        int inloadPin = 13;          // Вывод выбора 165
        int Data;              // Переменная 165
     
        void setup()
        {
        Serial.begin(9600);              //установка порта на скорость 9600 бит/сек
       
     
        pinMode(DS,OUTPUT);              // пин выход дата
        pinMode(SHCP,OUTPUT);            // пин выход защёлки
        pinMode(STCP,OUTPUT);          // пин выход время
       
        pinMode(indataPin, INPUT);      //  Ввод 165.
        pinMode(inclockPin, OUTPUT);  // Ввод время 165.
        pinMode(inloadPin, OUTPUT);    //  Вывод load 165.
     
     
        }
     
        void loop()
        {
          digitalWrite(inloadPin, 0);              // считываем  165
          digitalWrite(inloadPin, 1);            // выводим данные на последовательный вывод  165.
          for(int i=0; i<=7; i++){              // В цикле считываем каждый из 8 входов (D0-D7) 165.
          digitalWrite(inclockPin, 0);          // Устанавливаем время в лог "0".
          Data = digitalRead(indataPin);        // Читаем текущее состояние выхода данных и сохраняет в дата 165.
          digitalWrite(inclockPin, 1);          // Устанавливаем время в лог "1" и этем завершаем вывод данных.
          Serial.print (Data);                  // Отправляем данные
        }
         
     
                       
        if (Data == '10000000') {                          //  если принят символ '10000000'
        shiftOut(DS,SHCP,LSBFIRST,B10000000);        //формируем биты для регистра сдвига 595
        digitalWrite(STCP,HIGH);
        digitalWrite(STCP,LOW);                  //регистр закрыть защёлку 595
     
        }
        Serial.println ("");
     
        }
     



    ну ни как не хочет работать
     
  4. Жека

    Жека Нуб

    Код (Text):

     
     
        int DS = 9;                      // дата
        int SHCP = 10;                  // защёлка
        int STCP = 8;                  // время
     
        int indataPin = 11;            // Вывод  данных 165
        int inclockPin = 12;          // Вывод время 165
        int inloadPin = 13;          // Вывод выбора 165
        int Data;              // Переменная 165
     
        void setup()
        {
        Serial.begin(9600);              //установка порта на скорость 9600 бит/сек
       
     
        pinMode(DS,OUTPUT);              // пин выход дата
        pinMode(SHCP,OUTPUT);            // пин выход защёлки
        pinMode(STCP,OUTPUT);          // пин выход время
       
        pinMode(indataPin, INPUT);      //  Ввод 165.
        pinMode(inclockPin, OUTPUT);  // Ввод время 165.
        pinMode(inloadPin, OUTPUT);    //  Вывод load 165.
     
     
        }
     
        void loop()
        {
          digitalWrite(inloadPin, 0);              // считываем  165
          digitalWrite(inloadPin, 1);            // выводим данные на последовательный вывод  165.
          for(int i=0; i<=7; i++){              // В цикле считываем каждый из 8 входов (D0-D7) 165.
          digitalWrite(inclockPin, 0);          // Устанавливаем время в лог "0".
          Data = digitalRead(indataPin);        // Читаем текущее состояние выхода данных и сохраняет в дата 165.
          digitalWrite(inclockPin, 1);          // Устанавливаем время в лог "1" и этем завершаем вывод данных.
         
        }
         
     
                       
        if (Data == '10000000') {                          //  если принят символ '10000000'
        shiftOut(DS,SHCP,LSBFIRST,B10000000);        //формируем биты для регистра сдвига 595
        digitalWrite(STCP,HIGH);
        digitalWrite(STCP,LOW);                  //регистр закрыть защёлку 595
     
        }
        Serial.println ("");
     
        }
     
       
     
       
    И так тоже
     
     
     
     
  5. Жека

    Жека Нуб

    Помогите до работать