first commit

This commit is contained in:
Jérôme Delacotte
2025-03-06 11:15:32 +01:00
commit 7b30d6e298
5276 changed files with 2108927 additions and 0 deletions

206
EEPROM_TEST/EEPROM_TEST.ino Executable file
View File

@@ -0,0 +1,206 @@
#include <ESP8266WiFi.h>
#include <Wire.h>
#include "/home/souti/Arduino/EEPROM_TEST/eeprom.h"
// IMPORTANT !!!!!!!!!!!!!!!!!!!!!!!!!!
// finir toutes les lignes par \n
// finir la page par \r
#define START_ADDRESS 831//memory address of the 1st stored byte
long sum; //the sum of read values, updated in loop
//--------------------------------------------------------------
void setup(){
Serial.begin(9600);
Wire.begin();
int addr = START_ADDRESS;
addr = page(addr);
Serial.println("Page 1 fin" + addr);
addr = page2(addr);
Serial.println("Page 2 fin" + addr);
}
//--------------------------------------------------------------
void loop(){
delay(3000);
// désactivation plantage traitement trop long
wdt_disable();
int addr = START_ADDRESS; //this will increment after each read
char readChar;
String numero2 ="";
for (int ii = 0; /*ii < 500*/; ii++) {
addr += readObjectSimple(0x50, addr, readChar);
if (readChar == 10) {
Serial.println(numero2);
numero2="";
}else {
numero2+=readChar; //numero[ii];
if (readChar == 13 || ii > 5000) {
break;
}
}
}
// Réactivation
wdt_enable(3000);
}
int writeString(int addr, String s) {
for (int ii = 0; ii < s.length(); ii++) {
addr += writeObjectSimple(0x50, addr,s.charAt(ii)); //caractere[ii]);
Serial.print(s.charAt(ii));
}
return addr;
}
int page(int addr) {
addr = writeString(addr, "<html>\n");
addr = style(addr);
addr = body(addr);
addr = writeString(addr, "</html>\n\r");
return addr;
}
int page2(int addr) {
addr = writeString(addr, "<html>\n");
addr = style(addr);
addr = body2(addr);
addr = writeString(addr, "</html>\n\r");
return addr;
}
int body(int addr) {
addr = writeString(addr, "<body>\n");
addr = writeString(addr, "<form action='/ident' method='get'>\n");
addr = writeString(addr, "<script type='text/javascript'>\nfunction showValue(newValue)\n{\ndocument.getElementById('text').innerHTML=newValue;\n}\n</script>\n");
addr = writeString(addr, "<div>\n");
addr = writeString(addr, "<label for='name'>SSID:</label>\n");
addr = writeString(addr, "<input type='text' id='name' name='name' />\n");
addr = writeString(addr, "</div>\n");
addr = writeString(addr, "<div>\n");
addr = writeString(addr, " <label for='pass'>Password:</label>\n");
addr = writeString(addr, " <input type='password' id='pass' name='pass' />\n");
addr = writeString(addr, "</div>\n");
addr = writeString(addr, "<div>\n");
addr = writeString(addr, " <label for='domo'>Domoticz:</label>\n");
addr = writeString(addr, " <input type='text' id='domo' name='domo' />\n");
addr = writeString(addr, " <label for='port'>Port:</label>\n");
addr = writeString(addr, " <input type='text' id='port' name='port' />\n");
addr = writeString(addr, "</div>\n");
addr = writeString(addr, "<div>\n");
addr = writeString(addr, " <label for='radi'>Id Radiateur:</label>\n");
addr = writeString(addr, " <input type='radi' id='radi' name='radi' />\n");
addr = writeString(addr, "</div>\n");
addr = writeString(addr, "<div class='button'>\n");
addr = writeString(addr, " <button name=H type='submit'>Ok</button>\n");
addr = writeString(addr, "</div>\n");
addr = writeString(addr, "</form>\n");
addr = writeString(addr, "</body>\n");
return addr;
}
int body2(int addr) {
addr = writeString(addr, "<body>\n");
addr = writeString(addr, "<form action='/param' method='get'>\n");
addr = writeString(addr, "<script type='text/javascript'>\nfunction showValue(newValue)\n{\ndocument.getElementById('text').innerHTML=newValue;\n}\n</script>\n");
addr = writeString(addr, "<div>\n");
addr = writeString(addr, "<label for='name'>ID Radiateur:</label>\n");
addr = writeString(addr, "<input type='text' id='name' name='name' />\n");
addr = writeString(addr, "</div>\n");
addr = writeString(addr, "<div>\n");
addr = writeString(addr, " <label for='pass'>Password:</label>\n");
addr = writeString(addr, " <input type='password' id='pass' name='pass' />\n");
addr = writeString(addr, "</div>\n");
addr = writeString(addr, "<div>\n");
addr = writeString(addr, " <label for='domo'>Domoticz:</label>\n");
addr = writeString(addr, " <input type='text' id='domo' name='domo' />\n");
addr = writeString(addr, " <label for='port'>Port:</label>\n");
addr = writeString(addr, " <input type='text' id='port' name='port' />\n");
addr = writeString(addr, "</div>\n");
addr = writeString(addr, "<div class='button'>\n");
addr = writeString(addr, " <button name=H type='submit'>Ok</button>\n");
addr = writeString(addr, "</div>\n");
addr = writeString(addr, "</form>\n");
addr = writeString(addr, "</body>\n");
return addr;
}
int style(int addr) {
addr = writeString(addr, "<style>\n");
addr = writeString(addr, "form {\n");
addr = writeString(addr, " /* Just to center the form on the page */\n");
addr = writeString(addr, " margin: 0 auto;\n");
addr = writeString(addr, " width: 400px;\n");
addr = writeString(addr, "\n");
addr = writeString(addr, " /* To see the limits of the form */\n");
addr = writeString(addr, " padding: 1em;\n");
addr = writeString(addr, " border: 1px solid #CCC;\n");
addr = writeString(addr, " border-radius: 1em;\n");
addr = writeString(addr, "}\n");
addr = writeString(addr, "\n");
addr = writeString(addr, "div + div {\n");
addr = writeString(addr, " margin-top: 1em;\n");
addr = writeString(addr, "}\n");
addr = writeString(addr, "\n");
addr = writeString(addr, "label {\n");
addr = writeString(addr, " /* To make sure that all label have the same size and are properly align */\n");
addr = writeString(addr, " display: inline-block;\n");
addr = writeString(addr, " width: 90px;\n");
addr = writeString(addr, " text-align: right;\n");
addr = writeString(addr, "}\n");
addr = writeString(addr, "\n");
addr = writeString(addr, "input, textarea {\n");
addr = writeString(addr, " /* To make sure that all text field have the same font settings\n");
addr = writeString(addr, " By default, textarea are set with a monospace font */\n");
addr = writeString(addr, " font: 1em sans-serif;\n");
addr = writeString(addr, "\n");
addr = writeString(addr, " /* To give the same size to all text field */\n");
addr = writeString(addr, " width: 300px;\n");
addr = writeString(addr, "\n");
addr = writeString(addr, " -moz-box-sizing: border-box;\n");
addr = writeString(addr, " box-sizing: border-box;\n");
addr = writeString(addr, "\n");
addr = writeString(addr, " /* To harmonize the look & feel of text field border */\n");
addr = writeString(addr, " border: 1px solid #999;\n");
addr = writeString(addr, "}\n");
addr = writeString(addr, "\n");
addr = writeString(addr, "input:focus, textarea:focus {\n");
addr = writeString(addr, " /* To give a little highligh on active elements */\n");
addr = writeString(addr, " border-color: #000;\n");
addr = writeString(addr, "}\n");
addr = writeString(addr, "\n");
addr = writeString(addr, "textarea {\n");
addr = writeString(addr, " /* To properly align multiline text field with their label */\n");
addr = writeString(addr, " vertical-align: top;\n");
addr = writeString(addr, "\n");
addr = writeString(addr, " /* To give enough room to type some text */\n");
addr = writeString(addr, " height: 5em;\n");
addr = writeString(addr, "\n");
addr = writeString(addr, " /* To allow users to resize any textarea vertically\n");
addr = writeString(addr, " It works only on Chrome, Firefox and Safari */\n");
addr = writeString(addr, " resize: vertical;\n");
addr = writeString(addr, "}\n");
addr = writeString(addr, "\n");
addr = writeString(addr, ".button {\n");
addr = writeString(addr, " /* To position the buttons to the same position of the text fields */\n");
addr = writeString(addr, " padding-left: 90px; /* same size as the label elements */\n");
addr = writeString(addr, "}\n");
addr = writeString(addr, "\n");
addr = writeString(addr, "button {\n");
addr = writeString(addr, " /* This extra magin represent the same space as the space between\n");
addr = writeString(addr, " the labels and their text fields */\n");
addr = writeString(addr, " margin-left: .5em;\n");
addr = writeString(addr, "}\n");
addr = writeString(addr, "</style>\n");
return addr;
}

50
EEPROM_TEST/eeprom.h Executable file
View File

@@ -0,0 +1,50 @@
#ifndef EEPROM_ROUTINES
#define EEPROM_ROUTINES
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif
#include <Wire.h>
template <class T>
uint16_t writeObjectSimple(uint8_t i2cAddr, uint16_t addr, const T& value){
const uint8_t* p = (const uint8_t*)(const void*)&value;
uint16_t i;
for (i = 0; i < sizeof(value); i++){
Wire.beginTransmission(i2cAddr);
Wire.write((uint16_t)(addr >> 8)); // MSB
Wire.write((uint16_t)(addr & 0xFF));// LSB
Wire.write(*p++);
Wire.endTransmission();
addr++;
delay(5); //max time for writing in 24LC256
}
return i;
}
template <class T>
uint16_t readObjectSimple(uint8_t i2cAddr, uint16_t addr, T& value){
uint8_t* p = (uint8_t*)(void*)&value;
uint8_t objSize = sizeof(value);
uint16_t i;
for (i = 0; i < objSize; i++){
Wire.beginTransmission (i2cAddr);
Wire.write((uint16_t)(addr >> 8)); // MSB
Wire.write((uint16_t)(addr & 0xFF));// LSB
Wire.endTransmission();
Wire.requestFrom(i2cAddr, (uint8_t)1);
if(Wire.available()){
*p++ = Wire.read();
}
addr++;
}
return i;
}
#endif