Серводвигатель
- Войдите на сайт для отправки комментариев
Втр, 17/11/2020 - 09:08
Помогите знатоки.....есть код который управляет сервомотором по времени....дело в том что когда код делался для часов DS1302 все работает как нужно.....как только переделали код для часов DS1307 не работает.....тоесть сервомотор не стартует по времени как с часами DS1302....что где не так не совсем понятно
#include <Wire.h>
#include <RTClib.h>
#include <Stepper_28BYJ.h>
#define knopka 5 // Пин кнопки (можно поменять)
#define STEPS 3000 // Скорость
Stepper_28BYJ stepper(STEPS, 8, 9, 10, 11); // пины
unsigned long timing; // Переменная милис
RTC_DS1307 RTC; ;//SDA to analog 4, SCL to analog 5
int Hour,Min,Sec; // Переменные для часов
int pusk; // Переменная для запуска команды
int schet1; // Переменная для счетчика ложных сработок
void setup()
{
stepper.setSpeed(30); // Установим скорость вращения об/мин
pinMode (knopka, INPUT); // Пин как вход
Wire.begin();
RTC.begin();
Serial.begin(9600);
}
void loop()
{
DateTime now = RTC.now(); // Clock call
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
//Serial.print(Hour); Serial.print(":"); Serial.print(Min); Serial.print(":"); Serial.println(Sec);
//set the time for fish feeding
if ((now.hour(), DEC == 0 && now.minute(), DEC == 52 && now.second(), DEC== 0)||(now.hour(), DEC == 0 && now.minute(), DEC == 53 && now.second(), DEC == 0)) {pusk=1;} // Пуск по времени
if (digitalRead(knopka) == HIGH) {schet1++;} // Нажали кнопку, сработал счетчик ложных сработок
else schet1=0;
if (schet1==200) {pusk=1;} // Счетчик дошел до 200 и запустил
if (pusk==1 && (millis() - timing) >= 2000) {stepper.step(4000); timing = millis(); pusk=2;} // Делаем 4000 шагов в одну строну
if (pusk==2 && (millis() - timing) >= 2000) {stepper.step(-4000); timing = millis(); pusk=0;} // Делаем 4000 шагов в другую строну
//ЕСЛИ НЕ НУЖНА ЗАДЕРЖКА И КРУТИТЬ В ДРУГУЮ СТОРОНУ УБИРАЕМ 2 СТРОЧКИ ВЫШЕ И ПИШИМ
// if (pusk==1){stepper.step(4000); pusk=0;} // Делаем 4000 шагов в одну строну
}
1) Если понятно не все, то что понятно?
2) В чем конкретный вопрос к сообществу?
не понятно что в коде не так что не работает от часов 1307
Т.е. констатируем: вопросов нет, есть потребность получить рабочий код.
если переделывать то уж на ds3231
Вставьте программу по правилам, может кто и поможет. А так - я даже смотреть не буду.
Потребность в помощи разобраться что не так прописано в коде
код вставьте нормально - укажу вам на ошибку. А коли не вставите - значит вам не очень-то и надо
Если Вы думаете, что я выёживаюсь - то нет. Мне просто неудобно читать то гуано, что Вы опубликовали. А поскольку помощь нужна не мне, а Вам, сообщаю, что когда мне станет удобно я Вам, возможно, помогу.
andrei555, а зачем Вам переделка с 1302 на 1307?
Я надеюсь, Вы понимаете, что стоимость такой переделки существенно выше, чем цена нового 1302?
Так что дешевле купить подходящее железо.
1302 не супер точность,,,,,а 1307 поточнее да и лежат без дела
так и не осилил прочитать Правила форума и вставить код как положено?
Если нужно поточнее, то Вам уже посоветовали в посте №4.
А "лежат без дела" - я также уже писал - дешевле купить, чем использовать те, что "лежат".
Так что ни одного внятного довода за 1307 не прозвучало.
Скоро вставлю,,,,,,пока нет возможно добраться до компьютера
Зачем какие либо доводы,,,,,лежат у меня часы 1307 которые на другом устройстве отработали более года и отставание было пару секунд примерно,вот и хочу их использовать в новом проекте,,,,,,,а 1302 которые сейчас работают убегают за сутки на 20 минут назад,,,,,,вот и доводы
Вставил код согласно правил.....надеюсь все так
как обещал, подсказываю - строчка 61 полный бред.
Если у вас был, как вы говорите, "работающий код" для 1302 - откройте и посмотрите, как это было сделано там. Ничего похожего в коде быть не могло...
Если это вы сами наворотили, когда "переписывали код под 1307" - верните обратно
проще конечно если ТС напишет своими словами, что он хочет сделать после вывода времени в монитор порта
переделал код но все равно не работает
Hour=(now.hour(), DEC); - "Что бы это значило?". Рубрика такая была в передаче "Вокруг смеха".
ну так обьясните как нужно.....а не вокруг да около......я не силен в програмировании... новичек
А тут не бюро добрых услуг для всех мимокрокодилов.
На ошибку указали, дальше давай сам, учись. Нам твой степпер на часах не нужен, вобщем-то.
умную пиздеж все горазды писать а по делу мало мыслей.....МИМОКРОКОДИЛ ЗАЕБАНЫЙ
Андрей, а вот это уже хамство. Тебе два раза указали на одну и ту же ошибку. Твой код для 1302 такой же бредовый, как для 1307. Не стоило врать, что он "раньше работал". Возьми учебник да разберись.
А ты вместо благодарности поносишь других участников.
Админы, забаньте неадеквата
ну так обьясните как нужно.....а не вокруг да около......я не силен в програмировании... новичек
Нужно писать осмысленный текст.
А как это преобразовать в нечто осмысленное, никто не знает, т.к. никто кроме Вас не знает, какой смысл Вы пытались вложить в эту строку.
Вообще, в программе программист отвечает за каждую букву. Соответственно, может объяснить, что делает каждая конструкция. Вы можете объяснить, что, по Вашему мнению должна делать эта строка? Если "да" - объясните. Если "нет" - расскажите, зачем Вы это вставили в свой скетч.