Ви не увійшли.
Сторінки 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