PlatformIO Framework Arduino programmer. Must be expert for implementing ESP8575. Must can define inputs/outputs and their I2C addresses in Maschines/xxxxxx.h! Example: #define X_LIMIT_PIN PCF8575_ADR_0x20_NUM_13
Budget: $10 – $30 USD
DO NOT WRITE ME IF YOU HAVE NOT READ OR UNDERSTAND THE FOLLOW: I would be happy to find an experienced PlatformIO Framework Arduino programmer who can adapt the Github project https://github.com/bdring/Grbl_Esp32 as follows: 1.) Correct integration of the PCF8575 library by Renzo Mischianti: platfornio.ini: lib_deps = xreef/PCF8575 library @ ^2.0.0 "https://github.com/xreef/PCF8575_library?utm_source=platformio&utm_medium=piohome" 2.)8x ESP8575 with the addresses 0x20, 0x21.... must be able to be addressed. 3.)A pin on the ESP32 serves as an interrupt and triggers the reading of the PCF8575. 4.)The I2C bus (wire) should be able to be addressed with 400Hz Fast I2C bus. 3.)A pin on the ESP32 serves as an interrupt and triggers the readout of the PCF8575. 4.)The I2C bus (wire) should run at 400kHz fast I2C bus. 5.)The priority of real-time processing should be close to real time.
6.)For each of the 16 inputs/outputs the possibility to be assigned in the Maschines/xxxxxx.h must be given as usual in GRBL.
For example ( something like this ):
#define X_LIMIT_PIN PCF8575_ADR_0x20_NUM_13 #define SPINDLE_OUTPUT_PIN PCF8575_ADR_0x20_NUM_3 (if necessary with details of whether input or output) 7.)Summary of where, what and why was changed or added. 8.)Explanation of the correct definition / assignment of the inputs and outputs
Example how i used Input / output with platformio Framework Arduino:
platfornio.ini: lib_deps = xreef/PCF8575 library @ ^2.0.0
#include <Arduino.h>
#include <PCF8575.h>
// Set i2c address
PCF8575 pcf8575(0x20); //PCF_1
PCF8575 pcf8575_2(0x21); //PCF_2
#define ESP_INTERRUPTED_PIN 17 //ok
unsigned long timeElapsed; //ok
bool keyPressed = false; // PCF_int
void keyPressedOnPCF8575(){ //PCF_Interrupt
// Serial.println("keyPressedOnPCF8575");
keyPressed = true; //PCF_int
}
void setup()
{
Serial.begin(115200);
pinMode(ESP_INTERRUPTED_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(ESP_INTERRUPTED_PIN), keyPressedOnPCF8575, FALLING);
pcf8575.pinMode(P10, INPUT);
pcf8575_2.pinMode(P10, OUTPUT);
pcf8575.begin();
}
void loop()
{
if (keyPressed){
uint8_t val = pcf8575.digitalRead(P10);
if (val==HIGH) Serial.println("KEY PRESSED");
keyPressed= false;
}
pcf8575_2.digitalWrite(P10, HIGH);
delay(1000);
pcf8575_2.digitalWrite(P10, LOW);
delay(1000);
}
IF YOU WANT TO WRITE NOW BEGIN YOUR TEXT WITH: "HELLO GRBL"!
6.)For each of the 16 inputs/outputs the possibility to be assigned in the Maschines/xxxxxx.h must be given as usual in GRBL.
For example ( something like this ):
#define X_LIMIT_PIN PCF8575_ADR_0x20_NUM_13 #define SPINDLE_OUTPUT_PIN PCF8575_ADR_0x20_NUM_3 (if necessary with details of whether input or output) 7.)Summary of where, what and why was changed or added. 8.)Explanation of the correct definition / assignment of the inputs and outputs
Example how i used Input / output with platformio Framework Arduino:
platfornio.ini: lib_deps = xreef/PCF8575 library @ ^2.0.0
#include <Arduino.h>
#include <PCF8575.h>
// Set i2c address
PCF8575 pcf8575(0x20); //PCF_1
PCF8575 pcf8575_2(0x21); //PCF_2
#define ESP_INTERRUPTED_PIN 17 //ok
unsigned long timeElapsed; //ok
bool keyPressed = false; // PCF_int
void keyPressedOnPCF8575(){ //PCF_Interrupt
// Serial.println("keyPressedOnPCF8575");
keyPressed = true; //PCF_int
}
void setup()
{
Serial.begin(115200);
pinMode(ESP_INTERRUPTED_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(ESP_INTERRUPTED_PIN), keyPressedOnPCF8575, FALLING);
pcf8575.pinMode(P10, INPUT);
pcf8575_2.pinMode(P10, OUTPUT);
pcf8575.begin();
}
void loop()
{
if (keyPressed){
uint8_t val = pcf8575.digitalRead(P10);
if (val==HIGH) Serial.println("KEY PRESSED");
keyPressed= false;
}
pcf8575_2.digitalWrite(P10, HIGH);
delay(1000);
pcf8575_2.digitalWrite(P10, LOW);
delay(1000);
}
IF YOU WANT TO WRITE NOW BEGIN YOUR TEXT WITH: "HELLO GRBL"!