Hi,
Can someone tell me please why this simple sketch uses 75% of dynamic memory as global
variables? - and how I can reduce this?
#include <Arduino.h>
#include <U8g2lib.h>
float AverageA = 0;
float beep;
float Beep_period;
U8G2_ST7567_JLX12864_F_4W_SW_SPI u8g2(U8G2_R3, /* clock=/ 7, / data=/ 8, / cs=/ 11, / dc=/ 9, / reset=*/ 10);
int inputPin = A0;
void setup(void) {
u8g2.begin();
u8g2.setContrast(80);
}
void loop(void) {
u8g2.clearBuffer(); // clear the internal memory
AverageA = (analogRead(A0) / 45.0) - 10.0;
u8g2.setFont(u8g2_font_timB24_tn);
if ((AverageA) >= 0) {
u8g2.setCursor(23, 28);
}
else {
u8g2.setCursor(12, 28); //move average display over to accomodate - sign
}
u8g2.print(AverageA);
u8g2.drawBox(0, 62, 17, 5); //divide line
//up triangles ********************
if ((AverageA) > 0.25) {
u8g2.drawTriangle(9, 50, 0, 61, 17, 61);
}
if ((AverageA) > 0.85) {
u8g2.drawTriangle(9, 44, 0, 55, 17, 55);
}
if ((AverageA) > 1.45) {
u8g2.drawTriangle(9, 38, 0, 49, 17, 49);
}
if ((AverageA) > 2.05) {
u8g2.drawTriangle(9, 32, 0, 43, 17, 43);
}
if ((AverageA) > 2.65) {
u8g2.drawTriangle(9, 26, 0, 37, 17, 37);
}
if ((AverageA) > 3.25) {
u8g2.drawTriangle(9, 20, 0, 31, 17, 31);
}
if ((AverageA) > 3.85) {
u8g2.drawTriangle(9, 14, 0, 25, 17, 25);
}
if ((AverageA) > 4.45) {
u8g2.drawTriangle(9, 8, 0, 19, 17, 19);
}
if ((AverageA) > 5.05) {
u8g2.drawTriangle(9, 2, 0, 13, 17, 13);
}
//down triangles ****************
if ((AverageA) < -0.25)u8g2.drawTriangle(9, 79, 0, 68, 17, 68);
if ((AverageA) < -0.85)u8g2.drawTriangle(9, 85, 0, 74, 17, 74);
if ((AverageA) < -1.45)u8g2.drawTriangle(9, 91, 0, 80, 17, 80);
if ((AverageA) < -2.05)u8g2.drawTriangle(9, 97, 0, 86, 17, 86);
if ((AverageA) < -2.65)u8g2.drawTriangle(9, 103, 0, 92, 17, 92);
if ((AverageA) < -3.25)u8g2.drawTriangle(9, 109, 0, 98, 17, 98);
if ((AverageA) < -3.85)u8g2.drawTriangle(9, 115, 0, 104, 17, 104);
if ((AverageA) < -4.45)u8g2.drawTriangle(9, 121, 0, 110, 17, 110);
if ((AverageA) < -5.05)u8g2.drawTriangle(9, 127, 0, 117, 17, 117);
//Sounds *********************************************
if (((millis() - beep) > Beep_period) && (AverageA > 0.25))
{ // UP TONES
beep = millis();
tone(13, (400 + (125 * AverageA)), 125 - (6 * AverageA));
Beep_period = 1000 - (70 * AverageA);
}
else if (AverageA < -2.0)
{ // DOWN TONES
tone(13, (250 + (20 * AverageA)), 125);
}
u8g2.sendBuffer(); // transfer internal memory to the display
}