Arduino nano eps32 keeps reconnecting

hey, my arduino nano esp32 keeps on reconnecting with my pc and prints this in the Serial Monitor:

Is the board in ESP32 mode?

it gets registered as Arduino Nano ESP32 if you mean that

okay nvm it gets registered as ESP32 Family Device

But it's an Arduino isn't it. Try using a normal ESP32 device, meanwhile I will try to find out how to put the NANO ESP32 into ESP32 mode.

yea it is.
Ill do that, thank you!

I am misremembering, there doesn't appear to be an esp32 mode, but try double tapping the button after you connect USB cable but before adding a device.

okay so, i watched a tutorial on how to fix it again and it seems to work now, altho my code seems to crash the arduino, maybe you can take a look?

#include <WiFi.h>
#include <vector>
#include <cmath>

const char* ssid = "";
const char* password = "";

int digitPatterns[10] = {
    0b11101011,
    0b01001000,
    0b11010011,
    0b11011010,
    0b01111000,
    0b10111010,
    0b10111011,
    0b11001000,
    0b11111011,
    0b11111010
};

//00000001 | LeDown //00000010 | DOWN //00000100 | DOT //00001000 | RiDown //00010000 | MIDDLE //00100000 | LeTop //01000000 | RiTop //10000000 | TOP

#define PIN_DATA_3  4
#define PIN_DATA_2  3
#define PIN_SHIFT 6
#define PIN_STORE 5
#define PIN_DATA  2

#define PIN_SEG1POS 7
#define PIN_SEG2POS 8
#define PIN_SEG3POS 9
#define PIN_SEG4POS 10


#define PIN_CLK A0
#define PIN_DT A1
#define PIN_SW A2


#define TZ_OFFSET 3600
#define DST_OFFSET 7200

long displayNumber = 0;
int lastStateCLK;
int currentStateCLK;

int lastStateSW;
int currentStateSW;

bool loading = false;
int dotSet[12] = {0,0,0,0,0,0,0,0,0,0,0,0};



int counter = 0;



void setup() {
    Serial.begin(9600);

    pinMode(PIN_STORE, OUTPUT);
    pinMode(PIN_SHIFT, OUTPUT);
    pinMode(PIN_DATA, OUTPUT);
    pinMode(PIN_DATA_2, OUTPUT);
    pinMode(PIN_DATA_3, OUTPUT);

    pinMode(PIN_SEG1POS, OUTPUT);
    pinMode(PIN_SEG2POS, OUTPUT);
    pinMode(PIN_SEG3POS, OUTPUT);
    pinMode(PIN_SEG4POS, OUTPUT);


    pinMode(PIN_CLK, INPUT);
    pinMode(PIN_DT, INPUT);
    pinMode(PIN_SW, INPUT_PULLUP);


    digitalWrite(PIN_STORE, LOW);

    WiFi.begin(ssid, password);
    unsigned long startAttemptTime = millis();
    while (WiFi.status() != WL_CONNECTED && millis() - startAttemptTime < 10000) {
        delay(1000);
    }

    configTime(0, 0, "pool.ntp.org");

    struct tm timeinfo;
    while (!getLocalTime(&timeinfo)) {
      delay(1000);
    }

    time_t now;
    time(&now);


    lastStateCLK = digitalRead(PIN_CLK);
    lastStateSW = digitalRead(PIN_SW);
}

unsigned long lastUpdate = 0;

void loop() {
    currentStateCLK = digitalRead(PIN_CLK);

    if (currentStateCLK != lastStateCLK) {
      if (digitalRead(PIN_DT) != currentStateCLK) {
        counter++;
      } else {
        counter--;
      }
    }
    lastStateCLK = currentStateCLK;

    currentStateSW = digitalRead(PIN_SW);
  	

    displayNumber = 0;

    if (!currentStateSW && lastStateSW) {
      counter = 0;
    }

    lastStateSW = currentStateSW;
    
    displayNumber = std::floor(counter / 2);
    
    unsigned long currentTime = millis();
    if (currentTime - lastUpdate >= 1) {
        timeval tv;
        gettimeofday(&tv, nullptr);
        unsigned long unixMillis = tv.tv_sec * 1000UL + tv.tv_usec / 1000;

        displayNumber = 1737115500 * 1000 - unixMillis;
        lastUpdate = currentTime;
    }
    remainNumber();
}

void setNumberSegment(int pos, int number3, int number2, int number1) {
  digitalWrite(PIN_SEG1POS, LOW);
  digitalWrite(PIN_SEG2POS, LOW);
  digitalWrite(PIN_SEG3POS, LOW);
  digitalWrite(PIN_SEG4POS, LOW);

  int pattern1 = (number1 != -1) ? digitPatterns[number1] : 0b00000000;
  int pattern2 = (number2 != -1) ? digitPatterns[number2] : 0b00000000;
  int pattern3 = (number3 != -1) ? digitPatterns[number3] : 0b00000000;

  for (int i = 0; i < 8; i++) {
    int bit1 = (pattern1 >> i) & 0x01;
    int bit2 = (pattern2 >> i) & 0x01;
    int bit3 = (pattern3 >> i) & 0x01;


    digitalWrite(PIN_DATA, !bit1);
    digitalWrite(PIN_DATA_2, !bit2);
    digitalWrite(PIN_DATA_3, !bit3);

    digitalWrite(PIN_SHIFT, HIGH);
    digitalWrite(PIN_SHIFT, LOW);
  }
  digitalWrite(PIN_STORE, HIGH);
  digitalWrite(PIN_STORE, LOW);
  
  digitalWrite(pos + 7, HIGH);
}

void setDisplayNumber(std::string text) {
  std::string numbers = text;
  std::string dots = text;

  size_t pos = 0;
  while ((pos = numbers.find(".", pos)) != std::string::npos) {
      numbers.replace(pos, 1, "");
      pos++;
  }
  for (int i = 0; i < dots.length(); i++) {
    if (dots[i] != '.') {
      dots[i] = ' ';
    }
  }

  for (size_t i = 0; i < dots.length(); i++) {
    if (dots[i] == '.') {
      dotSet[i] = 1;
    } else {}
      dotSet[i] = 0;
    }
  
}

int lastDisplayNumber;

void remainNumber() {
  digitalWrite(PIN_SEG1POS, LOW);
  digitalWrite(PIN_SEG2POS, LOW);
  digitalWrite(PIN_SEG3POS, LOW);
  digitalWrite(PIN_SEG4POS, LOW);

  std::vector<int> digits;
  int displayNumberTemp = displayNumber;

  while (displayNumberTemp > 0) {
    digits.push_back(displayNumberTemp % 10);
    displayNumberTemp /= 10;
  }

  setNumberSegment(0, getDigit(digits, 8), getDigit(digits, 4), getDigit(digits, 0));
  delayMicroseconds(100);
  setNumberSegment(1, getDigit(digits, 9), getDigit(digits, 5), getDigit(digits, 1));
  delayMicroseconds(100);
  setNumberSegment(2, getDigit(digits, 10), getDigit(digits, 6), getDigit(digits, 2));
  delayMicroseconds(100);
  setNumberSegment(3, getDigit(digits, 11), getDigit(digits, 7), getDigit(digits, 3));
  delayMicroseconds(100);
  lastDisplayNumber = displayNumber;
}

int getDigit(const std::vector<int>& digits, size_t index) {
    if (index < digits.size()) {
        return digits[index];
    }
    return -1;
}

I will look at your code if you will post either the tutorial or link to same so others can benefit.

I’ll do that once I’m on my pc again, and thanks!

There are a couple compile errors. One I don't understand is backwards AFAIK. The include for WiFi has to be #include "WiFi.h"! In my mind that means resolve locally first then system wide.
The other error is to do with unsigned long, you can take care of that.
I suspect you have compiler errors set to none. I will get chastised by the moderators if I tell you that is ST*PID. You want to see the MOST errors, some can be ignored and I have found that in 99% of the cases the default setting is good enough although I occasionally set it to all. Good luck.

Till now my compiler always gave me errors, I’ll look if I accidentally disabled that

Thats the Tutorial that helped me resolve the issue

1 Like