I am programming a FeatherHuazzahEsp34 board, with an SD card module. I am trying to log and send the data I capture from an "Analog AC Current Sensor 20A" probe.
If I activate the WIFI, I don't read the analog ports and if I disable it, I read the data from the analog ports.
I don't know what the problem is
#include <WiFi.h>
#include "FS.h"
#include "SD.h"
#include "SPI.h"
char ssid[50];
char password[50];
String IdInstalacio = "";
//Potencia
const int ACPin = A0; //set arduino signal read pin
#define ACTectionRange 20; //set Non-invasive AC Current Sensor tection range (5A,10A,20A)
// VREF: Analog reference
// For Arduino UNO, Leonardo and mega2560, etc. change VREF to 5
// For Arduino Zero, Due, MKR Family, ESP32, etc. 3V3 controllers, change VREF to 3.3
#define VREF 3.3
void setup()
{
Serial.begin(9600);
delay(1000);
Serial.println(" ");
Serial.println("-> Inici SETUP ");
Serial.println("-> Ausatel Sistemes 2023 ");
Serial.println("-> Test_Wifi_SD_01 ");
//Potencia
// Sd Card
if(!SD.begin(SS))
{
Serial.println("Card Mount Failed");
return;
}
uint8_t cardType = SD.cardType();
if(cardType == CARD_NONE)
{
Serial.println("No SD card attached");
return;
}
readFile(SD, "/info.txt");
// WIFI Conneció
Serial.print("-> Connecting to ");
Serial.println(ssid);
Serial.print("-> ");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("-> WiFi connected");
Serial.print("-> IP address: ");
Serial.println(WiFi.localIP());
Serial.println("-> Fi SETUP");
}
void loop()
{
float ACCurrentValue = readACCurrentValue(); //read AC Current Value
Serial.print(ACCurrentValue/2);
Serial.println(" A");
Serial.print((ACCurrentValue/2) * 230);
Serial.println(" W");
delay(6000);
}
// Inci funció llegir SD *************
void readFile(fs::FS &fs, const char * path)
{
int a =0;
String cadena="";
Serial.println("-> Llegint SD.....");
Serial.printf("-> Llegint fitxer: %s\n", path);
File file = fs.open(path);
if(!file)
{
Serial.println("Failed to open file for reading");
return;
}
Serial.print("-> Lectura del fitxe: ");
while(file.available())
{
//APTona;AusatelTona08;8001;
//Serial.write(file.read());
char caracter=file.read();
cadena=cadena+caracter;
a=file.position();
if(caracter==10)//ASCII de nueva de línea
{
break;
}
}
file.close();
Serial.println(cadena);
//Funció trossejar
int Inici, Fi, n;
String Camp;
n = 0;
Inici = 0;
Fi = cadena.indexOf(";",Inici);
while (Fi != -1)
{
Camp = cadena.substring(Inici, Fi);
Inici = Fi+1;
Fi = cadena.indexOf(";", Inici);
int str_len = Camp.length() + 1;
if (n==0) Camp.toCharArray(ssid, str_len); //convertim de String a Char
if (n==1) Camp.toCharArray(password, str_len);
//if (n==0) ssid = Camp;
//if (n==1) password = Camp;
if (n==2) IdInstalacio = Camp; // si fos un muneric -> Camp.toInt();
n = n +1;
}
Serial.print("-> SSID: "); Serial.println(ssid);
Serial.print("-> Password: "); Serial.println(password);
Serial.print("-> IdInstalacio: "); Serial.println(IdInstalacio);
}
// Fi funció llegir SD *************
// Funció llegir potencia
float readACCurrentValue()
{
float ACCurrtntValue = 0;
float peakVoltage = 0;
float voltageVirtualValue = 0; //Vrms
for (int i = 0; i < 6; i++)
{
peakVoltage += analogRead(ACPin); //read peak voltage
delay(1);
}
peakVoltage = peakVoltage / 6;
voltageVirtualValue = peakVoltage * 0.707; //change the peak voltage to the Virtual Value of voltage
/*The circuit is amplified by 2 times, so it is divided by 2.*/
voltageVirtualValue = (voltageVirtualValue / 1024 * VREF ) / 2;
ACCurrtntValue = voltageVirtualValue * ACTectionRange;
Serial.print("VoltageVirtual = "); Serial.println(voltageVirtualValue);
//Serial.print("ACTectionRange = "); Serial.println(ACTectionRange);
Serial.print("ACCurrtntValue = "); Serial.println(ACCurrtntValue);
Serial.println("********************************");
return ACCurrtntValue;
}
// Fi funció llegir potenies
With the SETUP like this:
void setup()
{
Serial.begin(9600);
delay(1000);
Serial.println(" ");
Serial.println("-> Inici SETUP ");
Serial.println("-> Ausatel Sistemes 2023 ");
Serial.println("-> Test_Wifi_SD_01 ");
//Potencia
// Sd Card
if(!SD.begin(SS))
{
Serial.println("Card Mount Failed");
return;
}
uint8_t cardType = SD.cardType();
if(cardType == CARD_NONE)
{
Serial.println("No SD card attached");
return;
}
readFile(SD, "/info.txt");
/*
// WIFI Conneció
Serial.print("-> Connecting to ");
Serial.println(ssid);
Serial.print("-> ");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("-> WiFi connected");
Serial.print("-> IP address: ");
Serial.println(WiFi.localIP());
Serial.println("-> Fi SETUP");
*/
}
Yes, I can read the analog inputs.
I don't know what my mistake is!!!