Adafruit QT PY ESP32-S2 adc_blues

Having strange problem with Adafruit QT PY ESP32-S2..everything works fine--except-- the ADCs.. my code compiles, but I still get an error--

/home/jack/Documents/sketchbook/makeSkyBluer_WiFi/makeSkyBluer_WiFi.ino:26:2: warning: #warning Use ESP32 architecture [-Wcpp]
#warning Use ESP32 architecture
^~~~~~~
In file included from /home/jack/Documents/sketchbook/makeSkyBluer_WiFi/makeSkyBluer_WiFi.ino:20:
/home/jack/Documents/sketchbook/makeSkyBluer_WiFi/makeSkyBluer_WiFi.ino: In function 'void scanKeys()':
/home/jack/snap/arduino/70/.arduino15/packages/esp32/hardware/esp32/2.0.5/tools/sdk/esp32s2/include/driver/include/driver/adc.h:104:25: error: 'ADC_WIDTH_BIT_12' was not declared in this scope
#define ADC_WIDTH_12Bit ADC_WIDTH_BIT_12
^~~~~~~~~~~~~~~~
/home/jack/Documents/sketchbook/makeSkyBluer_WiFi/makeSkyBluer_WiFi.ino:584:46: note: in expansion of macro 'ADC_WIDTH_12Bit'
adc2_get_raw( ADC2_CHANNEL_7, ADC_WIDTH_12Bit, &read_raw);
^~~~~~~~~~~~~~~
/home/jack/snap/arduino/70/.arduino15/packages/esp32/hardware/esp32/2.0.5/tools/sdk/esp32s2/include/driver/include/driver/adc.h:104:25: note: suggested alternative: 'ADC_WIDTH_BIT_13'
#define ADC_WIDTH_12Bit ADC_WIDTH_BIT_12
^~~~~~~~~~~~~~~~
/home/jack/Documents/sketchbook/makeSkyBluer_WiFi/makeSkyBluer_WiFi.ino:584:46: note: in expansion of macro 'ADC_WIDTH_12Bit'
adc2_get_raw( ADC2_CHANNEL_7, ADC_WIDTH_12Bit, &read_raw);
^~~~~~~~~~~~~~~
Multiple libraries were found for "WiFi.h"
Used: /home/jack/snap/arduino/70/.arduino15/packages/esp32/hardware/esp32/2.0.5/libraries/WiFi
Not used: /snap/arduino/70/libraries/WiFi
Multiple libraries were found for "Preferences.h"
Used: /home/jack/snap/arduino/70/.arduino15/packages/esp32/hardware/esp32/2.0.5/libraries/Preferences
Not used: /home/jack/Documents/sketchbook/libraries/Preferences
Multiple libraries were found for "FS.h"
Used: /home/jack/Documents/sketchbook/libraries/FS
Not used: /home/jack/snap/arduino/70/.arduino15/packages/esp32/hardware/esp32/2.0.5/libraries/FS
Using library LittleFS_esp32 at version 1.0.6 in folder: /home/jack/Documents/sketchbook/libraries/LittleFS_esp32
Using library FS at version 1.0 in folder: /home/jack/Documents/sketchbook/libraries/FS
Using library WiFi at version 2.0.0 in folder: /home/jack/snap/arduino/70/.arduino15/packages/esp32/hardware/esp32/2.0.5/libraries/WiFi
Using library AsyncTCP at version 1.1.1 in folder: /home/jack/Documents/sketchbook/libraries/AsyncTCP
Using library ESPAsyncWebServer at version 1.2.3 in folder: /home/jack/Documents/sketchbook/libraries/ESPAsyncWebServer
Using library AsyncElegantOTA at version 2.2.7 in folder: /home/jack/Documents/sketchbook/libraries/AsyncElegantOTA
Using library Update at version 2.0.0 in folder: /home/jack/snap/arduino/70/.arduino15/packages/esp32/hardware/esp32/2.0.5/libraries/Update
Using library U8g2 at version 2.33.15 in folder: /home/jack/Documents/sketchbook/libraries/U8g2
Using library Preferences at version 2.0.0 in folder: /home/jack/snap/arduino/70/.arduino15/packages/esp32/hardware/esp32/2.0.5/libraries/Preferences
Using library Wire at version 2.0.0 in folder: /home/jack/snap/arduino/70/.arduino15/packages/esp32/hardware/esp32/2.0.5/libraries/Wire
Using library SPI at version 2.0.0 in folder: /home/jack/snap/arduino/70/.arduino15/packages/esp32/hardware/esp32/2.0.5/libraries/SPI
exit status 1
Error compiling for board Adafruit QT Py ESP32-S2.

the error is something around the new ADC structure..
my code compiles--

adc2_get_raw(ADC2_CHANNEL_7, ADC_WIDTH_12Bit, &read_raw);

but it still sqwaks about an error..concerning--
ADC_WIDTH_12Bit

not sure where to go from here..

[code]
#include <LITTLEFS.h>
#include <littlefs_api.h>
#include <lfs.h>
#include <lfs_util.h>
#include <esp_littlefs.h>
//#include <ESP32AnalogRead.h>
//ESP32AnalogRead adc;

#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <AsyncElegantOTA.h>

//#include "wiring_analog_extras.h"
#include <Arduino.h> 
#include <U8g2lib.h>
#include <Preferences.h>
Preferences settings;
#include <Wire.h>
#include <driver/adc.h>
#include <esp_adc_cal.h>
#include <driver/gpio.h>
#include <esp_adc_cal.h>
#include <driver/ledc.h>

#warning Use ESP32 architecture
#define ETHERNET_USE_ESP32
#define BOARD_TYPE "ESP32"

#define W5500_RST_PORT 21

#ifndef BOARD_NAME
#define BOARD_NAME BOARD_TYPE 
#endif

// Please UNCOMMENT one of the contructor lines below
// U8g2 Contructor List (Picture Loop Page Buffer)
// The complete list is available here: https://github.com/olikraus/u8g2/wiki/u8g2setupcpp
// Please update the pin numbers according to your setup. Use U8X8_PIN_NONE if the reset pin is not connected
//U8G2_NULL u8g2(U8G2_R0); // null device, a 8x8 pixel display which does nothing

// Using hardware IIC bus (SDA: 4, SCL: 5) with noname 128x64 0.96" OLED display
//U8X8_SSD1306_128X64_NONAME_HW_I²C u8x8(/* reset=*/ U8X8_PIN_NONE);
//U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
//U8G2_SSD1309_128X64_NONAME0_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);  
U8G2_SSD1309_128X64_NONAME0_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
//U8G2_SSD1309_128X64_NONAME0_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

#define MakeSkyBlue_v118    0
#define PowMr               1  
#define MakeSkyBlue_v113    1
/////////////////select board type///////////////////
//const int32_t board=PowMr;
const int32_t board=MakeSkyBlue_v118;
//const int32_t board=MakeSkyBlue_v113;
/////////////////////////////////////////////////////

//////////////////Fan Drive//////////////////////////
bool invertFanDrv=false;
//bool invertFanDrv=true;
/////////////////////////////////////////////////////

#define DN               0
#define UP               1
#define OFF              0
#define ON               1
#define LO               1
#define HI               2
#define clrBUFFER        0


#define keyNONE          0
#define keyPROGESC       1
#define keyUP            2
#define keyDN            3
#define keyENTER         4


#define SET_BULK         0
#define UD_BULK          1
#define SET_FLOAT        2
#define UD_FLOAT         3

#define dspPV_BATT         0
#define dspDIAG            1
#define dspPeakPWM         2
#define dspABOUT           3
#define dspBULKfloat       4
#define dspbulkFLOAT       5
#define dspMAXCHARGEAMPS   6
#define dspFAN             7
#define dspCAL_ZERO        8
#define dspCAL_PVv         9
#define dspCAL_BATTv       10
#define dspCAL_PVi         11
#define dspCAL_TEMPv       12
#define dspFREQ            13

#define KeysIN      18   //ADC1_CHANNEL_0      //0
#define BATTvIN     17   //ADC1_CHANNEL_1      //1
#define PVvIN       9   //ADC1_CHANNEL_2        //2
#define PViIN       8    //ADC1_CHANNEL_3       //3
#define TEMP_IN     16    //ADC1_CHANNEL_4

#define FANdrv      7  //GPIO_16  //Fan Drive 
//#define PWM1_DutyCycledrv      A8  //PWM1_DutyCycle
#define LoadDrv     9  //Load drv
#define Spare       10 //Spare 

 
#define ledc_GPIO  36
#define PWM1_Ch    0
#define PWM1_Res   8
#define PWM1_Freq  40000
 
int PWM1_DutyCycle = 0;


// resistance at 25 degrees C
#define THERMISTORNOMINAL 10000      
// temp. for nominal resistance (almost always 25 C)
#define TEMPERATURENOMINAL 25   
// The beta coefficient of the thermistor (usually 3000-4000)
#define BCOEFFICIENT 3950
// the value of the 'other' resistor
#define SERIESRESISTOR 10000    



volatile static int32_t FLOATv  =0;
volatile static int32_t BULKv   =0;
volatile static int32_t maxChargeAmps  =20;
volatile static int32_t PVv     =0;
volatile static int32_t PVv_average=0;
volatile static int32_t PVi     =0;
volatile static int32_t PVi_average=0;
volatile static int32_t BATTv   =0;
volatile static int32_t BATTv_average=0;
volatile static int32_t BATTi   =0;
volatile static int32_t BATTi_average=0;
volatile static int32_t ThmStat  =0;

volatile int32_t         dspCURRENT=0; 
volatile int32_t            dspLAST=dspBULKfloat;
volatile static uint32_t        PWM=127;
volatile static int32_t       WATTS=0;
volatile static int32_t     peakPWM=2; 
const int32_t                maxPWM=254; 
volatile static int32_t      pixelX=0;
volatile static int32_t      pixelY=0;

volatile int32_t adcOFFSET    =150;
volatile int32_t PVvGAIN      =17;  //54
volatile int32_t BATTvGAIN    =43;  //54
volatile int32_t PViGAIN      =560;  //270;
volatile int32_t TEMPvOFFSET  =0;  //21;
volatile int32_t TEMPdeg      =0;
volatile int32_t degHOT       =0;
volatile int32_t keyHIT       =0;
volatile int32_t pwmLEVEL     =65;
volatile int32_t f_idx        =0;

volatile static bool interrupt_KEY=false;
volatile static bool interrupt_MPPT=false;
volatile static bool interrupt_FAN=false;
volatile static bool interrupt_SCAN=false;

volatile static bool progMODE=false;
volatile static bool dspADJ  =false;
volatile static bool Dir=UP;
volatile static bool saveDATA=false;
volatile static bool bulkMODE=true;
bool                 bootDONE=false;

volatile int32_t fanSPEED=LO;

const char compile_date[] = __DATE__;
const char Author[] = "J. Kennedy";
 
const char* ssid = "moto e6(XT2005DL)7676 ";
const char* password = "99889988";
AsyncWebServer server(80); 

//interrupt timer...
hw_timer_t * timer = NULL;
volatile SemaphoreHandle_t timerSemaphore;
portMUX_TYPE timerMux = portMUX_INITIALIZER_UNLOCKED;

volatile uint32_t isrCounter = 0;
volatile uint32_t lastIsrAt = 0;

void ARDUINO_ISR_ATTR onTimer(){
  volatile static int32_t KEYcntr=0;
  volatile static int32_t MPPTcntr=0;
  volatile static int32_t SCANcntr=0;  

  // Increment the counter and set the time of ISR
  portENTER_CRITICAL_ISR(&timerMux);
  isrCounter++;
  lastIsrAt = millis();
  portEXIT_CRITICAL_ISR(&timerMux);
  // Give a semaphore that we can check in the loop
  xSemaphoreGiveFromISR(timerSemaphore, NULL);
  
  // It is safe to use digitalRead/Write here if you want to toggle an output
  if(bootDONE){
               if(fanSPEED==LO)digitalWrite(FANdrv,!digitalRead(FANdrv));
               KEYcntr++;
               MPPTcntr++;
               SCANcntr++;
               if(SCANcntr>=48000){SCANcntr=0;
                                   interrupt_SCAN=true;}
               if(MPPTcntr>=50){MPPTcntr=0;
                                   interrupt_MPPT=true;}
               if(KEYcntr>=3){KEYcntr=0;
                              if(keyHIT==keyNONE)interrupt_KEY=true;
                             }
               }
}

       
void setup() {
  bootDONE=false;
  adc_power_acquire();

  
  pinMode(0,INPUT);  //has an internal 10K PULLUP...geez 
  pinMode(1,INPUT);   
  pinMode(2,INPUT);
  pinMode(3,INPUT);   
  pinMode(6,INPUT);   
    
  pinMode(FANdrv,OUTPUT);     //Fan Drive 
  pinMode(8,OUTPUT);     //PWM1_DutyCycle
  pinMode(Spare,OUTPUT);      //Spare

  ledcAttachPin(ledc_GPIO, PWM1_Ch);
  ledcSetup(PWM1_Ch, PWM1_Freq, PWM1_Res);


  Serial.begin(115200);
  delay(1000);
  //while(!Serial);
  if(Serial)Serial.println("begin setup");  
 
  digitalWrite(FANdrv,LOW);

  pinMode(SDA,OUTPUT);  //sda
  pinMode(SCL,OUTPUT);

  //adc1_config_width(ADC_WIDTH_12Bit);
  //adc1_config_width(ADC_WIDTH_12Bit);
  adc1_config_channel_atten(ADC1_CHANNEL_0 , ADC_ATTEN_DB_11);
  adc1_config_channel_atten(ADC1_CHANNEL_1 , ADC_ATTEN_DB_11);
  adc1_config_channel_atten(ADC1_CHANNEL_2 , ADC_ATTEN_DB_11);
  adc1_config_channel_atten(ADC1_CHANNEL_3 , ADC_ATTEN_DB_11);
  //adc1_config_channel_atten(ADC1_CHANNEL_4 , ADC_ATTEN_DB_11);
  //adc1_config_channel_atten(ADC1_CHANNEL_5 , ADC_ATTEN_DB_11);
  //adc1_config_channel_atten(ADC1_CHANNEL_6 , ADC_ATTEN_DB_11);
  //adc1_config_channel_atten(ADC1_CHANNEL_7 , ADC_ATTEN_DB_11);
  //adc1_config_channel_atten(ADC1_CHANNEL_8 , ADC_ATTEN_DB_11);
  //adc1_config_channel_atten(ADC1_CHANNEL_9 , ADC_ATTEN_DB_11);  
  
   // Create semaphore to inform us when the timer has fired
  timerSemaphore = xSemaphoreCreateBinary();

  // Use 1st timer of 4 (counted from zero).
  // Set 80 divider for prescaler (see ESP32 Technical Reference Manual for more
  // info).
  timer = timerBegin(0, 80, true);

  // Attach onTimer function to our timer.
  timerAttachInterrupt(timer, &onTimer, true);

  // Set alarm to call onTimer function every second (value in microseconds).
  // Repeat the alarm (third parameter)
  timerAlarmWrite(timer, 20000, true);  //10ms

  // Start an alarm
  timerAlarmEnable(timer);

  
 //   if(Serial)Serial.print(F("freeMem:")); if(Serial)Serial.println(freeRam());
  Wire.setClock(400000);   //clockFrequency
  u8g2.begin();
  u8g2.setFlipMode(0);
  u8g2.clearDisplay();
  u8g2.clearBuffer();
  
  if(Serial)Serial.print(F("\nStarting TimerInterruptLEDDemo on ")); if(Serial)Serial.println(BOARD_NAME);
  
  if(Serial)Serial.print(F("CPU Frequency = ")); if(Serial)Serial.print(F_CPU / 1000000); if(Serial)Serial.println(F(" MHz"));

  
  

  // Open Preferences with my-app namespace. Each application module, library, etc
  // has to use a namespace name to prevent key name collisions. We will open storage in
  // RW-mode (second parameter has to be false).
  // Note: Namespace name is limited to 15 chars.
  settings.begin("my-app", false);

  // Remove all preferences under the opened namespace
  //preferences.clear();

  // Or remove the counter key only
  //preferences.remove("counter");

  // Get the counter value, if the key does not exist, return a default value of 0
  // Note: Key name is limited to 15 chars.
  unsigned int counter = settings.getUInt("counter", 0);

  // Increase counter by 1
  counter++;

  // Print the counter to Serial Monitor
  Serial.printf("Current counter value: %u\n", counter);

  // Store the counter to the Preferences
  //settings.putUInt("counter", counter);
 
  // Close the Preferences
  settings.end();

  EEPROMsettings(false); //read
     
  OLED(dspABOUT,clrBUFFER);
  delay(2500);
  OLED(dspPV_BATT,clrBUFFER);

  /*
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.println("");

  // Wait for connection
  int32_t cnt=0;
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    cnt++;
    if(cnt>6)break;    
    }
  Serial.println("");
  if(WiFi.status()==WL_CONNECTED){
                   Serial.print("Connected to ");
                   Serial.println(ssid);
                   Serial.print("IP address: ");
                   Serial.println(WiFi.localIP());

                   server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) {
                             request->send(200, "text/plain", "Hi! I am ESP32.");
                                    });

                   AsyncElegantOTA.begin(&server);

                   server.begin();}
  */
  
  if(Serial)Serial.println(F("entering Loop"));
    
  bootDONE=true;
}

void avgPVv(int32_t pvv){volatile static int32_t avgPVV[10];
                         volatile static int32_t avgCntr=0;
                         avgCntr++;
                         if(avgCntr>=5)avgCntr=0;
                         avgPVV[avgCntr]=pvv;

                         PVv_average=0;
                         for(int32_t x=0; x<=4; x++){PVv_average+=avgPVV[x];}
                         PVv_average=PVv_average/5;
}

void avgPVi(int32_t pvi){volatile static int32_t avgPVI[10];
                         volatile static int32_t avgCntr=0;
                         avgCntr++;
                         if(avgCntr>=5)avgCntr=0;
                         avgPVI[avgCntr]=pvi;

                         PVi_average=0;
                         for(int32_t x=0; x<=4; x++){PVi_average+=avgPVI[x];}
                         PVi_average=PVi_average/5;
}

void avgBATTv(int32_t battv){volatile static int32_t avgBATTV[10];
                         volatile static int32_t avgCntr=0;
                         avgCntr++;
                         if(avgCntr>=5)avgCntr=0;
                         avgBATTV[avgCntr]=battv;

                         BATTv_average=0;
                         for(int32_t x=0; x<=4; x++){BATTv_average+=avgBATTV[x];}
                         BATTv_average=BATTv_average/5;
}

void avgBATTi(int32_t batti){volatile static int32_t avgBATTI[10];
                         volatile static int32_t avgCntr=0;
                         avgCntr++;
                         if(avgCntr>=5)avgCntr=0;
                         avgBATTI[avgCntr]=batti;

                         BATTi_average=0;
                         for(int32_t x=0; x<=4; x++){BATTi_average+=avgBATTI[x];}
                         BATTi_average=BATTi_average/5;
}

   
void scanVitals(){noInterrupts();
                int32_t a=0;
               // const int32_t comp=540; //compensate for high current pulling up voltages    .1v per amp..approx
                int32_t cntX=0;
                       
                //get PVi current FIRST
                int32_t adc=0;
                for(cntX=0; cntX<=30; cntX++){a=analogRead(PViIN);
                                     if(cntX>=2)adc+=a;}
                adc-=adcOFFSET;
                PVi=adc/PViGAIN;  //PVi= scale factor
                avgPVi(PVi);
             
                //PVv
                adc=0;
                for(cntX=0; cntX<=30; cntX++){a=analogRead(PVvIN);
                                     if(cntX>=2)adc+=a;}
                adc-=adcOFFSET;
                PVv=adc/PVvGAIN;  //PVv=scale factor
                avgPVv(PVv);
                
                //BATTv
                adc=0;
                for(cntX=0; cntX<=30; cntX++){a=analogRead(BATTvIN);
                                     if(cntX>=2)adc+=a;}
                adc-=adcOFFSET;
                BATTv=adc/BATTvGAIN;  //BATTv= scale factor
                avgBATTv(BATTv);
                      
                //calculate BATTi
                BATTi=(PVv*PVi)/BATTv;
                if(BATTi>1000)BATTi=999; //take out later
                if(BATTi<-1000)BATTi=999;
                avgBATTi(BATTi);

                //adc=adc-(adc/comp)*(PVv/100); //compensate for resistance under heavy current
                //adc=adc-(adc/comp)*(BATTi/100);
                ///////////BATTv=adc/54;  //BATTv= scale factor
         
                WATTS=(PVv*PVi)/100;  //WATTS
                interrupts();
}

 
void EEPROMsettings(bool r_w){noInterrupts(); 
                              settings.begin("my-app", false);
  
                               if(r_w){if(Serial)Serial.println("writing settings");
                                     
                                     if(BULKv!=settings.getInt("Bulk"))settings.putInt("BULKv",BULKv);
                                     if(FLOATv!=settings.getInt("Float"))settings.putInt("FLOATv",FLOATv);
                                     if(maxChargeAmps!=settings.getInt("MAXCHARGEAMPS"))settings.putInt("MAXCHARGEAMPS",maxChargeAmps);
                                     if(ThmStat!=settings.getInt("FAN"))settings.putInt("FAN",ThmStat); 
                                     if(adcOFFSET!=settings.getInt("adcOFFSET"))settings.putInt("adcOFFSET",adcOFFSET);
                                     if(PVvGAIN!=settings.getInt("PVvGAIN"))settings.putInt("PVvGAIN",PVvGAIN);
                                     if(BATTvGAIN!=settings.getInt("BATTvGAIN"))settings.putInt("BATTvGAIN",BATTvGAIN);
                                     if(PViGAIN!=settings.getInt("PViGAIN"))settings.putInt("PViGAIN",PViGAIN);      
                                     if(TEMPvOFFSET!=settings.getInt("TEMPvOFFSET"))settings.putInt("TEMPvOFFSET",TEMPvOFFSET);
                                     
                                     delay(100);
                                     
                                    }

                              if(!r_w){if(settings.getUInt("counter")>=2){
                                                              BULKv=settings.getInt("BULKv");
                                                              FLOATv=settings.getInt("FLOATv");
                                                              maxChargeAmps=settings.getInt("MAXCHARGEAMPS");
                                                              ThmStat=settings.getInt("FAN");
                                                              adcOFFSET=settings.getInt("adcOFFSET");
                                                              PVvGAIN=settings.getInt("PVvGAIN");
                                                              BATTvGAIN=settings.getInt("BATTvGAIN");
                                                              PViGAIN=settings.getInt("PViGAIN");
                                                              TEMPvOFFSET=settings.getInt("TEMPvOFFSET");
                                                              }
                                                        else {if(board==MakeSkyBlue_v118){
                                                              settings.putInt("BULKv",338);
                                                              settings.putInt("FLOATv",330);
                                                              settings.putInt("maxChargeAmps",20);
                                                              settings.putInt("ThmStat",110);
                                                              settings.putInt("adcOFFSET",200);
                                                              settings.putInt("PVvGAIN",60);  //54;
                                                              settings.putInt("BATTvGAIN",115); //54;
                                                              settings.putInt("PViGAIN",511);  //161;  //511;  //161;  //511;  //161;  //270;
                                                              settings.putInt("TEMPvOFFSET",0);
                                                              }
                                                              
                                                              if(board==PowMr){
                                                              settings.putInt("BULKv",338);
                                                              settings.putInt("FLOATv",330);
                                                              settings.putInt("MaxChargeAmps",20);
                                                              settings.putInt("ThmStat",110);
                                                              settings.putInt("adcOFFSET",200);
                                                              settings.putInt("PVvGAIN",55);  //54;
                                                              settings.putInt("BATTvGAIN",135); //54;
                                                              settings.putInt("PViGAIN",511);  //161;  //511;  //161;  //511;  //161;  //270;
                                                              settings.putInt("TEMPvOFFSET",0);
                                                              }

                                                              if(board==MakeSkyBlue_v113){
                                                              settings.putInt("BULKv",338);
                                                              settings.putInt("FLOATv",330);
                                                              settings.putInt("maxChargeAmps",20);
                                                              settings.putInt("ThmStat",110);
                                                              settings.putInt("adcOFFSET",200);
                                                              settings.putInt("PVvGAIN",55);  //54;
                                                              settings.putInt("BATTvGAIN",135); //54;
                                                              settings.putInt("PViGAIN",511);  //161;  //511;  //161;  //511;  //161;  //270;
                                                              settings.putInt("TEMPvOFFSET",0);
                                                              }}
                              }                                                
 settings.end(); 
 interrupts();
}

void doFan(){  //FAN control
         noInterrupts(); 
         int32_t x=0;
         int32_t adc=0;
         int32_t a=0;
         float average;
         float steinhart;
         
         for(x=0; x<=12; x++){a=analogRead(TEMP_IN);
                              if(x>=2)adc+=a;}
         adc-=adcOFFSET;
         adc=adc/10;   //divide by 10
         
          // convert the value to resistance
          //  average = 1023 / average - 1;
                  
          if(board==MakeSkyBlue_v118){average=adc;
                                      average=6206/average-1;}   //MakeSkyBluer 5.0v
          if(board==MakeSkyBlue_v113){average=4096-adc;  //same as powmr
                                      average=4096/average-1;}  // 3.3v
          if(board==PowMr){average=4096-adc;  //powmr
                           average=4096/average-1;}  //PowMr 3.3v
          
                           
          average = SERIESRESISTOR / average;
          //average=average/SERIESRESISTOR;
          //if(Serial)Serial.print("Thermistor resistance "); 
          //if(Serial)Serial.println(average);
           
         steinhart = average / THERMISTORNOMINAL;     // (R/Ro)
         steinhart = log(steinhart);                  // ln(R/Ro)
         steinhart /= BCOEFFICIENT;                   // 1/B * ln(R/Ro)
         steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)
         steinhart = 1.0 / steinhart;                 // Invert
         steinhart -= 273.15;                         // convert absolute temp to C
         steinhart = (steinhart * 9.0)/ 5.0 + 32.0;
         
         TEMPdeg=round(steinhart); 
         TEMPdeg+=TEMPvOFFSET;
         TEMPdeg=constrain(TEMPdeg,-300,300);
         //Serial.println(TEMPdeg);
          
         degHOT=TEMPdeg-ThmStat;  
         
         if((PVv>=BATTv)&&(degHOT>=0)){if(degHOT<=5)fanSPEED=LO;
                                       if(degHOT>=6){if(!invertFanDrv)digitalWrite(FANdrv,LOW);
                                                                 else digitalWrite(FANdrv,HIGH);
                                                     fanSPEED=HI;}}
         if((PVv<BATTv-1)||(degHOT<=-2)){if(!invertFanDrv)digitalWrite(FANdrv,HIGH);  //turn off fan
                                                     else digitalWrite(FANdrv,LOW);
                                         fanSPEED=OFF;}   
         interrupts();
}

void scanKeys(){noInterrupts();
                //adc1_config_width(ADC_WIDTH_12Bit);
               adc2_config_channel_atten(ADC2_CHANNEL_7 , ADC_ATTEN_11db);
               static int32_t mm;
               int32_t keyADC=0;
               int32_t read_raw=0;
               adc2_get_raw( ADC2_CHANNEL_7, ADC_WIDTH_12Bit, &read_raw);  
               for(int32_t x=0; x<=9; x++){adc2_get_raw(ADC2_CHANNEL_7, ADC_WIDTH_12Bit, &read_raw);
                                           keyADC+=read_raw;}  
               keyADC=keyADC/10;
               keyHIT=keyNONE;

               if(keyADC>0){vTaskDelay(10 / portTICK_PERIOD_MS);  //10ms delay
                               keyADC=0;
                               for(int32_t x=0; x<=9; x++){adc2_get_raw(ADC2_CHANNEL_7, ADC_WIDTH_12Bit, &read_raw);
                                                           keyADC+=read_raw;}  

                               keyADC=keyADC/10;
                               //Adafruit QT PY
                               //if(keyADC>2600)keyHIT=keyENTER;
                               //if(keyADC>2900)keyHIT=keyDN;
                               //if(keyADC>3200)keyHIT=keyUP;
                               //if(keyADC>3600)keyHIT=keyPROGESC;
                               
                               //QTPY ESP32-S2
                               //if(keyADC>2000)keyHIT=keyENTER;
                               //if(keyADC>2900)keyHIT=keyDN;
                               //if(keyADC>3200)keyHIT=keyUP;
                               //if(keyADC>3500)keyHIT=keyPROGESC;
                               
                               if(keyADC>=(mm+100) || keyADC<=(mm-100)){Serial.print("keyADC=");Serial.println(keyADC);}
                               mm=keyADC;
                               }
                               
               //if(Serial)Serial.print("keyADC=");if(Serial)Serial.println(keyADC);
               /*
               if(keyHIT!=keyNONE){if(keyHIT==keyPROGESC)if(Serial)Serial.println("keyPROGESC");
               if(keyHIT==keyUP)if(Serial)Serial.println("keyUP");
               if(keyHIT==keyDN)if(Serial)if(Serial)Serial.println("keyDN");
               if(keyHIT==keyENTER)if(Serial)if(Serial)Serial.println("keyENTER");}
               */          
               //if(keyADC>1000)if(Serial)Serial.println(keyADC);
               //Serial.println(ADC1_GPIO18_CHANNEL);
               interrupt_KEY=false;
               interrupts();
}

void doKEYS(){ //if(Serial){Serial.print("doKeys on exit keyHIT=");
                            //Serial.println(keyHIT);}  
              noInterrupts();    
              if(keyHIT==keyPROGESC){if(!progMODE){progMODE=true;
                                                   dspADJ=false;
                                                   dspCURRENT=dspLAST;}
                                              else{progMODE=false;
                                                   dspADJ=false;
                                                   dspLAST=dspCURRENT;
                                                   dspCURRENT=dspPV_BATT;}

                                     OLED(dspCURRENT,clrBUFFER);
                                     while(keyHIT!=keyNONE);}


              if(keyHIT==keyUP){if(progMODE==false){dspCURRENT++;
                                                    if(dspCURRENT>dspABOUT)dspCURRENT=dspPV_BATT;
                                                    OLED(dspCURRENT,false);
                                                     //if(Serial)Serial.print("dspCURRENT=");if(Serial)Serial.println(dspCURRENT);
                                                    while(keyHIT!=keyNONE);}
                                
                                if(progMODE==true){if(dspADJ==false){//set up display
                                                                     dspCURRENT++;
                                                                     //if(dspCURRENT>dspPWM1_DutyCycle_MPPT)dspCURRENT=dspBULKfloat; //30A model only
                                                                     if(dspCURRENT>dspFREQ)dspCURRENT=dspBULKfloat;
                                                                     OLED(dspCURRENT,false);
                                                                      // if(Serial)Serial.print("dspCURRENT=");if(Serial)Serial.println(dspCURRENT);
                                                                     while(keyHIT!=keyNONE);}

                                                   if(dspADJ==true){//adjust value
                                                                    saveDATA=true;
                                                                     
                                                                                                                                                                
                                                                    if(dspCURRENT==dspBULKfloat){BULKv++;
                                                                                                 if(BULKv>600)BULKv=600;}
                                                                            
                                                                    if(dspCURRENT==dspbulkFLOAT){FLOATv++;
                                                                                                 if(FLOATv>BULKv)BULKv=FLOATv;}
                                                                            
                                                                    if(dspCURRENT==dspMAXCHARGEAMPS){maxChargeAmps++;
                                                                                                     if(maxChargeAmps>60)maxChargeAmps=60;}
                                                     
                                                                    if(dspCURRENT==dspFAN){ThmStat++;
                                                                                           doFan();
                                                                                           if(ThmStat>150)ThmStat=150;}
                                                                            
                                                                    if(dspCURRENT==dspCAL_ZERO){adcOFFSET++;
                                                                                                if(adcOFFSET>1000)adcOFFSET=1000;}
                                                                            
                                                                    if(dspCURRENT==dspCAL_PVv){PVvGAIN--;
                                                                                              if(PVvGAIN<4)PVvGAIN=4;}
                                                                             
                                                                   if(dspCURRENT==dspCAL_BATTv){BATTvGAIN--;
                                                                                                if(BATTvGAIN<4)BATTvGAIN=4;}
                                                                             
                                                                   if(dspCURRENT==dspCAL_PVi){PViGAIN--;
                                                                                              if(PViGAIN<5)PViGAIN=5;}
                                                                              
                                                                   if(dspCURRENT==dspCAL_TEMPv){TEMPvOFFSET++;
                                                                                                if(TEMPvOFFSET>30)TEMPvOFFSET=30;}
                                                                    
                                                                   OLED(dspCURRENT,true);
                                                                    }
                                                                            
                                                    }
                             }
                  
              if(keyHIT==keyDN){if(progMODE==false){dspCURRENT--;
                                                    if(dspCURRENT<dspPV_BATT)dspCURRENT=dspABOUT;
                                                    OLED(dspCURRENT,false);
                                                    while(keyHIT!=keyNONE);}  


                                if(progMODE==true){if(dspADJ==false){dspCURRENT--;
                                                                     if(dspCURRENT<dspBULKfloat)dspCURRENT=dspFREQ;
                                                                     //if(dspCURRENT<dspBULKfloat)dspCURRENT=dspPWM1_DutyCycle_MPPT;
                                                                     OLED(dspCURRENT,false);
                                                                     while(keyHIT!=keyNONE);}
                                    
                                                   if(dspADJ==true){saveDATA=true;
                                                                  
                                                                                               
                                                                   
                                                                   
                                                                   if(dspCURRENT==dspBULKfloat){BULKv--;
                                                                                                if(BULKv<FLOATv)FLOATv=BULKv;}
                                                                            
                                                                   if(dspCURRENT==dspbulkFLOAT){FLOATv--;
                                                                                                if(FLOATv<100)FLOATv=100;}
                                                                            
                                                                   if(dspCURRENT==dspMAXCHARGEAMPS){maxChargeAmps--;
                                                                                                    if(maxChargeAmps<5)maxChargeAmps=5;}
                                                     
                                                                   if(dspCURRENT==dspFAN){ThmStat--;
                                                                                          doFan();
                                                                                          if(ThmStat<80)ThmStat=80;}
                                                                            
                                                                   if(dspCURRENT==dspCAL_ZERO){adcOFFSET--;
                                                                                               if(adcOFFSET<0)adcOFFSET=0;}
                                                                            
                                                                    if(dspCURRENT==dspCAL_PVv){PVvGAIN++;
                                                                                               if(PVvGAIN>1250)PVvGAIN=1250;}
                                                                             
                                                                    if(dspCURRENT==dspCAL_BATTv){BATTvGAIN++;
                                                                                                 if(BATTvGAIN>1250)BATTvGAIN=1250;}
                                                                             
                                                                    if(dspCURRENT==dspCAL_PVi){PViGAIN++;
                                                                                               if(PViGAIN>1375)PViGAIN=1375;}
                                                                              
                                                                    if(dspCURRENT==dspCAL_TEMPv){TEMPvOFFSET--;
                                                                                                 if(TEMPvOFFSET<-30)TEMPvOFFSET=-30;}
                                                                                                                                                                                                   
                                                                    OLED(dspCURRENT,true);
                                                                   }

                                                 }

                                 }

             if(keyHIT==keyENTER){if(progMODE==true){dspADJ=!dspADJ;
                                                     if(dspADJ==false){//if data changed, store data
                                                                       EEPROMsettings(saveDATA);
                                                                       saveDATA=false;
                                                                       OLED(dspCURRENT,false);}
                                                     if(dspADJ==true){if(Serial)Serial.println("JJJ");
                                                                      OLED(dspCURRENT,true);
                                                                      }  //keyHit=enter
                                                                      
                                                     while(keyHIT!=keyNONE);}}
                                                      
                                  if(progMODE==false){if(dspCURRENT==dspPeakPWM)scan4peakPWM(); 
                                  } 
                                    
       keyHIT=keyNONE;   
       interrupts();                                          
}

void scan4peakPWM(){//scanForPeakPWM
                    int32_t peakWATTS=0;
                    // if(Serial)Serial.println("entering scan4peakPWM");
                    //Serial.println(peakPWM);                     
                    //if(keyHIT!=keyNONE)return;
                    OLED(dspPeakPWM,false);
                    ledcWrite(PWM1_DutyCycle,2);
                    delay(1500);
                                        
                    for(uint32_t x=2; x<=maxPWM; x++){//if(keyHIT!=keyNONE)break;
                                                      //if(Serial)Serial.print("scan4peakPWM x=");if(Serial)Serial.println(x);
                                                      ledcWrite(PWM1_Ch,x);
                                                                                         
                                                      //if(keyHIT!=keyNONE)break;
                                                      // if(Serial)Serial.println(x);                                                       
                                                      scanVitals();
                                                                                              
                                                      if(WATTS>peakWATTS){peakPWM=x;
                                                                          peakWATTS=WATTS;} //log the peak
                                                                                                      
                                                      pixelX=map(x,0,maxPWM,8,120);
                                                      pixelY=map(constrain(WATTS,0,500),0,500,60,8);
                                                      OLED(dspPeakPWM,true);
                                                           
                                                      }
                    PWM=peakPWM;
                   //  if(Serial)Serial.println("leaving scan4peakPWM");
 }                     

void doMPPT(){static int32_t cloudyTMR=4;
              static int32_t WATTSmem=0;
              static int32_t cloudyWATTSmem=0;
              
              scanVitals();
                         
              if(PVv>FLOATv){cloudyTMR--;
                            if(cloudyTMR<0){cloudyTMR=20;  //look for rapid fade or rise
                                            if(abs(WATTS-cloudyWATTSmem)>
                                              (cloudyWATTSmem+((cloudyWATTSmem*5)/10))){//interrupt_SCAN=true;  //sun cloudy up/dn
                                                                                        cloudyWATTSmem=WATTS;}}
                           }
                                                          
              //determine mode--bulk or float
              if(BATTv>BULKv)bulkMODE=false;
              if(BATTv<(FLOATv*9)/10)bulkMODE=true; //10% drop from float v
                     
              if(PVv>BATTv){//do MPPT
                            if(((bulkMODE==true) && (BATTv<BULKv))||
                               ((bulkMODE==false) && (BATTv<FLOATv))){//dither around sweetSpot
                                                                      //scanVitals();
                                                                      // while(PWM1_DutyCycle > 0)
                                                                      //  ledcWrite(PWM1_Ch, PWM1_DutyCycle1--);
                                                                                                                                            
                                                                      if(WATTS<WATTSmem)Dir=!Dir;
                                                                      if(Dir==UP)PWM1_DutyCycle++;
                                                                      if(Dir==DN)PWM1_DutyCycle--;
                                                                                                                                              
                                                                      if(PWM1_DutyCycle<peakPWM-20){PWM1_DutyCycle=peakPWM;
                                                                                                    Dir=!Dir;}
                                                                      if(PWM1_DutyCycle>(peakPWM-2)){PWM1_DutyCycle=peakPWM;
                                                                                                     Dir=!Dir;}

                                                                       
                                                                      if(degHOT>32)PWM1_DutyCycle=peakPWM/4;
                                                                      if(degHOT>34)PWM1_DutyCycle=2;
                                                                      if(WATTS>maxChargeAmps)PWM1_DutyCycle=PWM-(PWM/8);
                                                                      ledcWrite(PWM1_Ch, PWM1_DutyCycle);
                                                                                
                                                                      
                                                                      WATTSmem=WATTS;}
                                                                 else ledcWrite(PWM1_Ch, 2);
                                                                                       
                             }                                 
                        else ledcWrite(PWM1_Ch,0);
              
                          
}

void loop(){


   if(interrupt_KEY)scanKeys(); 
        
   if(keyHIT!=keyNONE){doKEYS();
                       //if(dspADJ)keyHIT=keyNONE; 
                                      }
                                              
                  
   if(interrupt_MPPT){
                               
                   if((dspCURRENT==dspPV_BATT)||(dspCURRENT==dspDIAG)){doMPPT();
                                                                       if(dspCURRENT==dspPV_BATT)OLED(dspCURRENT,true);
                                                                       if(dspCURRENT==dspDIAG)OLED(dspDIAG,true);}
                   interrupt_MPPT=false;}

   if(interrupt_FAN){doFan();
                  interrupt_FAN=false;}

   if(interrupt_SCAN){if(PVv>BATTv){if((dspCURRENT==dspPV_BATT)||(dspCURRENT==dspDIAG)){int32_t mem=dspCURRENT;
                                                                                     scan4peakPWM();
                                                                                     dspCURRENT=mem;
                                                                                     OLED(dspCURRENT,clrBUFFER);}}
                   interrupt_SCAN=false;}

   if(dspCURRENT>dspABOUT){scanVitals();
                           if(dspADJ)OLED(dspCURRENT,true);
                                else OLED(dspCURRENT,false);}
}

void OLED(int32_t dMODE, bool dspSW){u8g2.setFontMode(1);
                                     //if(Serial)Serial.print("OLED dMODE=");if(Serial)Serial.println(dMODE);
                                     if(dMODE==dspPV_BATT)displayPV_BATT(dspSW);
                                     if(dMODE==dspDIAG)displayDIAG(dspSW);
                                     if(dMODE==dspPeakPWM)displayPeakPWM(dspSW);
                                     if(dMODE==dspABOUT)displayABOUT(dspSW);
                                   //  if(dMODE==dspPWM1_DutyCycle_MPPT)displayPWM1_DutyCycle_MPPT(dspSW);
                                     if(dMODE==dspFREQ)displayFREQ(dspSW);
                                     if(dMODE==dspBULKfloat)displayBULKfloat(dspSW);
                                     if(dMODE==dspbulkFLOAT)displaybulkFLOAT(dspSW);
                                     if(dMODE==dspMAXCHARGEAMPS)displayMAXCHARGEAMPS(dspSW);
                                     if(dMODE==dspFAN)displayFAN(dspSW);
                                     if(dMODE==dspCAL_ZERO)displayCAL_ZERO(dspSW);
                                     if(dMODE==dspCAL_PVv)displayCAL_PVv(dspSW);
                                     if(dMODE==dspCAL_PVi)displayCAL_PVi(dspSW);
                                     if(dMODE==dspCAL_BATTv)displayCAL_BATTv(dspSW);
                                     if(dMODE==dspCAL_TEMPv)displayCAL_TEMPv(dspSW);
                                     
              
                                     u8g2.sendBuffer();
}
  
void displayPV_BATT(bool sw){
                        
                if(!sw){u8g2.clearBuffer();
                        u8g2.setDrawColor(0);
                        u8g2.drawRFrame(3 ,3,61,60,7);
                        u8g2.setDrawColor(1);
                        u8g2.drawRFrame(3 ,3,61,60,7);

                        u8g2.setDrawColor(0);
                        u8g2.drawRFrame(63 ,3,63,60,7);
                        u8g2.setDrawColor(1);
                        u8g2.drawRFrame(63 ,3,63,60,7);
                        
                        u8g2.setFont(u8g2_font_profont12_mf);      
                                                        
                        u8g2.setFontMode(0);
                        u8g2.setCursor(23,9);
                        u8g2.print("    ");
                        u8g2.setCursor(76,9);
                        u8g2.print("      ");
                          
                        u8g2.setFontMode(1);
                        u8g2.setCursor(23,9);
                        u8g2.print(" PV ");
                        u8g2.setCursor(76,9);
                        u8g2.print(" BATT ");}
                                                    
                 if(sw){u8g2.setDrawColor(1);
                        u8g2.setFont(u8g2_font_t0_22b_mf);
                                   
                        //update PV
                        u8g2.setFontMode(0);
                        u8g2.drawStr(7,30,"     ");
                        u8g2.setFontMode(1);
                        u8g2.setCursor(7,30);
                        if(PVv_average>=1000)u8g2.print(PVv_average/10);
                                  else u8g2.print(float(PVv_average/10.0),1);  //PV volts

                        u8g2.setFontMode(0);
                        u8g2.drawStr(7,55,"     ");
                        u8g2.setFontMode(1);
                        u8g2.setCursor(7,55);
                        u8g2.print(float(PVi_average/10.0),1);   //PV amps

                        //update BATT
                        u8g2.setFontMode(0);
                        u8g2.drawStr(67,30,"     ");
                        u8g2.setFontMode(1);
                        u8g2.setCursor(67,30);
                        u8g2.print(float(BATTv_average/10.0),1);  //BATT volts

                        u8g2.setFontMode(0);
                        u8g2.drawStr(67,55,"     ");
                        u8g2.setFontMode(1);
                        u8g2.setCursor(67,55);
                        u8g2.print(float(BATTi_average/10.0),1);  //BATT amps

                        u8g2.setFont(u8g2_font_profont12_mf);
                        u8g2.setCursor(54,30);  //pv
                        u8g2.print("V");  
                        u8g2.setCursor(54,55);
                        u8g2.print("A");  

                        u8g2.setCursor(115,30);  //batt
                        u8g2.print("V");  
                        u8g2.setCursor(115,55);
                        u8g2.print("A");}
}

void displayDIAG(bool sw){
                if(!sw){u8g2.clearBuffer();
                       
                        u8g2.setFont(u8g2_font_profont12_mf);      
                        u8g2.setFontMode(1);
                                                        
                        u8g2.setCursor(0,8);
                        u8g2.print("PVv");
                        u8g2.setCursor(0,19);
                        u8g2.print("PVi");
                        u8g2.setCursor(0,30);
                        u8g2.print("BATTv");
                        u8g2.setCursor(0,41);
                        u8g2.print("BATTi");
                        u8g2.setCursor(0,52);
                        u8g2.print("FAN");

                        //col 2
                        u8g2.setCursor(64,8);
                        u8g2.print("WATTS");
                        u8g2.setCursor(64,19);
                        u8g2.print("PWM1_DutyCycle");
                        u8g2.setCursor(64,30);
                        u8g2.print("MODE");
                        u8g2.setCursor(64,41);
                        u8g2.print("pwmKHZ");
                        u8g2.setCursor(64,52);
                        u8g2.print("degHOT");
        
                        u8g2.setFontMode(0);}
                                                    
                 if(sw){u8g2.setCursor(36,8);
                        u8g2.setFontMode(0);
                        u8g2.print("    ");
                         u8g2.setFontMode(1);
                        u8g2.setCursor(36,8);
                        if(PVv>=1000)u8g2.print(PVv_average/10);
                                else u8g2.print(float(PVv_average/10.0),1);  //PV volts
                                                
                        u8g2.setCursor(36,19);
                        u8g2.setFontMode(0);
                        u8g2.print("    ");
                        u8g2.setCursor(36,19);
                         u8g2.setFontMode(1);
                        u8g2.print(float(PVi_average/10.0),1);
                        
                        u8g2.setCursor(36,30);
                        u8g2.setFontMode(0);
                        u8g2.print("    ");
                        u8g2.setCursor(36,30);
                        u8g2.setFontMode(1);
                        u8g2.print(float(BATTv_average/10.0),1);
                        
                        u8g2.setFontMode(0);
                        u8g2.setCursor(36,41);
                        u8g2.print("    ");
                        u8g2.setCursor(36,41);
                        u8g2.setFontMode(1);
                        u8g2.print(float(BATTi_average/10.0),1);
                        
                        u8g2.setCursor(36,52);
                        u8g2.setFontMode(0);
                        u8g2.print("    ");
                        u8g2.setCursor(36,52);
                        u8g2.setFontMode(1);
                        u8g2.print(fanSPEED);

                        //second column
                        u8g2.setCursor(105,8);
                        u8g2.setFontMode(0);
                        u8g2.print("    ");
                        u8g2.setFontMode(1);
                        u8g2.setCursor(105,8);
                        u8g2.print(WATTS);
                        
                        u8g2.setCursor(105,19);
                        u8g2.setFontMode(0);
                        u8g2.print("    ");
                        u8g2.setCursor(105,19);
                        u8g2.setFontMode(1);
                        u8g2.print(PWM);
                        
                        u8g2.setCursor(105,30);
                        u8g2.setFontMode(0);
                        u8g2.print("    ");
                        u8g2.setCursor(105,30);
                        u8g2.setFontMode(1);
                        if(bulkMODE)u8g2.print("BULK");
                               else{u8g2.setCursor(99,30);
                                    u8g2.print("FLOAT");}
                        
                                                
                        u8g2.setFontMode(0);
                        u8g2.setCursor(105,41);
                        u8g2.print("    ");
                        u8g2.setCursor(105,41);
                        u8g2.setFontMode(1);
                         
                        //u8g2.print(displayFreq(f_idx));
                       
                        u8g2.setCursor(105,52);
                        u8g2.setFontMode(0);
                        u8g2.print("    ");
                        u8g2.setCursor(105,52);
                        u8g2.setFontMode(1);
                        u8g2.print(degHOT);}
}
                        
 

void displayPeakPWM(bool sw){
              if(!sw){u8g2.clearBuffer();  
                      u8g2.setFontMode(0);
                      u8g2.clearBuffer();
                      u8g2.setDrawColor(1);
                      u8g2.drawFrame(0 ,3,126,61);
                          
                      u8g2.setFont(u8g2_font_profont12_mf);
                      u8g2.setFontMode(0);
                      u8g2.drawStr(13,8,"                 "); 
                      u8g2.setFontMode(1);
                      u8g2.drawStr(18,8,"PWM CURVE: "); 
                                                                 
                      u8g2.setCursor(80,8);
                      
                      //u8g2.print(displayFreq(f_idx));
                      
                      u8g2.setCursor(88,8);
                      u8g2.print(" KHZ");                     

                      //u8g2.setFont(u8g2_font_profont12_mf);
                      u8g2.setFont(u8g2_font_tom_thumb_4x6_mf);
                      u8g2.setFontMode(0);
                      u8g2.drawStr(8,20,"Peak PWM:");} 
                                                                                 
               if(sw){u8g2.setFont(u8g2_font_profont12_mf); 
                      u8g2.setDrawColor(1);
                      //u8g2.drawPixel(pixelX,pixelY);
                      u8g2.drawLine(pixelX,60,pixelX,pixelY);
                      
                      //u8g2.setFont(u8g2_font_tom_thumb_4x6_mf);
                      u8g2.setFontMode(0);
                      u8g2.drawStr(60,20,"    "); 
                      u8g2.setFontMode(1);
                      u8g2.setCursor(60,20);
                      u8g2.print(peakPWM);  
                      }
}

void displayABOUT(bool sw){
  
                     u8g2.clearBuffer();
                     u8g2.setFont(u8g2_font_profont12_mf);
                     u8g2.drawStr(5,12,"Software Version:");
                     u8g2.drawStr(5,28,compile_date);

                     u8g2.drawStr(5,45,"Author:");
                     u8g2.drawStr(5,60,Author);
}

void displayPWM_MPPT(bool sw){
                        
                if(!sw){u8g2.clearBuffer();
                        u8g2.setDrawColor(0);
                        u8g2.drawRFrame(3 ,3,120,60,7);
                        u8g2.setDrawColor(1);
                        u8g2.drawRFrame(3 ,3,120,60,7);

                        
                        u8g2.setFont(u8g2_font_tom_thumb_4x6_mf);
                        //u8g2.setFont(u8g2_font_profont12_mf);      
                                                        
                        u8g2.setFontMode(0);
                        u8g2.setCursor(25,7);
                        u8g2.print("                      ");
                        
                          
                        u8g2.setFontMode(1);
                        u8g2.setCursor(25,7);
                        u8g2.print(" SET PWM TAKEOVER LVL ");

                        u8g2.drawFrame(60,37,40,20);

                        u8g2.drawStr(19,44,"PWM   > ");
                        u8g2.drawStr(19,53,"MPPT  <=");

                        u8g2.setFont(u8g2_font_profont12_mf);  
                        u8g2.setCursor(65,30);
                        u8g2.print("BATTi");
                          
                        u8g2.setCursor(65,51);
                        u8g2.print(float(pwmLEVEL/10.0),1);
                       }
                                                    
                 if(sw){u8g2.setDrawColor(1);
                        u8g2.setFont(u8g2_font_profont12_mf);      
                                   
                        //update pwmLEVEL
                        u8g2.setFontMode(0);
                        u8g2.drawStr(65,51,"     ");
                        u8g2.setFontMode(1);
                        u8g2.setCursor(65,51);
                        if(pwmLEVEL>=1000)u8g2.print(pwmLEVEL/10);
                        else if(pwmLEVEL>0){u8g2.print(float(pwmLEVEL/10.0),1);}  //PV volts
                                      else u8g2.print("NEVER");

                       u8g2.setFont(u8g2_font_unifont_t_symbols);
                       u8g2.drawGlyph(105,54,0x2191);  
                       u8g2.drawGlyph(105,54,0x2193);
                       }
}

void displayFREQ(bool sw){
                        
                if(!sw){u8g2.clearBuffer();
                        u8g2.setDrawColor(0);
                        u8g2.drawRFrame(3 ,3,120,60,7);
                        u8g2.setDrawColor(1);
                        u8g2.drawRFrame(3 ,3,120,60,7);
                        
                        u8g2.setFont(u8g2_font_tom_thumb_4x6_mf);
                        //u8g2.setFont(u8g2_font_profont12_mf);      
                                                        
                        u8g2.setFontMode(0);
                        u8g2.setCursor(25,7);
                        u8g2.print("                 ");
                                                
                        u8g2.setFontMode(1);
                        u8g2.setCursor(25,7);
                        u8g2.print(" SWITCHING FREQ ");
                        u8g2.setFont(u8g2_font_profont12_mf);  
                        u8g2.setCursor(25,30);
                        
                       // u8g2.print(displayFreq(f_idx));
                        
                        u8g2.setCursor(25,45);
                        u8g2.print("Khz");
                       }
                                                    
                 if(sw){u8g2.setDrawColor(1);
                        u8g2.setFont(u8g2_font_profont12_mf);      
                                   
                        //update sw freq
                        u8g2.setFontMode(0);
                        u8g2.drawStr(25,30,"   ");
                        u8g2.setFontMode(1);
                        u8g2.setCursor(25,30);
                        
                        //u8g2.print(displayFreq(f_idx));
                        
                        //u8g2.setCursor(25,45);
                        //u8g2.print("Khz");
                        
                        u8g2.setFont(u8g2_font_unifont_t_symbols);
                        u8g2.drawGlyph(75,34,0x2191);  
                        u8g2.drawGlyph(75,34,0x2193);
                        }
}


void displayBULKfloat(bool sw){
      
           if(!sw){u8g2.clearBuffer();
                   //u8g2.setDrawColor(0);
                   //u8g2.drawRFrame(2 ,2,63,61,7);
                   u8g2.setDrawColor(1);
                   u8g2.drawRFrame(2 ,2,63,61,7);

                   //u8g2.setDrawColor(0);
                   //u8g2.drawRFrame(63 ,2,63,61,7);
                   u8g2.setDrawColor(1);
                   u8g2.drawRFrame(63 ,2,63,61,7);
                        
                   u8g2.setFont(u8g2_font_profont12_mf);      
                                              
                   u8g2.setFontMode(0);
                   u8g2.setCursor(17,8);
                   u8g2.print("      ");
                   u8g2.setCursor(75,8);
                   u8g2.print("      ");
                   u8g2.setFontMode(1);
                   u8g2.setCursor(17,8);
                   u8g2.print(" BULK ");
                   u8g2.setCursor(73,8);
                   u8g2.print(" FLOAT ");
                          
                   //BULK
                   u8g2.setCursor(21,26);
                   u8g2.print(float(BULKv/10.0),1);  //BULKv
                                      
                   u8g2.drawStr(26,50,"SET");

                   //FLOAT
                   u8g2.setCursor(82,26);
                   u8g2.print(float(FLOATv/10.0),1);  //FLOATv
                   } 
                                                  
            if(sw){//BULK up/dn, FLOATv
                   u8g2.setFont(u8g2_font_profont12_mf);
                   u8g2.setFontMode(0);
                   u8g2.drawStr(17,26,"     ");
                   u8g2.setFontMode(1);
                   u8g2.setCursor(21,26);
                   u8g2.print(float(BULKv/10.0),1);  //BULKv
                   
                   u8g2.setFontMode(0);
                   u8g2.drawStr(79,26,"     ");
                   u8g2.setFontMode(1);
                   u8g2.setCursor(82,26);  
                   u8g2.print(float(FLOATv/10.0),1);  //FLOATv
                                     
                   u8g2.setDrawColor(1); 
                   u8g2.setFontMode(0);
                   u8g2.drawStr(26,50,"   ");

                   u8g2.setFontMode(1);
                   u8g2.setFont(u8g2_font_unifont_t_symbols);
                   u8g2.drawGlyph(30,50,0x2191);  
                   u8g2.drawGlyph(30,50,0x2193);
                  }
}

void displaybulkFLOAT(bool sw){
      
           if(!sw){u8g2.clearBuffer();
                   //u8g2.setDrawColor(0);
                   //u8g2.drawRFrame(2 ,2,63,61,7);
                   u8g2.setDrawColor(1);
                   u8g2.drawRFrame(2 ,2,63,61,7);

                   //u8g2.setDrawColor(0);
                   //u8g2.drawRFrame(63 ,2,63,61,7);
                   u8g2.setDrawColor(1);
                   u8g2.drawRFrame(63 ,2,63,61,7);
                        
                   u8g2.setFont(u8g2_font_profont12_mf);      
                                              
                   u8g2.setFontMode(0);
                   u8g2.setCursor(17,8);
                   u8g2.print("      ");
                   u8g2.setCursor(75,8);
                   u8g2.print("      ");
                   
                   u8g2.setFontMode(1);
                   u8g2.setCursor(17,8);
                   u8g2.print(" BULK ");
                   u8g2.setCursor(73,8);
                   u8g2.print(" FLOAT ");
                                    
                   u8g2.setFontMode(0);
                   u8g2.setFont(u8g2_font_profont12_mf);
                   u8g2.drawStr(25,45,"   "); 
                   u8g2.drawStr(25,55,"   ");
                   u8g2.drawStr(80,45,"   "); 
                   u8g2.drawStr(80,55,"   "); 
                   u8g2.setFontMode(1);
                         
                   //BULK
                   u8g2.setCursor(21,26);
                   u8g2.print(float(BULKv/10.0),1);  //BULKv

                   u8g2.setFontMode(0);
                   u8g2.drawStr(89,45,"   "); 
                   u8g2.drawStr(89,55,"   ");
                  
                   //FLOAT
                   u8g2.setFontMode(1);
                   u8g2.setCursor(82,26);
                   u8g2.print(float(FLOATv/10.0),1);  //FLOATv
                   u8g2.drawStr(85,50,"SET"); 
                  } 
                                                  
            if(sw){//BULKv , FLOATv
                   u8g2.setFont(u8g2_font_profont12_mf);
                   u8g2.setFontMode(0);
                   u8g2.setCursor(21,26);
                   u8g2.print("     ");

                   u8g2.setFontMode(1);
                   u8g2.setCursor(21,26);
                   u8g2.print(float(BULKv/10.0),1);  //BULKv                   

                   u8g2.setFontMode(0);
                   u8g2.setCursor(79,26);
                   u8g2.print("     ");

                   u8g2.setFontMode(1);
                   //u8g2.setDrawColor(0);
                   u8g2.setCursor(82,26);  
                   u8g2.print(float(FLOATv/10.0),1);  //FLOATv
                   
                   u8g2.setFontMode(0);
                   u8g2.drawStr(25,45,"    "); 
                   u8g2.drawStr(25,55,"    ");
                   u8g2.drawStr(80,45,"    "); 
                   u8g2.drawStr(80,55,"    ");
                    
                   u8g2.setFontMode(1);
                   u8g2.setFont(u8g2_font_unifont_t_symbols);
                   u8g2.drawGlyph(89,50,0x2191);  
                   u8g2.drawGlyph(89,50,0x2193);
                   }
}
                              
void displayMAXCHARGEAMPS(bool sw){
          
              if(!sw){u8g2.clearBuffer();       
                      u8g2.setFont(u8g2_font_profont12_mf);
                      u8g2.setFontMode(1);
                      u8g2.drawStr(20,22,"MAX CHARGE AMPS"); 
                       
                      u8g2.setCursor(58,51);
                      u8g2.print(maxChargeAmps);

                      u8g2.setFontMode(0);
                      u8g2.drawStr(89,45,"   "); 
                      u8g2.drawStr(89,55,"   ");
                               
                      u8g2.setDrawColor(1); 
                      u8g2.drawRFrame(3,3,125,60,7);
                      }                                              
  
               if(sw){u8g2.setFontMode(1);  
                      u8g2.setFont(u8g2_font_unifont_t_symbols);
                      u8g2.drawGlyph(89,50,0x2191);  
                      u8g2.drawGlyph(89,50,0x2193);
          
                      u8g2.setDrawColor(1);
                      u8g2.setFont(u8g2_font_profont12_mf);
                      u8g2.setFontMode(0);
                      u8g2.drawStr(58,51,"     ");
                      u8g2.setFontMode(1);
                      u8g2.setCursor(58,51);
                      u8g2.print(maxChargeAmps);
                      }
}

void displayFAN(bool sw){
      
          // if(!sw){
                   u8g2.clearBuffer();
                   u8g2.setFontMode(1);
                   u8g2.drawRFrame(2 ,2,63,61,7);
                   u8g2.drawRFrame(63 ,2,63,61,7);
                                         
                   u8g2.setFont(u8g2_font_profont12_mf);      
                   u8g2.setFontMode(0);
                   u8g2.drawStr(12,8,"       ");
                   u8g2.drawStr(76,8,"      ");

                   u8g2.setFontMode(1);
                   u8g2.setCursor(20,8);
                   u8g2.print("TEMP");
                   u8g2.setCursor(86,8);
                   u8g2.print("FAN"); 
                   
                   u8g2.drawStr(85,50,"SET");                     
                              
                   //TEMPdeg
                   u8g2.setCursor(21,26);
                   u8g2.print(TEMPdeg);  
                                      
                   u8g2.setFontMode(0);
                   u8g2.drawStr(80,45,"     "); 
                   u8g2.drawStr(80,55,"     ");
                   
                   u8g2.setCursor(82,26);
                   u8g2.print(ThmStat);  

                   u8g2.setCursor(82,50);                  
                   u8g2.print("ENTER");
                   //}
           
            if(sw){//FAN up/dn
                   u8g2.setFontMode(1);
                   u8g2.setFont(u8g2_font_profont12_mf);
                   u8g2.setFontMode(0);
                   u8g2.drawStr(17,26,"     ");
                   u8g2.setFontMode(1);
                   u8g2.setCursor(21,26);
                   u8g2.print(TEMPdeg);  
                   
                   u8g2.setFontMode(0);
                   u8g2.drawStr(79,26,"     ");
                   u8g2.setFontMode(1);
                   u8g2.setCursor(82,26);  
                   u8g2.print(ThmStat);  
           
                   u8g2.setFontMode(0);
                   u8g2.drawStr(80,45,"      "); 
                   u8g2.drawStr(80,55,"      ");

                   u8g2.setFontMode(1);  
                   u8g2.setFont(u8g2_font_unifont_t_symbols);
                   u8g2.drawGlyph(89,50,0x2191);  
                   u8g2.drawGlyph(89,50,0x2193);
                   }
}

void displayCAL_ZERO(bool sw){
      
           if(!sw){u8g2.clearBuffer();
                   u8g2.setFontMode(1);
                   u8g2.drawRFrame(2 ,2,63,61,7);
                   u8g2.drawRFrame(63 ,2,63,61,7);
                                         
                   u8g2.setFont(u8g2_font_profont12_mf);      
                   u8g2.setFontMode(0);
                   u8g2.drawStr(12,8,"       ");
                   u8g2.drawStr(72,8,"       ");

                   u8g2.setFontMode(1);
                   u8g2.setCursor(17,8);
                   u8g2.print("PVzero");
                   u8g2.setCursor(77,8);
                   u8g2.print("OFFSET");
                          
                   //PVv
                   u8g2.setCursor(21,26);
                   u8g2.print(float(PVv/10.0),1);  
                                      
                   u8g2.setFontMode(0);
                   u8g2.setFont(u8g2_font_profont12_mf);
                  
                   u8g2.drawStr(80,45,"   ");//wipe out u/d arrow 
                   u8g2.drawStr(80,55,"   ");
                   
                   u8g2.setCursor(82,26);
                   u8g2.print(adcOFFSET); 

                   u8g2.setCursor(82,50);                  
                   u8g2.print("ENTER");
                   }
           
            if(sw){//adcOFFSET up/dn
                   u8g2.setFontMode(1);
                   u8g2.setFont(u8g2_font_profont12_mf);
                   u8g2.setFontMode(0);
                   u8g2.drawStr(17,26,"     ");
                   u8g2.setFontMode(1);
                   u8g2.setCursor(21,26);
                   u8g2.print(float(PVv/10.0),1);  
                   
                   u8g2.setFontMode(0);
                   u8g2.drawStr(79,26,"     ");
                   u8g2.setFontMode(1);
                   u8g2.setCursor(82,26);  
                   u8g2.print(adcOFFSET); 

                   u8g2.setFontMode(0);
                   u8g2.drawStr(80,45,"      "); 
                   u8g2.drawStr(80,55,"      ");
           
                   u8g2.setFont(u8g2_font_unifont_t_symbols);
                   u8g2.drawGlyph(89,50,0x2191);  
                   u8g2.drawGlyph(89,50,0x2193);
                   }
}

void displayCAL_PVv(bool sw){
      
           if(!sw){u8g2.setFont(u8g2_font_profont12_mf);    
                   u8g2.setFontMode(1);
                   u8g2.clearBuffer();
                   u8g2.drawRFrame(2 ,2,63,61,7);
                   u8g2.drawRFrame(63 ,2,63,61,7);
               
                   u8g2.setFontMode(0);
                   u8g2.setCursor(20,8);
                   u8g2.print("     ");
                   u8g2.setCursor(76,8);
                   u8g2.print("      ");  
                                          
                   u8g2.setFont(u8g2_font_profont12_mf);      
                   u8g2.setCursor(26,8);
                   u8g2.print("PVv");
                   u8g2.setCursor(82,8);
                   u8g2.print("GAIN");
                             
                   //PVv
                   u8g2.setCursor(21,26);
                   u8g2.print(float(PVv/10.0),1);  
                                      
                   u8g2.setCursor(82,50);                  
                   u8g2.print("ENTER");
                   
                   u8g2.setCursor(82,26);
                   u8g2.print(PVvGAIN);

                   u8g2.setCursor(82,50);                  
                   u8g2.print("ENTER");
                   } 
           
            if(sw){//PVvGAIN up/dn
                   u8g2.setFontMode(1);
                   u8g2.setFont(u8g2_font_profont12_mf);
                   u8g2.setFontMode(0);
                   u8g2.drawStr(17,26,"      ");
                   u8g2.setFontMode(1);
                   u8g2.setCursor(21,26);
                   u8g2.print(float(PVv/10.0),1);  
                   
                   u8g2.setFontMode(0);
                   u8g2.drawStr(80,26,"     ");
                   u8g2.setFontMode(1);
                   u8g2.setCursor(82,26);  
                   u8g2.print(PVvGAIN); 
                   
                   u8g2.setFontMode(0);
                   u8g2.drawStr(74,45,"       "); 
                   u8g2.drawStr(74,55,"       "); 
                                        
                   u8g2.setFont(u8g2_font_unifont_t_symbols);
                   u8g2.drawGlyph(89,50,0x2191);  
                   u8g2.drawGlyph(89,50,0x2193);
                   }
}

void displayCAL_BATTv(bool sw){
      
           if(!sw){u8g2.setFont(u8g2_font_profont12_mf);    
                   u8g2.setFontMode(1);
                   u8g2.clearBuffer();
                   u8g2.drawRFrame(2 ,2,63,61,7);
                   u8g2.drawRFrame(63 ,2,63,61,7);
               
                   u8g2.setFontMode(0);
                   u8g2.setCursor(14,8);
                   u8g2.print("       ");
                   u8g2.setCursor(76,8);
                   u8g2.print("      ");  
                                          
                   u8g2.setFont(u8g2_font_profont12_mf);      
                   u8g2.setCursor(20,8);
                   u8g2.print("BATTv");
                   u8g2.setCursor(82,8);
                   u8g2.print("GAIN");
                          
                   //BATTv
                   u8g2.setCursor(21,26);
                   u8g2.print(float(BATTv/10.0),1);  
                                      
                   u8g2.setFontMode(1);
                   u8g2.setCursor(82,26);
                   u8g2.print(BATTvGAIN); 

                   u8g2.setCursor(82,50);                  
                   u8g2.print("ENTER");
                   } 
           
            if(sw){//BATTvGAIN up/dn
                   u8g2.setFontMode(1);
                   u8g2.setFont(u8g2_font_profont12_mf);
                   u8g2.setFontMode(0);
                   u8g2.drawStr(17,26,"     ");
                   u8g2.setFontMode(1);
                   u8g2.setCursor(21,26);
                   u8g2.print(float(BATTv/10.0),1);  
                   
                   u8g2.setFontMode(0);
                   u8g2.drawStr(79,26,"     ");
                   u8g2.setFontMode(1);
                   u8g2.setCursor(82,26);  
                   u8g2.print(BATTvGAIN);  

                   u8g2.setFontMode(0);
                   u8g2.drawStr(74,45,"       "); 
                   u8g2.drawStr(74,55,"       "); 
           
                   u8g2.setFontMode(1);  
                   u8g2.setFont(u8g2_font_unifont_t_symbols);
                   u8g2.drawGlyph(89,50,0x2191);  
                   u8g2.drawGlyph(89,50,0x2193);
                   }
}

void displayCAL_PVi(bool sw){
      
           if(!sw){u8g2.setFont(u8g2_font_profont12_mf);    
                   u8g2.setFontMode(1);
                   u8g2.clearBuffer();
                   u8g2.drawRFrame(2 ,2,63,61,7);
                   u8g2.drawRFrame(63 ,2,63,61,7);
               
                   u8g2.setFontMode(0);
                   u8g2.setCursor(21,8);
                   u8g2.print("     ");
                   u8g2.setCursor(77,8);
                   u8g2.print("      ");           
                   
                   u8g2.setFontMode(1);                           
                   u8g2.setCursor(21,8);
                   u8g2.print(" PVi ");
                   u8g2.setCursor(77,8);
                   u8g2.print(" GAIN ");
                          
                   //PVi
                   u8g2.setCursor(21,26);
                   u8g2.print(float(PVi/10.0),1); 

                   u8g2.setCursor(82,26);
                   u8g2.print(PViGAIN);  
                                      
                   u8g2.setCursor(82,50);                  
                   u8g2.print("ENTER");

                   //driveFETs(f_idx,freq[f_idx]/2);  //mid range charge
                   } 
           
            if(sw){//PViGAIN up/dn
                   //driveFETs(f_idx,freq[f_idx]/2);  //mid range charge
                   
                   u8g2.setFont(u8g2_font_profont12_mf);
                   u8g2.setFontMode(0);
                   u8g2.drawStr(17,26,"     ");
                   u8g2.setFontMode(1);
                   u8g2.setCursor(21,26);
                   u8g2.print(float(PVi/10.0),1);  
                   
                   u8g2.setFontMode(0);
                   u8g2.drawStr(79,26,"     ");
                   u8g2.setFontMode(1);
                   u8g2.setCursor(82,26);  
                   u8g2.print(PViGAIN);  

                   u8g2.setFontMode(0);
                   u8g2.drawStr(74,45,"       "); 
                   u8g2.drawStr(74,55,"       "); 
                   
                   u8g2.setFontMode(1);  
                   u8g2.setFont(u8g2_font_unifont_t_symbols);
                   u8g2.drawGlyph(89,50,0x2191);  
                   u8g2.drawGlyph(89,50,0x2193);
                   }
}

void displayCAL_TEMPv(bool sw){
      
           if(!sw){u8g2.clearBuffer();
                   u8g2.setDrawColor(1);
                   u8g2.drawRFrame(2 ,2,63,61,7);
                   u8g2.drawRFrame(63 ,2,63,61,7);
                   
                   u8g2.setFontMode(0);
                   u8g2.setFont(u8g2_font_profont12_mf);      
                   u8g2.setCursor(17,8);
                   u8g2.print("      ");
                   u8g2.setCursor(79,8);
                   u8g2.print("      ");
                  
                   u8g2.setFontMode(1);
                   u8g2.setCursor(19,8);
                   u8g2.print(" TEMP ");
                   u8g2.setCursor(80,8);
                   u8g2.print("ADJUST");
                          
                   //TEMPdeg
                   u8g2.setCursor(21,26);
                   u8g2.print(TEMPdeg);  
                  
                   u8g2.setCursor(86,26);
                   u8g2.print(TEMPvOFFSET);

                   u8g2.setCursor(82,50);                  
                   u8g2.print("ENTER");
                   }
                      
            if(sw){//TEMPvGAIN up/dn
                   u8g2.setFont(u8g2_font_profont12_mf);
                   u8g2.setFontMode(0);
                   u8g2.drawStr(17,26,"     ");
                   u8g2.setFontMode(1);
                   u8g2.setCursor(21,26);
                   u8g2.print(TEMPdeg);  
                   
                   u8g2.setFontMode(0);
                   u8g2.drawStr(74,26,"       ");
                   u8g2.setFontMode(1);
                   u8g2.setCursor(86,26);  
                   u8g2.print(TEMPvOFFSET); 

                   u8g2.setFontMode(0);
                   u8g2.drawStr(74,45,"       "); 
                   u8g2.drawStr(74,55,"       "); 
           
                   u8g2.setFontMode(1);  
                   u8g2.setFont(u8g2_font_unifont_t_symbols);
                   u8g2.drawGlyph(89,50,0x2191);  
                   u8g2.drawGlyph(89,50,0x2193);
                   }
}                                                         



  

[/code]

ADC2 cannot be used with WiFi.

I'm only trying to use the A0-A3 asmarked on the pc board..GPIO18 apparently is A0..

this 'scope' error is outside my code..

I gave up trying to get adc1-2_get_raw()
and installed ESP32analogRead.h
almost working perfectly.. however, instead of linearly reading out the analog in voltage, 0v to 3v3v, it limits/clips at about 2.6v..everything over 2.6v reads back as 2.6v..
somewhere there must be a calibration routine to fix this..doesanyone knowwhere to look for that?? thanks forany help on this..

https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/adc_calibration.html

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.