lukcraft:
Die zahlen sollten alle nicht über 2 Milliarden gehen nicht mehr aber weniger.
Also sind es 5 Zahlen, nicht 2,000,000,000 Zahlen.
Schreiben und Lesen sollte in den Beispielen der Lib zu finden sein.
Gruß Tommy
lukcraft:
Die zahlen sollten alle nicht über 2 Milliarden gehen nicht mehr aber weniger.
Also sind es 5 Zahlen, nicht 2,000,000,000 Zahlen.
Schreiben und Lesen sollte in den Beispielen der Lib zu finden sein.
Gruß Tommy
@Tommy ups ja genau 5 zahlen
5 verschiedene Zahlen
Alle diese Zahlen beinhalten bis zu
2.000.000.000
STELLEN also zum Beispiel:
Wert 1 = 45.780
Wert 2 = 199.999.000
Wert 3 = 12
Wert 4 = 300
Wert 5 = 2.000.000.000
Jeder Wert bekommt eine eigene Webseite über die dieser Wert verändert werden kann.
Website 1: mit dieser kann Wert 1 bearbeitet werden
Website 2
usw....
Und da ich noch ein totaler Anfänger bin (Javascript usw...) habe ich mich an euch gewandt.
lukcraft:
Ich weis nicht wie das in diesem Forum gehandhabt wird von mir aus kann man die Narichten löschen der übersichts Willen ...
Ist hier nicht vorgesehen, dadurch kann man den Fortgang auch besser nachvollziehen.
lukcraft:
2. Und vorallen Wie die Daten/Zahlen auf einer Website ausgegeben und verändert werden können.
Die Beispiele bme280 und onboardled von Fips zeigen, wie das geht. Die html-Datei fordert über ein Formular ein Datenpaket im JSON-Format an und verändert dann die Anzeige im Browser.
Hallo
Der spi fram ist jetzt endlich gekommen.
Ich habe mich schon mit ihm beschäftigt, komme aber nicht wirklich weiter (ich kann nichts mit den Beispielen von der Bibliothek anfangen.
Lg Lukcraft
Das Beispiel ist für einen Arduino UNO. Du musst die Pins entsprechend anpassen.
Du brauchst auch die "Adafruit BusIO"-Lib dazu.
Beide Libs haben architectures=*. Ob sie aber auf dem ESP laufen, weiß ich nicht.
Gruß Tommy
Also die Beispiele habe ich zum laufen bekommen.
Gibt es andere Libraries die für den esp32 sind ? Ich habe keine gefunden oder nach etwas falschem gesucht.
Lg Lukcraft
Na, wenn Du die Beispiele auf dem ESP zum Laufen bekommen hast, ist ja alles bestens.
Du brauchs die Methoden write und read (nicht die write8 und read8)
Pseudocode:
fram.write(Adresse,variable,sizeof(variable));
fram.read(Adresse,&variable,sizeof(variable));
Die Adressen sollten genügend Abstand haben, damit Deine Variablen rein passen. Lass Dir zur Sicherheit vor dem Schreiben einfach mal sizeof(variable) ausgeben.
Gruß Tommy
lukcraft:
Gibt es andere Libraries die für den esp32 sind ?
Auch für ESP32 mit spannenden Fußnoten: GitHub - Marzogh/SPIMemory: Arduino library for Flash Memory Chips (SPI based only). Formerly SPIFlash
So ich habe jetzt schon einiges ausprobiert und bleibe jetzt an etwas hängen von dem ich denke das führt zur lösung ![]()
Ich würde es gerne so machen das wen man den geldwert verändert (mit einem knopf den man drückt) das nicht gleich die ganze Seite neu geladen wird.
Das ganze funktioniert auch teilweise nämlich die Webseite mit den Knöpfen wird angezeigt aber es kommt nichts am esp32 an.
Ich habe mal den wichtigen teil von der Arduino IDE hier (es wird kein fehler angezeigt)
uint16_t geld = fram.read8(0x40);
void setupgeld() {
if (fram.begin()) {
Serial.println("Found SPI FRAM");
} else {
Serial.println("No SPI FRAM found ... check your connections\r\n");
while (1);
}
// Button Namen senden falls diese nicht im LocalStorage des Browsers gefunden werden
server.on("/pressplus", HTTP_POST, []() {
if (server.args()) {
// fram plus 1
uint16_t geld = fram.read8(0x40);
fram.writeEnable(true);
fram.write8(0x40,geld+1);
fram.writeEnable(false);
// Serielle Ausgabe zur Kontrolle
Serial.print("Du hast "); Serial.print(geld); Serial.println(" Euro");
}
});
server.on("/pressminus", HTTP_POST, []() {
if (server.args()) {
// fram minus 1
uint16_t geld = fram.read8(0x40);
fram.writeEnable(true);
fram.write8(0x40,geld-1);
fram.writeEnable(false);
// Serielle Ausgabe zur Kontrolle
Serial.print("Du hast "); Serial.print(geld); Serial.println(" Euro");
}
});
}
und hier die html die im spiffs hochgeladen wird. (Ich benutze die tabs von Fips und versuche auch dieses Projekt dort zu intigrieren)
<!DOCTYPE HTML>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="style32.css">
<title>Geldsteuerung</title>
<script>
function sendplus(arg) {
fetch('/pressplus', {
method: 'post',
body: arg
}).then(resp => {
return resp.json();
}).then(str => {
if (str.length != btnName.length) localStorage.clear();
document.querySelectorAll('button').forEach((el, i) => {
el.style.minWidth = 0.8 * length + 'em';
el.style.backgroundColor = str[i] != 0 ? '#3f0' : '#6c5';
el.lastElementChild.innerHTML = str[i] != 0 ? ' AN' : ' AUS';
});
});
}
function sendminus(arg) {
fetch('/pressminus', {
method: 'post',
body: arg
}).then(resp => {
return resp.json();
}).then(str => {
if (str.length != btnName.length) localStorage.clear();
document.querySelectorAll('button').forEach((el, i) => {
el.style.minWidth = 0.8 * length + 'em';
el.style.backgroundColor = str[i] != 0 ? '#3f0' : '#6c5';
el.lastElementChild.innerHTML = str[i] != 0 ? ' AN' : ' AUS';
});
});
}
document.getElementById("plus").addEventListener('DOMContentLoaded1', () => {sendplus();});
document.getElementById("minus").addEventListener('DOMContentLoaded2', () => {sendminus();});
</script>
</head>
<body>
<h1>Geldsteuerung</h1>
<p><button id="plus">plus1</button></p>
<p><button id="minus">minus1</button></p>
</body>
</html>
Ich hoffe ihr könnt was damit anfangen ![]()
lukcraft:
Das ganze funktioniert auch teilweise nämlich die Webseite mit den Knöpfen wird angezeigt aber es kommt nichts am esp32 an.
Kann auch nicht, es wird nichts gesendet.
Öffne die Konsole im Browser, dann wird dir ein Fehler angezeigt.
Ansonsten, sendet dein Webserver keine Antwort an den Browser und diese versuchts du mittels Javascript auszuwerten.
Gruß Fips
Ich habe jetzt alles denkbare ausprobiert unter anderem versucht das die Antwort gesendet wird (verstehe aber nicht ganz was da gesendet wird und wie) und komme jetzt wirklich nicht weiter.
Ich brauche irgendwelche nützlich Beispiele finde aber keine die mir bei der Sache weiter helfen.
Ich würde mich wirklich freuen wenn mir jemand erklären könnte wie das ganze gesendet und ausgelesen wird ![]()
Hier nochmal mein jetzigen Code der nicht wirklich funktioniert:
der in der Arduino IDE als Tab in dem Grundgerüst von Fips
ich habe den Admintab von Fips umgebaut:
#include <SPI.h>
#include "Adafruit_FRAM_SPI.h"
uint8_t FRAM_CS = 14;
//Adafruit_FRAM_SPI fram = Adafruit_FRAM_SPI(FRAM_CS); // use hardware SPI
uint8_t FRAM_SCK= 13;
uint8_t FRAM_MISO = 12;
uint8_t FRAM_MOSI = 27;
//Or use software SPI, any pins!
Adafruit_FRAM_SPI fram = Adafruit_FRAM_SPI(FRAM_SCK, FRAM_MISO, FRAM_MOSI, FRAM_CS);
uint16_t addr = 0;
uint16_t geld= fram.read8(0x40);
void geld() { // Funktionsaufruf "admin();" muss im Setup eingebunden werden
if (fram.begin()) {
Serial.println("Found SPI FRAM");
} else {
Serial.println("No SPI FRAM found ... check your connections\r\n");
while (1);
}
server.on("/geld/renew", handlerenewgeld);
server.on("/geld/once", handleoncegeld);
}
void handlerenewgeld() {
server.send(200, "application/json"); // Json als Array
}
void handleoncegeld() {
if (server.arg(0) != "") {
uint16_t geldneu= (server.arg(0).c_str();
fram.writeEnable(true);
fram.write8(0x40,geld+geldneu);
fram.writeEnable(false);
//serielle Ausgabe
uint16_t geld= fram.read8(0x40);
Serial.print("Du hast "); Serial.print(geld); Serial.println(" Euro");
}
String fname = String(__FILE__).substring( 3, String(__FILE__).lastIndexOf ('\\'));
String temp = R"({"Kontostand":")" + fram.read8(0x40) + R"("})";
server.send(200, "application/json", temp); // Json als Objekt
}
und die HTML im SPIFFS umgebaut von Fip´s Admin Webseite:
<!DOCTYPE HTML> <!-- For more information visit: https://fipsok.de -->
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style32.css">
<title>ESP32 Admin</title>
<SCRIPT>
window.addEventListener('load', () => {
document.querySelector('#hostbutton').addEventListener('click', check.bind(this, document.querySelector('input')));
once();
var output = document.querySelector('#note');
function once(arg1, arg2) {
fetch('/admin/once', {
method: 'POST',
body: arg1
}).then( resp => {
return resp.json();
}).then( obj => {
output.innerHTML = '';
output.classList.remove('note');
document.querySelector('form').reset();
if (arg1 == undefined) wait = window.setInterval(renew, 1000);
if (arg2 == 'reconnect') re(arg2);
document.querySelector('#host').innerHTML = obj['Kontostand'];
}).catch(function (err) {
re();
});
}
function renew() {
fetch('admin/renew').then( resp => {
return resp.json();
});
}
function check(inObj) {
!inObj.checkValidity() ? (output.innerHTML = inObj.validationMessage, output.classList.add('note')) : (once(inObj.value, 'reconnect'));
}
function re(arg) {
window.clearInterval(wait);
fetch(arg);
output.classList.add('note');
if (arg == 'restart') {
output.innerHTML = 'Der Server wird neu gestartet. Die Daten werden in 10 Sekunden neu geladen.';
setTimeout(once, 10000);
} else if (arg == 'reconnect') {
output.innerHTML = 'Zum Konto hinzugefügt';
setTimeout(once, 900);
} else {
output.innerHTML = 'Es ist ein Verbindungfehler aufgetreten. Es wird versucht neu zu verbinden.';
setTimeout(once, 2000);
}
}
});
</SCRIPT>
</head>
<body>
<h1>ESP32 Admin Page</h1>
<main>
<section id="left">
<span>Kontostand:</span>
</section>
<section>
<data id="host">?</data>
</section>
</main>
<div id="note"></div>
<div>
<form><input placeholder=" neuer Hostname" pattern="([A-Za-z0-9-]{1,32})" title="Hier Geldbertrag eintragen" required>
<button class="button" type="button" id="hostbutton">Betrag Senden</button>
</form>
</div>
</body>
</html>
Dein Javascript sendet an '/admin/once' und im Sketch hoffst du das es bei "/geld/once" ankommt.
Vielleicht solltest du es lieber ohne Javascript, mit einen einfachen Html Formular umsetzen.
Ansonsten, wirf mal einen Blick in die Anleitung von Rentner wie es mit Fetch funktioniert.
Gruß Fips
Vielen Dank für eure Hilfe jetzt hat ALLES geklappt! ;D
Jetzt wäre nur noch eine Sache ich kann jetzt nur Zahlen bis 255 eingeben,
durch z.B. fram.write8(0x40, wert2); gehen ja nicht mehr und ich bekomme es nicht anders hin
nur fram.write(0x40, wert2); ergibt eine fehlermeldung und fram.write(Adresse,variable,sizeof(variable));
weiß ich nicht wie ich das einsetzen soll. ![]()
#include <SPI.h>
#include "Adafruit_FRAM_SPI.h"
uint8_t FRAM_CS = 14;
//Adafruit_FRAM_SPI fram = Adafruit_FRAM_SPI(FRAM_CS); // use hardware SPI
uint8_t FRAM_SCK= 13;
uint8_t FRAM_MISO = 12;
uint8_t FRAM_MOSI = 27;
//Or use software SPI, any pins!
Adafruit_FRAM_SPI fram = Adafruit_FRAM_SPI(FRAM_SCK, FRAM_MISO, FRAM_MOSI, FRAM_CS);
float wert1;
float wert2;
void geld() { // Funktionsaufruf "geld();" muss im Setup eingebunden werden
if (fram.begin()) {
Serial.println("Found SPI FRAM");
} else {
Serial.println("No SPI FRAM found ... check your connections\r\n");
while (1);
}
fram.writeEnable(true);
//fram.write8(0x40,geld-400);
wert1 = fram.read8(0x40);
fram.writeEnable(false);
}
void Datenzeigen() {
String message = "Daten angekommen\n";
message += "URI: ";
message += server.uri();
message += "\nMethod: ";
message += (server.method() == HTTP_GET) ? "GET" : "POST";
message += "\nArguments: ";
message += server.args();
message += "\n";
for (uint8_t i = 0; i < server.args(); i++) {
message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
}
Serial.println(message);
}
void sendeDaten() {
char sendbuffer[50];
// JSON String als Array anlegen ["20.0","572.6","24.0"]
sprintf(sendbuffer, "[\"%4.1f\"]", wert1);
server.send(200, "application/json", sendbuffer);
Serial.println(sendbuffer);
Serial.println(strlen(sendbuffer));
}
void getSollw() {
Datenzeigen();
wert2 = StringToFloat(server.arg(0));
delay(10);
fram.writeEnable(true);
fram.write8(0x40, wert2);
Serial.println("neue Sollwerte");
Serial.printf("%4.1f \n", fram.read8(0x40));
fram.writeEnable(false);
delay(10);
fram.writeEnable(true);
//fram.write8(0x40,geld-400);
wert1 = fram.read8(0x40);
fram.writeEnable(false);
sendeDaten(); // response senden.
}
void getSollw2() {
}
// ----- String to float mit Komma tausch -----------
float StringToFloat(String t) {
t.replace(",", ".");
return t.toFloat();
}
lukcraft:
fram.write(Adresse,variable,sizeof(variable));
weiß ich nicht wie ich das einsetzen soll.
So wie es da steht:
int wert2 =12345;
...
fram.write(0x40,wert2,sizeof(wert2));
...
fram.read(0x40,&wert2,sizeof(wert2));
Gruß Tommy
Ich habe das jetzt eingesetzt und es kommt die Fehlermeldung
C:\Users\heiko\Documents\Arduino\Webserver\Geld.ino: In function 'void geld()':
Geld:30:50: error: no matching function for call to 'Adafruit_FRAM_SPI::read(int, int*, unsigned int)'
wert1 = fram.read(0x40,&wert2,sizeof(wert2));
^
In file included from C:\Users\heiko\Documents\Arduino\Webserver\Geld.ino:3:0:
C:\Users\heiko\Documents\Arduino\libraries\Adafruit_FRAM_SPI/Adafruit_FRAM_SPI.h:54:10: note: candidate: void Adafruit_FRAM_SPI::read(uint32_t, uint8_t*, size_t)
void read(uint32_t addr, uint8_t *values, size_t count);
^
C:\Users\heiko\Documents\Arduino\libraries\Adafruit_FRAM_SPI/Adafruit_FRAM_SPI.h:54:10: note: no known conversion for argument 2 from 'int*' to 'uint8_t* {aka unsigned char*}'
C:\Users\heiko\Documents\Arduino\Webserver\Geld.ino: In function 'void getSollw()':
Geld:64:40: error: invalid conversion from 'int' to 'uint8_t* {aka unsigned char*}' [-fpermissive]
fram.write(0x40,wert2,sizeof(wert2));
^
In file included from C:\Users\heiko\Documents\Arduino\Webserver\Geld.ino:3:0:
C:\Users\heiko\Documents\Arduino\libraries\Adafruit_FRAM_SPI/Adafruit_FRAM_SPI.h:52:10: note: initializing argument 2 of 'void Adafruit_FRAM_SPI::write(uint32_t, uint8_t*, size_t)'
void write(uint32_t addr, uint8_t *values, size_t count);
^
Geld:67:64: error: no matching function for call to 'Adafruit_FRAM_SPI::read(int, int*, unsigned int)'
Serial.printf("%4.1f \n", fram.read(0x40,&wert2,sizeof(wert2));
^
In file included from C:\Users\heiko\Documents\Arduino\Webserver\Geld.ino:3:0:
C:\Users\heiko\Documents\Arduino\libraries\Adafruit_FRAM_SPI/Adafruit_FRAM_SPI.h:54:10: note: candidate: void Adafruit_FRAM_SPI::read(uint32_t, uint8_t*, size_t)
void read(uint32_t addr, uint8_t *values, size_t count);
^
C:\Users\heiko\Documents\Arduino\libraries\Adafruit_FRAM_SPI/Adafruit_FRAM_SPI.h:54:10: note: no known conversion for argument 2 from 'int*' to 'uint8_t* {aka unsigned char*}'
Geld:72:50: error: no matching function for call to 'Adafruit_FRAM_SPI::read(int, int*, unsigned int)'
wert1 = fram.read(0x40,&wert2,sizeof(wert2));
^
In file included from C:\Users\heiko\Documents\Arduino\Webserver\Geld.ino:3:0:
C:\Users\heiko\Documents\Arduino\libraries\Adafruit_FRAM_SPI/Adafruit_FRAM_SPI.h:54:10: note: candidate: void Adafruit_FRAM_SPI::read(uint32_t, uint8_t*, size_t)
void read(uint32_t addr, uint8_t *values, size_t count);
^
C:\Users\heiko\Documents\Arduino\libraries\Adafruit_FRAM_SPI/Adafruit_FRAM_SPI.h:54:10: note: no known conversion for argument 2 from 'int*' to 'uint8_t* {aka unsigned char*}'
Mehrere Bibliotheken wurden für "Adafruit_FRAM_SPI.h" gefunden
Benutzt: C:\Users\heiko\Documents\Arduino\libraries\Adafruit_FRAM_SPI
Nicht benutzt: C:\Users\heiko\Documents\Arduino\libraries\Adafruit_FRAM_SPI-master
Mehrere Bibliotheken wurden für "WebServer.h" gefunden
Benutzt: C:\Users\heiko\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\WebServer
Nicht benutzt: C:\Users\heiko\Documents\Arduino\libraries\WebServer_tng-master
Mehrere Bibliotheken wurden für "WiFi.h" gefunden
Benutzt: C:\Users\heiko\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\WiFi
Nicht benutzt: C:\Program Files (x86)\Arduino\libraries\WiFi
Mehrere Bibliotheken wurden für "SPIFFS.h" gefunden
Benutzt: C:\Users\heiko\Documents\Arduino\libraries\SPIFFS
Nicht benutzt: C:\Users\heiko\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\SPIFFS
exit status 1
no matching function for call to 'Adafruit_FRAM_SPI::read(int, int*, unsigned int)'
Dann musst Du casten:
fram.write(0x40,(uint8_t *)&wert2,sizeof(wert2));
...
fram.read(0x40,(uint8_t *)&wert2,sizeof(wert2));
Gruß Tommy
Edit: cast geändert
@Tommy56 Danke für deine superschnellen antworten ![]()
es kommt aber leider immer noch eine Fehlermeldung
mir der ich überhaupt nichts anfangen kann
C:\Users\heiko\Documents\Arduino\Webserver\Geld.ino: In function 'void geld()':
Geld:29:39: error: expected primary-expression before ')' token
wert1 = fram.read(0x40,(*uint8_t)&wert2,sizeof(wert2));
^
C:\Users\heiko\Documents\Arduino\Webserver\Geld.ino: In function 'void getSollw()':
Geld:63:30: error: expected primary-expression before ')' token
fram.write(0x40,(*uint8_t)&wert2,sizeof(wert2));
^
Geld:66:53: error: expected primary-expression before ')' token
Serial.printf("%4.1f \n", fram.read(0x40,(*uint8_t)&wert2,sizeof(wert2)));
^
Geld:71:39: error: expected primary-expression before ')' token
wert1 = fram.read(0x40,(*uint8_t)&wert2,sizeof(wert2);
^
Geld:71:60: error: expected ')' before ';' token
wert1 = fram.read(0x40,(*uint8_t)&wert2,sizeof(wert2);
^
Mehrere Bibliotheken wurden für "WiFi.h" gefunden
Benutzt: C:\Users\heiko\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\WiFi
Nicht benutzt: C:\Program Files (x86)\Arduino\libraries\WiFi
Mehrere Bibliotheken wurden für "SPIFFS.h" gefunden
Benutzt: C:\Users\heiko\Documents\Arduino\libraries\SPIFFS
Nicht benutzt: C:\Users\heiko\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\SPIFFS
Mehrere Bibliotheken wurden für "Adafruit_FRAM_SPI.h" gefunden
Benutzt: C:\Users\heiko\Documents\Arduino\libraries\Adafruit_FRAM_SPI
Nicht benutzt: C:\Users\heiko\Documents\Arduino\libraries\Adafruit_FRAM_SPI-master
Mehrere Bibliotheken wurden für "WebServer.h" gefunden
Benutzt: C:\Users\heiko\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\WebServer
Nicht benutzt: C:\Users\heiko\Documents\Arduino\libraries\WebServer_tng-master
exit status 1
expected primary-expression before ')' token
Das hatte ich noch korrigiert. Schau noch mal in mein Posting #35.
Gruß Tommy
Och ne sorry es geht immer noch nicht ![]()
#include <SPI.h>
#include "Adafruit_FRAM_SPI.h"
uint8_t FRAM_CS = 14;
//Adafruit_FRAM_SPI fram = Adafruit_FRAM_SPI(FRAM_CS); // use hardware SPI
uint8_t FRAM_SCK= 13;
uint8_t FRAM_MISO = 12;
uint8_t FRAM_MOSI = 27;
//Or use software SPI, any pins!
Adafruit_FRAM_SPI fram = Adafruit_FRAM_SPI(FRAM_SCK, FRAM_MISO, FRAM_MOSI, FRAM_CS);
float wert1;
int wert2 =12345;
void geld() { // Funktionsaufruf "geld();" muss im Setup eingebunden werden
if (fram.begin()) {
Serial.println("Found SPI FRAM");
} else {
Serial.println("No SPI FRAM found ... check your connections\r\n");
while (1);
}
fram.writeEnable(true);
//fram.write8(0x40,geld-400);
wert1 = fram.read(0x40,(uint8_t *)&wert2,sizeof(wert2));
fram.writeEnable(false);
}
void Datenzeigen() {
String message = "Daten angekommen\n";
message += "URI: ";
message += server.uri();
message += "\nMethod: ";
message += (server.method() == HTTP_GET) ? "GET" : "POST";
message += "\nArguments: ";
message += server.args();
message += "\n";
for (uint8_t i = 0; i < server.args(); i++) {
message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
}
Serial.println(message);
}
void sendeDaten() {
char sendbuffer[50];
// JSON String als Array anlegen ["20.0","572.6","24.0"]
sprintf(sendbuffer, "[\"%4.1f\"]", wert1);
server.send(200, "application/json", sendbuffer);
Serial.println(sendbuffer);
Serial.println(strlen(sendbuffer));
}
void getSollw() {
Datenzeigen();
wert2 = StringToFloat(server.arg(0));
delay(10);
fram.writeEnable(true);
fram.write(0x40,(uint8_t *)&wert2,sizeof(wert2));
Serial.println("neue Sollwerte");
Serial.printf("%4.1f \n", fram.read(0x40,(uint8_t *)&wert2,sizeof(wert2)));
fram.writeEnable(false);
delay(10);
fram.writeEnable(true);
//fram.write8(0x40,geld-400);
fram.read(0x40,(uint8_t *)&wert2,sizeof(wert2));
fram.writeEnable(false);
sendeDaten(); // response senden.
}
void getSollw2() {
}
// ----- String to float mit Komma tausch -----------
float StringToFloat(String t) {
t.replace(",", ".");
return t.toFloat();
}
mit der Fehlermeldung:
C:\Users\heiko\Documents\Arduino\Webserver\Geld.ino: In function 'void geld()':
Geld:30:13: error: void value not ignored as it ought to be
wert1 = fram.read(0x40,(uint8_t *)&wert2,sizeof(wert2));
^
C:\Users\heiko\Documents\Arduino\Webserver\Geld.ino: In function 'void getSollw()':
Geld:67:76: error: invalid use of void expression
Serial.printf("%4.1f \n", fram.read(0x40,(uint8_t *)&wert2,sizeof(wert2)));
^
Mehrere Bibliotheken wurden für "WiFi.h" gefunden
Benutzt: C:\Users\heiko\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\WiFi
Nicht benutzt: C:\Program Files (x86)\Arduino\libraries\WiFi
Mehrere Bibliotheken wurden für "SPIFFS.h" gefunden
Benutzt: C:\Users\heiko\Documents\Arduino\libraries\SPIFFS
Nicht benutzt: C:\Users\heiko\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\SPIFFS
Mehrere Bibliotheken wurden für "Adafruit_FRAM_SPI.h" gefunden
Benutzt: C:\Users\heiko\Documents\Arduino\libraries\Adafruit_FRAM_SPI
Nicht benutzt: C:\Users\heiko\Documents\Arduino\libraries\Adafruit_FRAM_SPI-master
Mehrere Bibliotheken wurden für "WebServer.h" gefunden
Benutzt: C:\Users\heiko\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\WebServer
Nicht benutzt: C:\Users\heiko\Documents\Arduino\libraries\WebServer_tng-master
exit status 1
void value not ignored as it ought to be
Ich habe keine SPI-FRAM, nur I2C. Deshalb kann ich nur blind schreiben. Das, was Du schreibst, kommt aber nicht von mir.
fram.read(0x40,(uint8_t *)&wert1,sizeof(wert1));
Gruß Tommy