Перейти к содержанию

Alex-DJ

Members
  • Постов

    42
  • Зарегистрирован

  • Посещение

Информация о Alex-DJ

  • День рождения 13.02.1965

Информация

  • Пол
    Мужчина
  • Город
    Баку

Электроника

  • Стаж в электронике
    Более 20 лет

Достижения Alex-DJ

Новобранец

Новобранец (2/14)

  • 10 постов на форуме
  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме
  • 10 лет  на форуме

Последние значки

0

Репутация

  1. Пару дней назад решил начать изучать ардуино, ибо всю свою сознательную жизнь я собирал устройства на мелкой логике. Но тут вот приспичило. А именно мне нужно как то осуществить такой проект. Есть для начала 2 сдвиговых регистра 74НС595 и есть ардуино уно р3 Собрал схему на рисунке Вот скетч к ней int dataPin = 9; //Пин подключен к DS входу 74HC595 int latchPin = 10; //Пин подключен к ST_CP входу 74HC595 int clockPin = 11; //Пин подключен к SH_CP входу 74HC595 void setup() { //устанавливаем режим OUTPUT pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); digitalWrite(latchPin, LOW); // устанавливаем синхронизацию "защелки" на LOW shiftOut(dataPin, clockPin, LSBFIRST, B01001100); // передаем последовательно на dataPin digitalWrite(latchPin, HIGH); //"защелкиваем" регистр, тем самым устанавливая значения на выходах } void loop() { } На светодиодах высветилась комбинация 01001100. Ура, моя первая схема на микроконтроллере работает. Далее дополнил схему ещё одним регистром сдвига, и добавил ещё 8 светодиодов. И его скетч int dataPin = 9; //Пин подключен к DS входу 74HC595 int latchPin = 10; //Пин подключен к ST_CP входу 74HC595 int clockPin = 11; //Пин подключен к SH_CP входу 74HC595 void setup() { //устанавливаем режим OUTPUT pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); digitalWrite(latchPin, LOW); // устанавливаем синхронизацию "защелки" на LOW // начинаем "продавливать" данные по цепочке регистров, начиная с последнего shiftOut(dataPin, clockPin, LSBFIRST, B01001100); // передаем последовательно на dataPin - в первом регистре значение B01001100 shiftOut(dataPin, clockPin, LSBFIRST, B10000111); // "продавливаем" данные в следующий регистр - в первом регистре B10000111, во втором - B01001100 // и т.д. по количеству регистров digitalWrite(latchPin, HIGH); //"защелкиваем" регистр, тем самым устанавливая значения на выходах } void loop() { } Теперь на 16 светодиодах 01001100 10000111 Но мне надо чтоб был массив из десятка или двух вот таких двух байтовых комбинаций, и чтоб можно было каждую комбинацию выводить на светодиоды нажатием кнопки. То есть нажал кнопку, высветилась первая двухбайтовая комбинация на этих 16 светодиодах, нажал ещё раз, высветилась следующая , и так далее по порядку. Скетч подключения кнопки тоже нашёл интернете // пины подключенных устройств int switchPin = 8; int ledPin = 11; // переменные для хранения состояния кнопки и светодиода boolean lastButton = LOW; boolean currentButton = LOW; boolean ledOn = false; void setup() { pinMode(switchPin, INPUT); pinMode(ledPin, OUTPUT); } // функция для подавления дребезга boolean debounse(boolean last) { boolean current = digitalRead(switchPin); if(last != current) { delay(5); current = digitalRead(switchPin); } return current; } void loop() { currentButton = debounse(lastButton); if(lastButton == LOW && currentButton == HIGH) { ledOn = !ledOn; } lastButton = currentButton; digitalWrite(ledPin, ledOn); } Вот теперь пока как это всё связать не могу понять, да и в интернете аналогичного не нашёл. Есть всякие мигалки и бегающие лгоньки , но там всё по циклу повторяется. Знатоки ардуино помогите мне пожалуйста в освоении этой науки. Научусь азам дальше проще наверное будет. Заранее спасибо.
×
×
  • Создать...