Помогите пожалуйста переделать чужой скетч

Dnik

✩✩✩✩✩✩✩
30 Июл 2022
4
0
Проблема такая. Есть проект прикормочного кораблика SC-A0. Нужно переделать скетч, нужно добавить две кнопки для управления электро магнитами. Чтобы каждый бункер открывался отдельно. Сервопривод остается. Управление моторами и реверс меня устраивает.
На выходах приемника должны быть 1, секунд по 5.
На пульте свободны А1, А4, А5, А6, А7, D2-D8
Приемник свободны D2, D4, D7, A0, A1, A2, A3
И если можно светодиод обрыв связи, желательно на пульте.
Обращался с этой просьбой к автору проекта, он отказался, говорит "сам переделывай". Я в программировании 0!
 

Вложения

Изменено:

Dnik

✩✩✩✩✩✩✩
30 Июл 2022
4
0
Кнопки в пульте на контакты Ардуино Нано - А0, А1, А4 с учетом дребезга контактов. Кнопка резистором 10к подтянута к "земле", а второй вывод к +5 в.
Выходы в приемнике Ардуино Про мини - D2, D7, D8
 
Изменено:

viktor1703

★★★✩✩✩✩
9 Дек 2021
611
145
Пока модераторы не забанили оформи код как положено. А так делов-то на пять минут. Интересно взглянуть на электромагниты, которые будут скидывать груз.
 

Вложения

Dnik

✩✩✩✩✩✩✩
30 Июл 2022
4
0
Я не пойму, что нужно сделать, какой код вставить? :mad:
Электро магниты стоят на "КАРП Академия". Крышки бункера держатся двумя постоянными магнитами. Эти магниты прилипают к сердечникам с катушкой. При подаче 12в. на катушку получается сердечник магнит, а как известно два магнита одинаковой полярности отталкивают друг-друга, в результате чего открывается бункер.
 
Изменено:

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,407
976
58
Марий-Эл
@Dnik,
C++:
//Строки для файлсейва
unsigned long started_waiting_at = millis();
while ( ! radio.available() )
{ // FILESAVE
  if (millis() - started_waiting_at > 700 && millis() - started_waiting_at < 5000)
  { //если связь прерывается от 800мс до 5000мс происходит остановка мтора
    analogWrite(5,0);
    analogWrite(6,0);
    analogWrite(3,0);
    // myservo3.writeMicroseconds(100);
    // myservo3.detach();
  }
  // if (millis() - started_waiting_at > 5000)
  //{ //через 5 секунд пин отключается
  // myservo3.detach();
  // }
  //Serial.print(sputniki_moy); Serial.print(" "); Serial.print(recieved_data[0]); Serial.print(" "); Serial.print(recieved_data[1]); Serial.print(" КУРС КОМПАС"); Serial.println(compass_yaw);
}
Ну как то так.
 

Бармалей31

★✩✩✩✩✩✩
22 Сен 2020
220
36
И вот здесь добавьте 2 переменные в массив для кнопок

//Создание массива для передачи
transmit_data[0] = motor_l; //канал передней скорости левого мотора
transmit_data[1] = motor_r; //канал передней скорости правого мотора
transmit_data[2] = sbros; // канал сброса груза
transmit_data[3] = motor_z; //канал задней скорости на оба мотора
transmit_data[4] = magnit_1; //магнит 1
transmit_data[5] = magnit_2; //магнит 2
 

viktor1703

★★★✩✩✩✩
9 Дек 2021
611
145
Ну не только, ещё нужно объявлять переменные magnit_1, magnit_2, объявить массив на 6 элементов, а не на 4, ну и функции обработки кнопок и присвоение значений новообъявленным переменным. Потом ещё паршивку приемника нужно палочкой поковырять.
 
Изменено:

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,407
976
58
Марий-Эл
@Бармалей31, Заднюю/переднюю по каналам разносить не нужно. Просто значение нужно со знаком. При включении положение джойстика принимается за ноль. Вперёд положительное число, назад отрицательное.
И лучше всё это паковать в структуру, а не в массив. Сталкивался с тем, не помню когда это возникает, sizeof иногда неправильно определяет размер массива. Нулевое значение элемента считает за конец массива. Был такой случай один раз в жизни.
 

Бармалей31

★✩✩✩✩✩✩
22 Сен 2020
220
36
Заднюю/переднюю по каналам разносить не нужно. Просто значение нужно со знаком. При включении положение джойстика принимается за ноль. Вперёд положительное число, назад отрицательное.
При чём тут задняя - передняя? Я про дополнительные магниты сброса писал.
 

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,407
976
58
Марий-Эл
@Бармалей31,
transmit_data[0] = motor_l; //канал передней скорости левого мотора
transmit_data[1] = motor_r; //канал передней скорости правого мотора
transmit_data[3] = motor_z; //канал задней скорости на оба мотора
Я про эти переменные. Из них я понял, что управление назад/вперёд, раскидано по нескольким переменным.
 

Бармалей31

★✩✩✩✩✩✩
22 Сен 2020
220
36
А досюда прочитать не успели?

transmit_data[4] = magnit_1; //магнит 1
transmit_data[5] = magnit_2; //магнит 2

Именно это автор просит добавить. Первые строки у него уже есть.
 

Dnik

✩✩✩✩✩✩✩
30 Июл 2022
4
0
Всем спасибо за проявленный интерес, а особенно "victor1703" благодаря которому, программа заработала, как я и хотел, добавлены две кнопки.
 

Dnik1

✩✩✩✩✩✩✩
23 Мар 2023
3
0
@viktor1703,
Виктор, добрый вечер. Я с вами переписывался осенью под ником DNIK. Забыл там пароль и зайти на ту страничку не могу. Сброс пароля здесь не работает. Виктор, вы мне помогали с написанием программы для прикормочного кораблика на ардуино с одним и двумя моторами. До сих пор все работало,но на днях сдох радио модуль на приеме. Я его заменил, все заработало, но появились непонятные глюки с серверами, руль и сброс начали дергаться в разные стороны и это происходит, когда джойстик переводишь вперед или назад. Влево и вправо нормально. Я джойстик разделил на два отдельных. Все это происходит на одномоторном кораблике. Я менял ардуинки RX и TX ничего не помогло. Виктор, может у вас есть варианты этой проблемы.
 
Изменено:

Бармалей31

★✩✩✩✩✩✩
22 Сен 2020
220
36
Ну просто программа глючит, не протестирована как надо. У другого железа чуть другие параметры, она и глючит. Попробуйте подобрать нужные параметры.
 

viktor1703

★★★✩✩✩✩
9 Дек 2021
611
145

te238s

★★✩✩✩✩✩
14 Ноя 2021
374
97
Логично предположить что связь плохая,через раз. Либо модуль брак,либо питание. Отсюда и дерганья. Нам сложно диагностировать неведомо что.
 

fridgetester

✩✩✩✩✩✩✩
3 Июн 2022
34
6
чё вы с ними делаете, года три 24/7 работает штук пять энэрэфок, только батарейки меняй.
у вас либо скетч кривой, либо с питанием проблемы. ну и частотный канал, скорость передачи и мощность программно можно попробовать поменять.
 

Dnik1

✩✩✩✩✩✩✩
23 Мар 2023
3
0
Модуль заменил и на джойстик добавил НЧ фильтр. Все работает.

@fridgetester,
Я ничего не делаю. Это рыбак его упалил. Говорит, включал без антенны.
 

Dnik1

✩✩✩✩✩✩✩
23 Мар 2023
3
0
Была в модуле, а когда установил новый модуль от джойстика "вперед - назад" начали дергаться серверы. После установки фильтров, все успокоилось. Рыбак говорит, что серверы дергались и до поломки модуля.