Ви не увійшли.
Сторінки 1
и тут великий страх перед переполнением...
на великах никто не ездит? только начали придумывать?
http://arduino.ru/forum/programmirovanie/velikoe-perepolnenie-millis
первый пост ну или так: если "по-домашнему"
uint16_t period = 2000; // заданый интервал 2сек.
void loop()
if ((currentMillis = millis()) - startTime > period)
{
тута будет все делатса аш больше 50ти дней подряд! интервалом через 2 секунды
startTime = millis(); // сброс, чтоб отсчет пошел после выполнения последнего вкл лампы ато мало ли что, вдруг затяжное
//действие
}
а на принтере ограничение в 14 мм/с и с етого может быть сбой?
с этого начать и следует ![]()
при настройке прошивки там скорость меняется, и вообще понятие скорость относительная. Можно настроить по разному.
Но тут явно что-то тянется из-за скоростей, раз в сложных комбинациях начинается потеря. По- идее "холостой" прогон покажет что если затык в "мозгах" происходит без влияния "наводок" ибо сам марлин построен практически по односторонней связи- за исключением обогрева. Все остальное не контролируемо, тоисть шаговики. Солько они ходят на самом деле - проц не понимает. Это я к тому что движение мех-частей никак на логику не должно влиять кроме наводок.
Или марлин так сконфигурирован или слайсер, можно проверять по отдельности. Беда конечно что нет SD, на порядок легче было бы ![]()
земляк, уж больно ты серчавый
- смотри в сторону того как будто ты отвечаешь на подобные вопросы но не для ТС. Другой зайдет, прочтет и намотает на ус, пойдет на пользу. Ну а что конкретно ТС то если ему не дойдет то это его проблемы. Единственная реальная проблема это
долб..ебс..кие темы ! форум переваливает в очередную помойку, потому что на тему "помогите чайнику.." даже открывать не охота, хрен знает чего там ТС надобно, мож просто на душе неспокойно, попиз...еть охота. это я к тому что в теме надо указывать причину ее создания, чтоб второй такой же "мытець" не завел зеркало с такой же точно проблемой. ![]()
это кому?
реле на 220 при выкл дает выброс, хотя при резистивной нагрузке как стол то выброс небольшой. вообще правильное направление- передача данных, затык при микрошаге, скорость порта, параллельные программы которые могут в порт лезть и.т.д
кабель не меняли? можно от принтера попробовать, там серьезные обычно стоят. Может сама длинна кабеля рубить. На лазере у меня такой косяк напимер - при высоком разрешении начинает косячить именнно из-за того что инфа по кабелю, в МК практически ничего не варится тупо движками дрыгает и TTL лазера. Но из-за того что поток перегружен начинается говнопляс. Выявлено точно.
Так что может и сам слайсер перегибать палку, при таких симптомах при чем
автономно печатает? или экрана нет?
я бы на холодную "мнимо" погонял. стол 20грд/ сопло тоже. без материала. убрать лишнюю нагрузку, можно вообще без шаговиков(вынуть драйвера). тоисть обездвижить кинематику но мозг чтоб печатал. Возможно и вправду наводки бьют по кабелю COM, раз он у вас на "цепи" бегает. Если будет нормально работать (виртуально) то скорость на максимум!- тут тоже затык покажет если что.
У самого есть принтер и лазер, было когда-то подобное но закончилось тем что кабель на стол коротил. Но раз у вас 220! КЗ уже бы себя показало
CH прекрасный бутлодер, ничем не хуже меговского, даже лучше!- можно перепаять самому если что.
вот вам заготовка для отладки:
подставляете переменную (любую) и следите за ее изменениями
////////////для отладки на порт
uint32_t PortPreviosMil = 0;
void setup(){
Serial.begin(9600);
}
void loop(){
/////Отладка на порт
if (millis() - PortPreviosMil > 100) //вместо 100 любой интервал на ваш вкус
{
PortPreviosMil = millis();
Serial.println(любая переменная);
}
}
ув. stels
надеюсь языкового барьера не возникнет?
ужасно неудобно на форуме сделан "вставка кода" много минусов- неудобно читать, много времени на проверку...
Ладно, по сути вопроса:
Если честно то такой способ для совсем новичка немного странный
Для начала просто бы поработать с кнопкой научиться использовать разные методы.
В самом коде немного не ясно: butt_flag = 0; когда butt_flag есть переменная boolean и к ней привычно два состояние либо false либо true. Хотя я далеко не умнила ниепичесский и могу неправильно думать. дальше pinMode(light1_pin, OUTPUT); в loop тоже странновато, хотя ничего особо криминального нету
Вообще в такой ситуации очень полезно сделать вывод на порт и смотреть за каждой переменно как она меняется, это действие очень сильно и быстро подтолкнет вас на правильный путь
вот попробуйте для начала:
int LEDpin = 5; // светодиод подключен к выводу 5
int switchPin = 13; // ключ подключен к выводу 13, другой вывод подключен к земле
boolean running = false;
void setup()
{
pinMode(LEDpin, OUTPUT);
pinMode(switchPin, INPUT);
digitalWrite(switchPin, HIGH); // включить подтягивающий резистор тоисть при нормальном раскладе у вас HIGH это выкл
}
void loop()
{
if (digitalRead(switchPin) == LOW)
{ // ключ нажат - вывод подтянут к высокому уровню сигнала
delay(100); // задержка для устранения дребезга контактов ключа
running = !running; // инвертирование переменной running
digitalWrite(LEDpin, running) // индикация светодиодом
}
}
завести счетчик, он накручивается пока нажата кнопка, при достижении выполняется код. после выполнения кода обнуляется счетчик.
Ну а если правильно
то лучше взять готовый велосипед и изваять типа:
if ((millis() - buttonTimer > longPressTime) && (longPressActive == false)) {
longPressActive = true;
LED1State = !LED1State;
digitalWrite(LED1, LED1State);
}
longPressTime - переменная где задаш скок надо удерживать чтоб сие чудо сработало
никаких делаев и переполнения переменных. все ок и все сработает
по аппаратному: самый кайфовый метод на сегодня (для меня лично, в условиях жостких помех от ЧПУ) является PC817 последовательно резистор на 3.3 кОм и последовательно светодиод, именно светодиод- индикация которая подскажет что опто работает и не сгорела, так для перестраховки. Это входной контур а выходной естественно с подтяжкой на GND через 10кОм резистор и напрямую к 5V. Когда опто замыкает- на входе в ардуино(или любого другого МК) 5V.
Работает нормально, при чем в очень большом диапазоне от 9v- 26VDC.
Ссори за баламут но еще не обжился, только зарегистрировался ![]()
Сторінки 1