Ik heb twee sketches die draaien op een Nano. Een kan ik niet draaien op ESP32 en de ander wel. Waarom?
Wat zijn de symptomen?
- Compileert het niet?
- Of werkt het niet wat je verwacht?
Voor beiden graag je schets hier neerzetten (vergeet niet om code tags te gebruiken zoals beschreven in Hoe haal je het meeste uit het forum).
Voor de tweede een goede beschrijving wat je verwacht en wat het daadwerkelijk doet.
Wees je er verder van bewust dat een Nano een 5V bord is en de ESP32 een 3.3V board. Wat je ook aangesloten mag hebben is kan misschien niet met 3.3V signalen overweg. Schema / bedradingstekening gewenst.
Als je in bericht plaatst in de niet-Nederlandse secties van het forum dien je de bedoelde taal te gebruiken; gebruik iets als google translate indien nodig.
Dag sterretje. Bedankt voor het meekijken.
Het probleem is dat ik de skets niet kan compileren als ik ESP32 of ESP32C3 instel. De nano werkt wel met 5V, maar het hele circuit er omheen is op 3V3.
[code]
/* 05-03-2025 EST
* Temperature sensor (Melexis 90614) met SSD1306
* Als de Knop wwordt ingedrukt wordt de tepmerature van 100 C
* weergegeven. De analoge waarde kan m.b.v. de Potmeter afgeregeld worden
* Bij een Potwaare van 75 is de spanning van pin 9 ongeveer 2.5 V.
*/
#include <Arduino.h>
#include <SPI.h>
#include <Wire.h>
#include <SparkFunMLX90614.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
IRTherm temperatura;
Adafruit_SSD1306 display = Adafruit_SSD1306();
double Tobj;
int analogPin = 9;
int knopPin = 3;
int Knop;
void setup() {
Serial.begin(9600);
temperatura.begin (0x5A);
temperatura.setUnit(TEMP_C);
pinMode(knopPin, INPUT);
pinMode(analogPin, OUTPUT);
display.begin(0x3C);
display.setTextColor(WHITE);
display.clearDisplay();
display.setCursor(0, 10);
display.setTextSize (2);
display.println(" TEMP ");
display.display();
delay(2000);
display.clearDisplay();
}
void loop() {
//Display
if (temperatura.read()) {
display.setCursor(0, 0);
display.setTextSize(2);
Knop = digitalRead (knopPin);
if(Knop == LOW) {Tobj = 100;}
else Tobj = temperatura.object();
Serial.print("Tobj :"); Serial.println(Tobj);
display.print("Tobj: " + String(Tobj, 0));
display.println("");
display.print("Tamb: " + String(temperatura.ambient(), 0));
display.display();
delay(500);
display.clearDisplay();
}
//Analoog output
int Pot = analogRead (0);
Pot = map (Pot, 0, 690, 200, 50);
Serial.println(Pot);
Tobj = (Tobj * 100/Pot);
analogWrite(9,Tobj);
Ik kan de skets niet **compileren** als ik een ESP32 of ESP32C3 instel. De Nano is wel 5V, maar het circuit er om heen is 3v3.
Ik had je eigenlijk ook moeten vragen om ook de fout meldingen te geven. Nadat ik wat kleine probleempjes in je programma had weggewerkt (laatste regel en het woord [code]) was de eerste fout
c:\Users\bugge\OneDrive\Documents\Arduino\libraries\SparkFun_Qwiic_IR_Thermometer_MLX90614_Arduino_Library\src/SparkFunMLX90614.h:30:13: error: 'PIN_WIRE_SCL' was not declared in this scope
30 | #define SCL PIN_WIRE_SCL
Je probleem zit in dit gedeelte van de file SparkFunMLX90614.h
///////////////////////////////////////////
// Default I2C PIN for non Atmega Boards //
///////////////////////////////////////////
#ifndef SDA
#define SDA PIN_WIRE_SDA
#endif
#ifndef SCL
#define SCL PIN_WIRE_SCL
#endif
Voor de Nano zijn de pinnen SDA and SCL gedefinieerd. Voor de ESP32 (waar ik verder niet bekend me ben) waarschijnlijk niet en dus worden PIN_WIRE_SDA en PIN_WIRE_SCL gebruikt die bij de meeste ESP32 borden ook niet gedefinieerd zijn.
In de ESP32 board package versie 3.1.3 zijn de laatste twee alleen bekend voor 4 verschillende borden.
Als je geen gebruik maakt van sleep() en wake() van de Sparkfun bibliotheek (of niet van plan bent die te gebruiken) kun je die functies uit de bibliotheek slopen want dat lijkt de enige plek te zijn waar PIN_WIRE_SDA en PIN_WIRE_SCL gebruikt worden en ook het hierboven getoonde stukje verwijderen.
Het is mogelijk dat die functie überhaupt niet zullen werken op enige board dat gebaseerd is op een ESP32.
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.