@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. это получается программная ошибка. то-есть что то после того как влезли в код что то не учли. а вот что ????? вот еще зип там вся схемотехника сборки в платах. схемы как таковой нет. с плат рисовала.
@olga549 Помимо SPI там надо еще PROGMEM искоренить, обновил - https://disk.yandex.ru/d/Ad5ZOdKRKpm63A
@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();
}
Фигурные скобки ограничивают тело функции, они должны в данном случае быть. Эти функции непонятно зачем вообще были нужны в первичном скетче, поэтому я закомментировал по-быстрому все, что в них было (в данном случае по одной строке).
В принципе, следующий шаг - проверить, что прерывание срабатывает. Завтра посмотрю более детально скетч.
@aveal здравствуйте. на сколько я поняла, в этих функциях прописаны действия операций с битами. и написано если не ошибаюсь. прописаны сдвиг бит. вот
@aveal я так понимаю что получилось, команда на выполнение осталась, а как ее исполнять программа не понимает , так как отключены данное действие. может и ошибаюсь.
EnableSPI() и DisableSPI() включают и отключают SPI в первичном скетче.
В принципе, следующий шаг - проверить, что прерывание срабатывает.
Так там вообще не тот вывод для прерывания назначен, по логике обработки так должно быть:
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
@aveal здравствуйте. все правильно на атмеге 3 пин. а я на еспе32 назначила 33 так как он универсальный
ну вот согласно этой таблицы я и назначила пин 33, на атмеге нет же 33 пина, есть D3, а на ESP32 io33 универсальный. ну скетч для атмеги как я его прислала полностью работал для атмега 328 ,я его проверяла. attachInterrupt(1, Erkenne_Flanke, FALLING); но 1 -это не номер пина. это 1 говорит о том что используется не пин 1 для прерывания , а порт 1
так как в ардуино есть несколько портов поддерживающих прерывание.
вот в этой папке лежит код оригинал. в котором не проводились никакие вмешательства и он полностью проверен в деле(РАБОТАЕТ) в нем ни одной закарючки не менялось.
@aveal единственное в чем я могла сейчас ошибиться это в том что надо выбрать не универсальный пир 33 а тот пин который поддерживает прерывание также как в атмега. вот в этом моя ошибка. поэтому он или медленно работает или может вообще при больших скоростях не работать. теперь я поняла. 33 пин поддерживает прерывание????? надо разобраться. и выбрать тот пин который поддерживает прерывание...О как!!!! вот в чем моя ошибка. точно.
@olga549 33 - подходит, я его поставил в скетче, теперь прерывание должно работать.
так как в ардуино есть несколько портов поддерживающих прерывание.
Ага, точно, там вообще только два порта для прерывания:
#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : NOT_AN_INTERRUPT))
@aveal все правильно вы сказали на счет прерывания. в исходнике порт выбран для ардуино, А надо для есп32. теперь и я тоже начала понимать что я выпустила из внимания.
@aveal а есп какой пин поддерживающий прерывание выбрать???
@aveal вот что дал яндекс какой пин надо выбрать пин для есп32