RGB LED STAT
Всем Здравия! Попался мне на глаза видосик о rgb подсветке статусов работы 3д принтера, и я сказал себе хочу!
Источник, со сборкой трех транзисторов проблем у любого 3д печатника проблем думаю не возникнет, так же как и с подключением.
Далее код[IMG]. и тут как обычно началось. На версии марлина 1.0.2 все собралось без танцев с бубном(почти) не работал статус нагрева стола и зеленый цвет по окончании работы загорался только на относительно высоких деталях(точно не замерял на глаз более 30мм). Вылечилось принудительным зажиганием зеленого по позиции Х0(в слайсере после печати в скрипте команда хоме Х). Но хотелось русского языка и 1.1.8. тут код ни в какую не хотел собираться я не совсем программист, точнее совсем НЕ[IMG]. после моих криворуких правок код собрался и заработал(опять же частично) статус стола так же молчит. впрочем замолчал и зеленый совсем...
Быть может кому-то будет интересно подскажу куда чего подключать(хотя там 3 провода все очень просто). А вот может кто более осведомленный допилит код буду очень признателен.
код: marlin_main.cpp
#ifdef TEMP_STAT_LEDS
//Edit 01/11/2016 Marquis Johnson
static uint32_t stat_update = 0;
//Virtual Variables
int STAT_LED_RED = 4; //пока тут не указал напрочь не светился ни один канал хоть и в pins.h указаны пины диодов
int STAT_LED_GREEN = 6;
int STAT_LED_BLUE = 5;
int t = 2;
int Rval = 1;
int Gval = 1;
int Bval = 1;
int LEDmax = 180;
int ExtTemp;
int BedTemp;
int ExtTarg;
int BedTarg;
//Static Colors
void off(){Rval = 0;Gval = 0;Bval = 0;}
void white(){Rval = LEDmax;Gval = LEDmax;Bval = LEDmax;}
void red(){Rval = LEDmax;Gval = 0;Bval = 0;}
void green(){Rval = 0;Gval = LEDmax;Bval = 0;}
void blue(){Rval = 0;Gval = 0;Bval = LEDmax;}
void yellow(){Rval = LEDmax;Gval = LEDmax;Bval = 0;}
void cyan(){Rval = 0;Gval = LEDmax;Bval = LEDmax;}
void magenta(){Rval = LEDmax;Gval = 0;Bval = LEDmax;}
//Handle Led Stauts
void handle_status_leds(){
if(millis() > stat_update) {
stat_update += 50; // Update every 0.05s
for (int8_t cur_extruder = 0; cur_extruder < EXTRUDERS; ++cur_extruder) {
ExtTemp = thermalManager.degHotend(cur_extruder); // тут видимо сменилось имя переменной тоже отказывалось собираться
ExtTarg = thermalManager.degTargetHotend(cur_extruder);
BedTemp = thermalManager.degTargetBed();
BedTarg = thermalManager.degBed();
}
//Fade Leds On when starting up
if(Rval+Gval+Bval == 3){
//length of delay
for(int r = 0; r
for(int r = LEDmax; r>0; r--){Rval = r;analogWrite(STAT_LED_RED, Rval);delay(t);}
for(int g = 0; g
for(int g = LEDmax; g>0; g--){Gval = g;analogWrite(STAT_LED_GREEN, Gval);delay(t);}
for(int b = 0; b
for(int b = LEDmax; b>0; b--){Bval = b;analogWrite(STAT_LED_BLUE, Bval);delay(t);}
for(int w = 0; w
}
if(current_position[X_AXIS] == 0){green();} // должно (но не обязано) загораться зеленым при перемещении Х в 0
const float temp = thermalManager.degBed();
if((BedTarg == 71)||(BedTarg == 1)){off();} //тут статус индикации нагрева стола не работает напрочь
if(BedTarg == 100){yellow();}
if(ExtTarg == 0){white();}
if((ExtTarg != 0)
&&(BedTarg != 1)
&&(BedTarg != 69)
&&(BedTarg != 71)
&&(BedTarg != 100)){
if((ExtTarg >= ExtTemp-TEMP_HYSTERESIS)
&&(ExtTarg <= ExtTemp+TEMP_HYSTERESIS)){white();}
else if((BedTarg == 5)&&(BedTemp <= 50)){green();}
else{
int MidTemp = (((EXTRUDE_MINTEMP)-40)/2);
if(ExtTemp < 40){blue();}
if(ExtTemp > EXTRUDE_MINTEMP){red();}
if((ExtTemp > 40)&&(ExtTemp < MidTemp)){
Rval = map(ExtTemp,40,MidTemp,0,LEDmax);
Gval = 0;
Bval = LEDmax;
}
if((ExtTemp > MidTemp)&&(ExtTemp < EXTRUDE_MINTEMP)){
Rval = LEDmax;
Gval = 0;
Bval = map(ExtTemp,MidTemp,EXTRUDE_MINTEMP,LEDmax,0);
}
}
}
//Write to LEDs
analogWrite(STAT_LED_RED, Rval);
analogWrite(STAT_LED_GREEN, Gval);
analogWrite(STAT_LED_BLUE, Bval);
}
}
#endif
Источник, со сборкой трех транзисторов проблем у любого 3д печатника проблем думаю не возникнет, так же как и с подключением.
Далее код[IMG]. и тут как обычно началось. На версии марлина 1.0.2 все собралось без танцев с бубном(почти) не работал статус нагрева стола и зеленый цвет по окончании работы загорался только на относительно высоких деталях(точно не замерял на глаз более 30мм). Вылечилось принудительным зажиганием зеленого по позиции Х0(в слайсере после печати в скрипте команда хоме Х). Но хотелось русского языка и 1.1.8. тут код ни в какую не хотел собираться я не совсем программист, точнее совсем НЕ[IMG]. после моих криворуких правок код собрался и заработал(опять же частично) статус стола так же молчит. впрочем замолчал и зеленый совсем...
Быть может кому-то будет интересно подскажу куда чего подключать(хотя там 3 провода все очень просто). А вот может кто более осведомленный допилит код буду очень признателен.
код: marlin_main.cpp
#ifdef TEMP_STAT_LEDS
//Edit 01/11/2016 Marquis Johnson
static uint32_t stat_update = 0;
//Virtual Variables
int STAT_LED_RED = 4; //пока тут не указал напрочь не светился ни один канал хоть и в pins.h указаны пины диодов
int STAT_LED_GREEN = 6;
int STAT_LED_BLUE = 5;
int t = 2;
int Rval = 1;
int Gval = 1;
int Bval = 1;
int LEDmax = 180;
int ExtTemp;
int BedTemp;
int ExtTarg;
int BedTarg;
//Static Colors
void off(){Rval = 0;Gval = 0;Bval = 0;}
void white(){Rval = LEDmax;Gval = LEDmax;Bval = LEDmax;}
void red(){Rval = LEDmax;Gval = 0;Bval = 0;}
void green(){Rval = 0;Gval = LEDmax;Bval = 0;}
void blue(){Rval = 0;Gval = 0;Bval = LEDmax;}
void yellow(){Rval = LEDmax;Gval = LEDmax;Bval = 0;}
void cyan(){Rval = 0;Gval = LEDmax;Bval = LEDmax;}
void magenta(){Rval = LEDmax;Gval = 0;Bval = LEDmax;}
//Handle Led Stauts
void handle_status_leds(){
if(millis() > stat_update) {
stat_update += 50; // Update every 0.05s
for (int8_t cur_extruder = 0; cur_extruder < EXTRUDERS; ++cur_extruder) {
ExtTemp = thermalManager.degHotend(cur_extruder); // тут видимо сменилось имя переменной тоже отказывалось собираться
ExtTarg = thermalManager.degTargetHotend(cur_extruder);
BedTemp = thermalManager.degTargetBed();
BedTarg = thermalManager.degBed();
}
//Fade Leds On when starting up
if(Rval+Gval+Bval == 3){
//length of delay
for(int r = 0; r
for(int r = LEDmax; r>0; r--){Rval = r;analogWrite(STAT_LED_RED, Rval);delay(t);}
for(int g = 0; g
for(int g = LEDmax; g>0; g--){Gval = g;analogWrite(STAT_LED_GREEN, Gval);delay(t);}
for(int b = 0; b
for(int b = LEDmax; b>0; b--){Bval = b;analogWrite(STAT_LED_BLUE, Bval);delay(t);}
for(int w = 0; w
}
if(current_position[X_AXIS] == 0){green();} // должно (но не обязано) загораться зеленым при перемещении Х в 0
const float temp = thermalManager.degBed();
if((BedTarg == 71)||(BedTarg == 1)){off();} //тут статус индикации нагрева стола не работает напрочь
if(BedTarg == 100){yellow();}
if(ExtTarg == 0){white();}
if((ExtTarg != 0)
&&(BedTarg != 1)
&&(BedTarg != 69)
&&(BedTarg != 71)
&&(BedTarg != 100)){
if((ExtTarg >= ExtTemp-TEMP_HYSTERESIS)
&&(ExtTarg <= ExtTemp+TEMP_HYSTERESIS)){white();}
else if((BedTarg == 5)&&(BedTemp <= 50)){green();}
else{
int MidTemp = (((EXTRUDE_MINTEMP)-40)/2);
if(ExtTemp < 40){blue();}
if(ExtTemp > EXTRUDE_MINTEMP){red();}
if((ExtTemp > 40)&&(ExtTemp < MidTemp)){
Rval = map(ExtTemp,40,MidTemp,0,LEDmax);
Gval = 0;
Bval = LEDmax;
}
if((ExtTemp > MidTemp)&&(ExtTemp < EXTRUDE_MINTEMP)){
Rval = LEDmax;
Gval = 0;
Bval = map(ExtTemp,MidTemp,EXTRUDE_MINTEMP,LEDmax,0);
}
}
}
//Write to LEDs
analogWrite(STAT_LED_RED, Rval);
analogWrite(STAT_LED_GREEN, Gval);
analogWrite(STAT_LED_BLUE, Bval);
}
}
#endif
Популярные вопросы
как подружить акселерометр с клипером
такая проблема пытался подключить акселерометр и не понимаю как пытался по гайду в ютубе и по этому https://3dtoday.ru/blogs/benzin5413/aktualnyi-na-1...
Какой софт выбрать для моделирование под 3д печать?
Начал заниматься 3д печатью, пока для себя, есть редкие заказы на коммерческую печать, но пока приходится отдавать моделирование на фриланс, т.к. не х...
Kак в G-code Simplify3D изменить скорость печати Infill?
Вопрос возник из за отсутствия управления в G-code Simplify3D возможности конкретно влиять на скорость печати Infill.
Есть какие либо...
Есть какие либо...
Комментарии и вопросы
Все ок, инфа полезная сама по....
Так он практически сразу после...
Как грицца, it depends...Если....
Всем привет, может кто знает п...
Приветствую, начал знакомится...
Здравствуйте. Имеется стоковый...
Всем доброго! По поводу жидкой...