Top.Mail.Ru
Уведомления
Очистить все

замена макетной платы Arduino328 на ESP32WROWER-1B

Страница 2 / 3
(@olga549)
Level 2

@aveal здравствуйте. пишу результат проверки последнего скетча. результат точно такой же как и с предыдущим. фото прилагаю (оно один в один) , но на предмет неисправности схемы или неправильного соединения выводов ESP k 74HC595 по SPI скажу так. есть такая программа FL-Prog как ее называют кубики складывать!!!! кубики складывать меня еще давно научили, то-есть понимать работу логических элементов, но иногда в ней тоже приходится писать, а с этим тоже провал.... но набросала не сложный тест из кубиков для проверки правильности подключения выводов. схему теста прилагаю. загрузила и О!! работает. переключает поочередно диодики-значит спиай подключено правильно. но вот что я заметилав фл-прог так это то что при подсоединении на вход фото диода который сбрасывает цикл или если кнопкой нажимать на корпус вместо фотодиода, то в ручную .то-есть медленно,переключение происходит по кольцу, но как только частота переключения фотодиода увеличивается (например на фотодиод воздействовать через диск приделанный к  мотору, а в нем отверстие для излучателя, на подобии щелевых датчиков . переключение останавливается полностью. или в место фото диода пробовала датчик холла -магнитик медленно подносишь переключается .моторчик магнитик крутит-эффект пропадает.  скорость моторчика понижаешь до 1 оборот/сек или пол-сек переключение по кольцу работает в ФЛ-Прог.)) такое ощущение что  вход не успевает обрабатывать данные. при загрузке скетча глобуса , если при использовании АТМЕГА328 воздействовать в ручную на датчик фото-лед происходит некая смена информации и диоды меняются, а на есп32 такого не происходит, сколько не воздействуй. как засветилось то что показала так и стоит.получается что фото-лед не управляет информацией .только когда я включаю конструкцию на есп32 или на атмега328 на вращение конструкции с начального цикла ни один диод не светится,и  результат для атмега328 появляется картинка, а с использованием есп32 появляется вот такая ерунда. для обоих вариантов информация выводится после нескольких секунд 5-7сек вращения конструкции.  но я много видела видео и фоток построение схем на POV эффекте с использованием ESP32 и у всех на вход стоит также фотодиод для сброса цикла строки и все работает и моторы там стоят не только простые 1200об/мин , а в некоторых самоделках показаны моторы от квадрокоптеров, то-есть там как мин 15000-30000об/мин и работает. только к этим проектам нет никакого описания и т.д. просто видео или фотки готовой игрушки. а эта чем хороша, что к ней есть все , но сейчас тоже уже не найти например 3D симулятора который показывает работу программы JAVA как будет выглядеть на самом глобусе. его уже нет в нете.

  я что бы вас не вводить в заблуждение предварительно все проверила на предмет ошибок сборки, сразу скажу ОШИБОК НЕТ. слишком просто там все 4 контакта между есп и обвязкой. 3pin-SPI, 1pin FOTO LED. это получается программная ошибка. то-есть что то после того как влезли в код что то не учли. а вот что ????? вот еще зип там вся схемотехника сборки в платах. схемы как таковой нет. с плат рисовала.

ОтветитьЦитата
Создатель темы Размещено : 03.07.2025 15:53
Aveal
(@aveal)
Top level Admin

@olga549 Помимо SPI там надо еще PROGMEM искоренить, обновил - https://disk.yandex.ru/d/Ad5ZOdKRKpm63A

ОтветитьЦитата
Размещено : 04.07.2025 18:42
(@olga549)
Level 2

@aveal здравствуйте проверила  последний тест 3 ничего не меняется картинка одна и таже что и в предыдущих. только вот что я нашла разбираясь тоже сама. я читала правила написания скетча и проверяла и появился вопрос. вот пример из кода

void EnableSPI(void)
{
// SPCR |= 1 << SPE; ----вот здесь фигурных скобок быть не должны,в обоих случаях, если в них ничего нет. пересмотрев кучу написанных скетчей, пустых скобок не нашла такого типа что бы в них ничего не было. то-есть в них обязательно должна быть функция помещена. значит они не нужны раз вы 2-ным слешем отключили функцию, но стоит их убрать и начинаются снова ошибки, это неправильно сконфигурирован SPI. я все таки схожусь во мнении. может и ошибаюсь . обычные круглые есть пустые, а фигурных нет..... значит скобки {} играют роль, а в них ничего нет.......
} //включитьSPI

void DisableSPI(void)
{
// SPCR &= ~(1 << SPE);
} //отключитьSPI

void SendRecSPI(byte Dbyte)//отправить запись SPI
{
hspi.beginTransaction(SPISettings(4000000, MSBFIRST, SPI_MODE0));
hspi.transfer(Dbyte);
hspi.endTransaction();
}

ОтветитьЦитата
Создатель темы Размещено : 04.07.2025 21:45
(@olga549)
Level 2

@aveal

ошибки

вот я убрала скобки и выдал ошибку....

ОтветитьЦитата
Создатель темы Размещено : 04.07.2025 21:56
Aveal
(@aveal)
Top level Admin

Фигурные скобки ограничивают тело функции, они должны в данном случае быть. Эти функции непонятно зачем вообще были нужны в первичном скетче, поэтому я закомментировал по-быстрому все, что в них было (в данном случае по одной строке).

В принципе, следующий шаг - проверить, что прерывание срабатывает. Завтра посмотрю более детально скетч. 

ОтветитьЦитата
Размещено : 05.07.2025 01:42
(@olga549)
Level 2
описание написанного 2

@aveal здравствуйте. на сколько я поняла, в этих функциях прописаны действия операций с битами. и написано если не ошибаюсь. прописаны сдвиг бит. вот

описание написанного
ОтветитьЦитата
Создатель темы Размещено : 05.07.2025 21:11
(@olga549)
Level 2

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

ОтветитьЦитата
Создатель темы Размещено : 05.07.2025 21:22
Aveal
(@aveal)
Top level Admin

EnableSPI() и DisableSPI() включают и отключают SPI в первичном скетче.

Запись от: @aveal

В принципе, следующий шаг - проверить, что прерывание срабатывает.

Так там вообще не тот вывод для прерывания назначен, по логике обработки так должно быть:

attachInterrupt(digitalPinToInterrupt(LS_Pin), Erkenne_Flanke, FALLING);

При этом и в первичном скетче не соответствует, здесь пин 3:

#define LS_Pin    3  // Lichtschranke//фотоэлемент

Здесь пин 1, а не 3:

attachInterrupt(1, Erkenne_Flanke, FALLING);

При текущем подключении инфракрасный датчик на 33 пин ESP32 заведен?

Исправленный вариант - https://disk.yandex.ru/d/hq-bEd91zZkjSg

ОтветитьЦитата
Размещено : 07.07.2025 11:48
(@olga549)
Level 2

@aveal здравствуйте. все правильно на атмеге 3 пин. а я на еспе32 назначила 33 так как он универсальный

ну вот согласно этой таблицы я и назначила пин 33, на атмеге нет же 33 пина, есть D3, а на ESP32 io33 универсальный. ну скетч для атмеги как я его прислала полностью работал для атмега 328 ,я его проверяла. attachInterrupt(1, Erkenne_Flanke, FALLING); но 1 -это не номер пина.  это 1 говорит о том что используется не пин 1 для прерывания , а порт 1

пояснения

так как в ардуино есть несколько портов поддерживающих  прерывание.

вот в этой папке лежит код оригинал. в котором не проводились никакие вмешательства и он полностью проверен в деле(РАБОТАЕТ) в нем ни одной закарючки не менялось.

ОтветитьЦитата
Создатель темы Размещено : 07.07.2025 18:45
(@olga549)
Level 2

@aveal  единственное в чем я могла сейчас ошибиться это в том что надо выбрать не универсальный пир 33 а тот пин который поддерживает прерывание также как в атмега. вот в этом моя ошибка. поэтому он или медленно работает или может вообще при больших скоростях не работать. теперь я поняла. 33 пин поддерживает прерывание????? надо разобраться. и выбрать тот пин который поддерживает прерывание...О как!!!! вот в чем моя ошибка. точно.

ОтветитьЦитата
Создатель темы Размещено : 07.07.2025 18:53
Aveal
(@aveal)
Top level Admin

@olga549 33 - подходит, я его поставил в скетче, теперь прерывание должно работать.

ОтветитьЦитата
Размещено : 07.07.2025 19:06
Aveal
(@aveal)
Top level Admin

Запись от: @olga549

так как в ардуино есть несколько портов поддерживающих  прерывание.

Ага, точно, там вообще только два порта для прерывания:

#define digitalPinToInterrupt(p)  ((p) == 2 ? 0 : ((p) == 3 ? 1 : NOT_AN_INTERRUPT))
ОтветитьЦитата
Размещено : 07.07.2025 19:08
(@olga549)
Level 2

@aveal все правильно вы сказали на счет прерывания. в исходнике порт выбран для ардуино, А надо для есп32. теперь и я тоже начала понимать что я выпустила из внимания.

ОтветитьЦитата
Создатель темы Размещено : 07.07.2025 19:09
(@olga549)
Level 2

@aveal а есп какой пин поддерживающий прерывание выбрать???

ОтветитьЦитата
Создатель темы Размещено : 07.07.2025 19:10
(@olga549)
Level 2

@aveal вот что дал яндекс какой пин надо выбрать пин для есп32

прерывание для есп32
ОтветитьЦитата
Создатель темы Размещено : 07.07.2025 19:24
Страница 2 / 3
Поделиться: