committed by
Scott Lahteine
parent
2fd9971f41
commit
3f103c91f0
@ -68,11 +68,7 @@
|
||||
|
||||
#elif EITHER(LCD_I2C_TYPE_MCP23017, LCD_I2C_TYPE_MCP23008)
|
||||
|
||||
LCD_CLASS lcd(LCD_I2C_ADDRESS
|
||||
#ifdef DETECT_DEVICE
|
||||
, 1
|
||||
#endif
|
||||
);
|
||||
LCD_CLASS lcd(LCD_I2C_ADDRESS OPTARG(DETECT_I2C_LCD_DEVICE, 1));
|
||||
|
||||
#elif ENABLED(LCD_I2C_TYPE_PCA8574)
|
||||
|
||||
@ -380,11 +376,7 @@ void MarlinUI::init_lcd() {
|
||||
}
|
||||
|
||||
bool MarlinUI::detected() {
|
||||
return (true
|
||||
#if EITHER(LCD_I2C_TYPE_MCP23017, LCD_I2C_TYPE_MCP23008) && defined(DETECT_DEVICE)
|
||||
&& lcd.LcdDetected() == 1
|
||||
#endif
|
||||
);
|
||||
return TERN1(DETECT_I2C_LCD_DEVICE, lcd.LcdDetected() == 1);
|
||||
}
|
||||
|
||||
#if HAS_SLOW_BUTTONS
|
||||
@ -602,10 +594,11 @@ FORCE_INLINE void _draw_cooler_status(const char prefix, const bool blink) {
|
||||
FORCE_INLINE void _draw_ammeter_status() {
|
||||
lcd_put_u8str(" ");
|
||||
ammeter.read();
|
||||
if (ammeter.current <= .999) {
|
||||
lcd_put_u8str(ftostr3ns(ammeter.current));
|
||||
if (ammeter.current <= 0.999f) {
|
||||
lcd_put_u8str(ui16tostr3rj(uint16_t(ammeter.current * 1000 + 0.5f)));
|
||||
lcd_put_u8str("mA");
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
lcd_put_u8str(ftostr12ns(ammeter.current));
|
||||
lcd_put_wchar('A');
|
||||
}
|
||||
@ -847,15 +840,9 @@ void MarlinUI::draw_status_screen() {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if HAS_COOLER
|
||||
_draw_cooler_status('*', blink);
|
||||
#endif
|
||||
#if ENABLED(LASER_COOLANT_FLOW_METER)
|
||||
_draw_flowmeter_status();
|
||||
#endif
|
||||
#if ENABLED(I2C_AMMETER)
|
||||
_draw_ammeter_status();
|
||||
#endif
|
||||
TERN_(HAS_COOLER, _draw_cooler_status('*', blink));
|
||||
TERN_(LASER_COOLANT_FLOW_METER, _draw_flowmeter_status());
|
||||
TERN_(I2C_AMMETER, _draw_ammeter_status());
|
||||
|
||||
#endif // LCD_WIDTH >= 20
|
||||
|
||||
|
@ -110,14 +110,13 @@
|
||||
//
|
||||
// Laser Ammeter
|
||||
//
|
||||
#if !STATUS_AMMETER_WIDTH && ENABLED(I2C_AMMETER)
|
||||
#include "status/ammeter.h"
|
||||
#endif
|
||||
#ifndef STATUS_AMMETER_WIDTH
|
||||
#define STATUS_AMMETER_WIDTH 0
|
||||
#endif
|
||||
#ifndef STATUS_AMMETER_BYTEWIDTH
|
||||
#define STATUS_AMMETER_BYTEWIDTH BW(STATUS_AMMETER_WIDTH)
|
||||
#if ENABLED(I2C_AMMETER)
|
||||
#if !STATUS_AMMETER_WIDTH
|
||||
#include "status/ammeter.h"
|
||||
#endif
|
||||
#ifndef STATUS_AMMETER_WIDTH
|
||||
#define STATUS_AMMETER_WIDTH 0
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//
|
||||
@ -614,30 +613,29 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if ENABLED(I2C_AMMETER)
|
||||
#if STATUS_AMMETER_WIDTH
|
||||
|
||||
#ifndef STATUS_AMMETER_X
|
||||
#define STATUS_AMMETER_X (LCD_PIXEL_WIDTH - (STATUS_AMMETER_BYTEWIDTH + STATUS_FLOWMETER_BYTEWIDTH + STATUS_FAN_BYTEWIDTH + STATUS_CUTTER_BYTEWIDTH + STATUS_COOLER_BYTEWIDTH) * 8)
|
||||
#endif
|
||||
|
||||
#ifndef STATUS_AMMETER_HEIGHT
|
||||
#define STATUS_AMMETER_HEIGHT(S) (sizeof(status_ammeter_bmp1) / (STATUS_AMMETER_BYTEWIDTH))
|
||||
#endif
|
||||
|
||||
#ifndef STATUS_AMMETER_Y
|
||||
#define STATUS_AMMETER_Y(S) (18 - STATUS_AMMETER_HEIGHT(S))
|
||||
#endif
|
||||
|
||||
#ifndef STATUS_AMMETER_TEXT_X
|
||||
#define STATUS_AMMETER_TEXT_X (STATUS_AMMETER_X + 7)
|
||||
#endif
|
||||
|
||||
static_assert(
|
||||
sizeof(status_ammeter_bmp1) == (STATUS_AMMETER_BYTEWIDTH) * STATUS_AMMETER_HEIGHT(0),
|
||||
"Status ammeter bitmap (status_ammeter_bmp1) dimensions don't match data."
|
||||
);
|
||||
//
|
||||
// I2C Laser Ammeter
|
||||
//
|
||||
#if ENABLED(I2C_AMMETER) && STATUS_AMMETER_WIDTH
|
||||
#ifndef STATUS_AMMETER_BYTEWIDTH
|
||||
#define STATUS_AMMETER_BYTEWIDTH BW(STATUS_AMMETER_WIDTH)
|
||||
#endif
|
||||
#ifndef STATUS_AMMETER_X
|
||||
#define STATUS_AMMETER_X (LCD_PIXEL_WIDTH - (STATUS_AMMETER_BYTEWIDTH + STATUS_FLOWMETER_BYTEWIDTH + STATUS_FAN_BYTEWIDTH + STATUS_CUTTER_BYTEWIDTH + STATUS_COOLER_BYTEWIDTH) * 8)
|
||||
#endif
|
||||
#ifndef STATUS_AMMETER_HEIGHT
|
||||
#define STATUS_AMMETER_HEIGHT(S) (sizeof(status_ammeter_bmp1) / (STATUS_AMMETER_BYTEWIDTH))
|
||||
#endif
|
||||
#ifndef STATUS_AMMETER_Y
|
||||
#define STATUS_AMMETER_Y(S) (18 - STATUS_AMMETER_HEIGHT(S))
|
||||
#endif
|
||||
#ifndef STATUS_AMMETER_TEXT_X
|
||||
#define STATUS_AMMETER_TEXT_X (STATUS_AMMETER_X + 7)
|
||||
#endif
|
||||
static_assert(
|
||||
sizeof(status_ammeter_bmp1) == (STATUS_AMMETER_BYTEWIDTH) * STATUS_AMMETER_HEIGHT(0),
|
||||
"Status ammeter bitmap (status_ammeter_bmp1) dimensions don't match data."
|
||||
);
|
||||
#endif
|
||||
|
||||
//
|
||||
|
@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
@ -24,11 +24,10 @@
|
||||
//
|
||||
// lcd/dogm/status/ammeter.h - Status Screen Laser Ammeter bitmaps
|
||||
//
|
||||
#if ENABLED(I2C_AMMETER)
|
||||
|
||||
#define STATUS_AMMETER_WIDTH 20
|
||||
#define STATUS_AMMETER_WIDTH 20
|
||||
|
||||
const unsigned char status_ammeter_bmp_mA[] PROGMEM = {
|
||||
const unsigned char status_ammeter_bmp_mA[] PROGMEM = {
|
||||
B00000000,B11111100,B00000000,
|
||||
B00000011,B00000011,B00000000,
|
||||
B00000100,B00000000,B10000000,
|
||||
@ -46,7 +45,7 @@
|
||||
B00000100,B00000000,B10000000,
|
||||
B00000011,B00000011,B00000000,
|
||||
B00000000,B11111100,B00000000
|
||||
};
|
||||
};
|
||||
|
||||
const unsigned char status_ammeter_bmp_A[] PROGMEM = {
|
||||
B00000000,B11111100,B00000000,
|
||||
@ -67,5 +66,3 @@ const unsigned char status_ammeter_bmp_A[] PROGMEM = {
|
||||
B00000011,B00000011,B00000000,
|
||||
B00000000,B11111100,B00000000,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -207,7 +207,7 @@ FORCE_INLINE void _draw_centered_temp(const celsius_t temp, const uint8_t tx, co
|
||||
|
||||
#if DO_DRAW_AMMETER
|
||||
FORCE_INLINE void _draw_centered_current(const float current, const uint8_t tx, const uint8_t ty) {
|
||||
const char *str = ftostr31ns(current);
|
||||
const char *str = ftostr31ns(current);
|
||||
const uint8_t len = str[0] != ' ' ? 3 : str[1] != ' ' ? 2 : 1;
|
||||
lcd_put_u8str(tx - len * (INFO_FONT_WIDTH) / 2 + 1, ty, &str[3-len]);
|
||||
}
|
||||
@ -697,7 +697,7 @@ void MarlinUI::draw_status_screen() {
|
||||
const uint8_t ammetery = STATUS_AMMETER_Y(status_ammeter_bmp_mA),
|
||||
ammeterh = STATUS_AMMETER_HEIGHT(status_ammeter_bmp_mA);
|
||||
if (PAGE_CONTAINS(ammetery, ammetery + ammeterh - 1))
|
||||
u8g.drawBitmapP(STATUS_AMMETER_X, ammetery, STATUS_AMMETER_BYTEWIDTH, ammeterh, (ammeter.current < .1) ? status_ammeter_bmp_mA : status_ammeter_bmp_A);
|
||||
u8g.drawBitmapP(STATUS_AMMETER_X, ammetery, STATUS_AMMETER_BYTEWIDTH, ammeterh, (ammeter.current < 0.1f) ? status_ammeter_bmp_mA : status_ammeter_bmp_A);
|
||||
#endif
|
||||
|
||||
// Heated Bed
|
||||
|
Reference in New Issue
Block a user