Например TDA7294

Форум РадиоКот :: Просмотр темы - Прошу помощи с ардуино и моим проектом
Форум РадиоКот
http://radiokot.ru/forum/

Прошу помощи с ардуино и моим проектом
http://radiokot.ru/forum/viewtopic.php?f=57&t=167270
Страница 1 из 3

Автор:  Alex-DJ [ Вт дек 03, 2019 14:55:05 ]
Заголовок сообщения:  Прошу помощи с ардуино и моим проектом

Пару дней назад решил начать изучать ардуино, ибо всю свою сознательную жизнь я собирал устройства на мелкой логике. Но тут вот приспичило. А именно мне нужно как то осуществить такой проект. Есть для начала 2 сдвиговых регистра 74НС595 и есть ардуино уно р3

Собрал схему на рисунке
Вложение:
Shift-Register-74HC595_bb.png [222.63 KiB]
Скачиваний: 227


Вот скетч к ней
Код:
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 светодиодов.

Вложение:
Shift-Register-74HC595_02_bb.jpg [95.46 KiB]
Скачиваний: 188


И его скетч
Код:
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);
}


Вот теперь пока как это всё связать не могу понять, да и в интернете аналогичного не нашёл. Есть всякие мигалки и бегающие лгоньки , но там всё по циклу повторяется. Знатоки ардуино помогите мне пожалуйста в освоении этой науки. Научусь азам дальше проще наверное будет. Заранее спасибо.

Автор:  Самсусамыч [ Вт дек 03, 2019 18:14:20 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

Я не ардуинщик, но могу подсказать логику работы… как один из вариантов… нужна некая переменная в которой будет производиться счёт нажатия кнопки… а так же некий массив из которого байты (в твоём случае 2 байта) будут отправляться в регистры… после очередного нажатия проверяется число в данной переменной… и в соответствии определённого числа необходимые 2 байта заносятся в выше указанный массив, а затем они из массива отправляются в регистры… затем ждёшь следующего нажатия… и так далее. Как то так.

ЗЫ. Вот здесь более подробно смогут подсказать…

Автор:  Alex-DJ [ Вт дек 03, 2019 18:23:31 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

Самсусамыч, спасибо. Но по теории я тоже понимаю что по нажатию кнопки должна запускаться некая функция отправляющая данные на светодиоды, потом кнопка переходит в режим ожидания до следующего нажатия и снова запускает функцию оправки данных на светодиоды...Примерно как вы объяснили. Но как скетч написать не знаю.

Автор:  Самсусамыч [ Вт дек 03, 2019 18:37:09 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

Чтобы писать что-то, наверное вначале необходимо изучить язык на котором хочется что-то писать, ну и изучить естественно МК для которого все эти инструкции предназначаются.

Автор:  BOB51 [ Вт дек 03, 2019 18:49:23 ]
Заголовок сообщения:  Re: Котуинко

Для Alex-DJ.
Собственно если захотелось "рассыпушными" светиками поиграться...
Аппаратные средства:
"регистровый файл"
http://img.radiokot.ru/files/20529/hkjb4s72g.JPG
http://img.radiokot.ru/files/20529/hkjbckakx.JPG
http://img.radiokot.ru/files/20529/hkjedehd8.JPG
анодные ключи
http://img.radiokot.ru/files/20529/hkjksskgj.jpg
http://img.radiokot.ru/files/20529/hkjkreqko.GIF
тест-экран
http://img.radiokot.ru/files/20529/hkjee7774.JPG
http://img.radiokot.ru/files/20529/hkjl7uvsk.jpg
блок источников тока
http://img.radiokot.ru/files/20529/hkjq5h312.jpg
варианты схемотехники "источника тока"
http://img.radiokot.ru/files/20529/12h2o0t2kv.GIF
удаленный симисторный ключ
http://img.radiokot.ru/files/20529/tt9lug6me.JPG
касательно прожки...
Лучше опишите словами "хотелки" да на основе какой адуриньи их оформить желательно (с учетом имеющихся источников питания).
:beer:

Автор:  BOB51 [ Вт дек 03, 2019 18:54:01 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

Чтобы писать что-то, наверное вначале необходимо изучить язык на котором хочется что-то писать, ну и изучить естественно МК для которого все эти инструкции предназначаются.
В приложении к адуринье изучение начинки МК не является первостепенным.
А вот изучение возможностей "референса" (https://www.arduino.cc/reference/en/ или off line, установленный вместе со средой) и основ Си - ОБЯЗАТЕЛЬНО.
8)
shiftOut() там совсем необязателен - оная функция у адуриньи организована программно и от самодельного НИЧЕМ отличаться не будет.
Достаем даташит на 595й
и какую-нить кнопу однако надо...
А перебор "комбинаций в ожидании" на основе генератора случайных чисел с изменением состояния или
по времени (delay(), millis()) или по конопе (там свои заморочки в зависимости от схемотехники и/или "хотелок").
8)
Данные по возможной обвязке "на поиграмс" я тут положил https://radiokot.ru/forum/viewtopic.php ... 6#p3748446
:tea:
Итак...
Схемка с описанием хотелок?
(шаблоны под splan -
Вложение:
shems nanopromini.zip [7.5 KiB]
Скачиваний: 151
)
8)

Автор:  Alex-DJ [ Вт дек 03, 2019 19:15:44 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

BOB51, вы не поняли меня...У меня уже на макетке собрана схема и она работает с ардуино, в первом посте я писал.

Вот эта схема
Вложение:
Shift-Register-74HC595_02_bb.jpg [95.46 KiB]
Скачиваний: 136


и вот скетч, прошивка к ардуино
Код:
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() {
}


как видите в прошивке есть пара байтов 01001100 и 10000111, при запуске схемы первый байт выводится на вторые восемь светодиодов, а второй байт на первые восемь светодиодов. Всё работает. Но мне мне нужно чтоб таких пар байтовых как эти было десять, двадцать, тридцать, и была кнопка. Нажал кнопку вывелась первая пара байтов из списка, нажал ещё раз вывелась следующая пара байтов и так по списку до конца. Имеется ардуинка и пара микросхем сдвиговых регистров 595.

Автор:  BOB51 [ Вт дек 03, 2019 19:21:40 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

Заранее заданные статические данные (массив из ПЗУ или ЕЕПРОМ, заданный автором по взгляду на потолок) или случайным образом полученный массив из ОЗУ/переменных)?
И где кнопа?
8)
Кроме прочего - учитесь рисовать в общепринятом стиле (splan хотя-бы) - рисунки в стиле "ранней автомобильной техники" тут большинство КОТОВ разбирать не станет.
:))

Автор:  Alex-DJ [ Вт дек 03, 2019 19:30:25 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

Так в том то и дело что кнопки нет в этом примере, и в этом примере всего два байта, посмотрите код прошивки, в нём и есть эти два байта вот в этом куске:

Код:
// начинаем "продавливать" данные по цепочке регистров, начиная с последнего
  shiftOut(dataPin, clockPin, LSBFIRST, B01001100);   // передаем последовательно на dataPin - в первом регистре значение B01001100
  shiftOut(dataPin, clockPin, LSBFIRST, B10000111);   // "продавливаем" данные в следующий регистр - в первом регистре B10000111, во втором - B01001100


а у меня должен быть список по два байта примерно так

01101100 000001000
01000101 010001010
11111100 101010101
......
10100000 100101010
01010010 100000000
01010101 000000010

ну и так далее

и каждая такая пара должна выводиться на светодиоды при нажатии на кнопку. Кнопки в данном примере нет пока, вот её и надо туда как то впихнуть.

Добавлено after 1 minute 18 seconds:
BOB51 я ничего не рисовал, пример взят отсюда с сайта http://codius.ru/articles/Arduino_%D0%A ... 1%82%D1%8B

Автор:  BOB51 [ Вт дек 03, 2019 19:43:56 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

С простым инкрементом (или ГСЧ, простой "рециркуляцией по кольцу") особо проблем не будет

А вот с заранее заданной таблицей - надо progmem вспоминать.
Со строками символов ASCII там особо не сложно, а вот с простыми массивами без конспекта по памяти сложновато...
С ЕЕПРОМкой чуток проще, но мне чего-то не слишком нравится (или на моей адуринье чего-то с той ЕЕПРОМ не совсем хорошо опосля "поджарки" :roll: ).
8)

Автор:  Alex-DJ [ Вт дек 03, 2019 19:52:45 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

BOB51, а где кнопка и её обработчик ?

Автор:  Dimon456 [ Вт дек 03, 2019 19:58:28 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

Alex-DJ писал(а):
BOB51, а где кнопка и её обработчик ?
Здесь

Автор:  BOB51 [ Вт дек 03, 2019 20:10:59 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

Это уже ЖИРНООО.
Мнеуу СПААТКИИ ОХОТА...
:)))
можно по простому подвесить на лапку внешнего прерывания (D2 (INT0) или D3 (INT1))
если прерываний не жабко,
а можно на любой вывод в режиме ожидания с отсевом дребезга контактов.
Это ежли конопа МУХАНИЧЕСКАЯ (дешовая).
Ежли воть такая
http://img.radiokot.ru/files/20529/1mkbqcj7fc.jpg
http://img.radiokot.ru/files/20529/1mkbqhklf8.jpg
http://img.radiokot.ru/files/20529/1mkbqmrbvy.GIF
(или "перекидная" с R-S триггером на 561Ла7/155Ла3)
там антидребезг без надобности.
8)
На сегодня я ужо СПУ...
:sleep:

Воть из архиву бездребезговка на 155ЛА3
http://img.radiokot.ru/files/20529/22fu38i39o.GIF
правда там нужны кнопы с "перекидным" контактом.
8)

ТИШИНА...
:roll:

Автор:  Alex-DJ [ Ср дек 04, 2019 14:13:23 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

BOB51, тишина потому что мне не обзор кнопок нужен а то как сделать реализацию того что описал выше.

Автор:  BOB51 [ Ср дек 04, 2019 14:59:29 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

А самому подумать?
Работа с кнопками ничем не отличается от таковой для любой разновидности МК.
Алгоритм:
ждем изменения статуса линии
выполняем задержку примерно 0,02 секунды
выполняем контрольный опрос
если состояние отличается - начинай сначала
если совпадает - выполнить то, чего от конопы требуется и уйти в ожидание отпускания
ожидание отпускания (аналогично ожиданию нажатия, только для другого логического уровня)
при обнаружении отпускания возвращаемся в начало цикла (к контролю нажатия).
Обработка на уровне буферной переменной (можно byte использовать), в которую копируется состояние вывода если имелось его рассогласование с ранее прочитанным.

Это ежли насчет "требуется помощь".
8)
Альтернатива - "сделайте за меня" - там уже другие задачи - надо всю задачу ОТКРЫВАТЬ, а не наводяшши вопросы задавать.
Где-то в дебрях https://radiokot.ru/forum/viewtopic.php?f=62&t=156720 был учебный секундомер на дисплейчике MAX7219 и емкостной кнопе (пуск-стоп-сброс) - искать ЛЕНЬ...
:roll:

Автор:  Dimon456 [ Ср дек 04, 2019 18:10:22 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

Alex-DJ, вам, вероятно, моего примера не достаточно было?
Опрос кнопки
Вывод на индикатор

Автор:  BOB51 [ Ср дек 04, 2019 18:24:23 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

Так автор ЕЩЕ НЕ ОПРЕДЕЛИЛСЯ ни с типом кнопки, ни с ее размещением в схеме.
(механика/ бездребезговое и на каком выводе микросборки)
Так чего ж обсуждать- помогать?
Был бы предложен вариант исходника - тогда можно и посоветовать /скорректировать чего-то.
(как ранее набросок одного из возможных вариантов я выложил).
Посему ЖДЕМС...
:sleep:

Автор:  OKF [ Ср дек 04, 2019 19:58:52 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

ТС, сначала словами распиши что хочешь, а затем так и делай. Типа, горит то-то, нажал кнопку, загорелось то-то, нажал ещё раз... и т.д. Сначала у себя в голове сложи, а без этого никак.(

Автор:  Alex-DJ [ Ср дек 04, 2019 20:11:49 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

ТС, сначала словами распиши что хочешь, а затем так и делай. Типа, горит то-то, нажал кнопку, загорелось то-то, нажал ещё раз... и т.д. Сначала у себя в голове сложи, а без этого никак.(


Я же 4 раза уже написал, есть 16 светодиодов, есть два сдвиговых регистра 595...есть кнопка.
Есть 20, 30, 40 двухбайтовых комбинаций

01101100 000001000
01000101 010001010
11111100 101010101
......
10100000 100101010
01010010 100000000
01010101 000000010

ну и так далее, для этих самых 16 светодиодов. Нажал кнопку высветилась первая двухбайтовая комбинация, нажал ещё раз высветилась следующая пара, и так до последней.

Добавлено after 2 minutes 35 seconds:
Alex-DJ, вам, вероятно, моего примера не достаточно было?
Опрос кнопки
Вывод на индикатор


Здесь вроде счёт до десяти идёт, из того примера, и не могу понять где тут мой массив двух байтовых комбинаций

и ещё непонятно что это такое:
Код:
byte H_byte[10] = {
  0b01001100, 0b01000101
}
byte L_byte[10] = {
  0b10000111,0b010001010
}

Автор:  OKF [ Ср дек 04, 2019 20:41:19 ]
Заголовок сообщения:  Re: Прошу помощи с ардуино и моим проектом

То есть Вам кнопкой нужно перебирать кучу комбинаций? Ну так, по каждому нажатию меняете комбинацию, к примеру от 0 до 9, которую передаёте на 595, какие вопросы?
Для примера Вам даны 2 массива по 10 комбинаций для старшего и младшего байта. Только самое начало, дальше Вы уже сами должны дописать то что Вам хотелось бы видеть.

Страница 1 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/