Hallo erstmal.....,
sitz gerad an einem Projekt um Cocktails zu mixen und benötige am ESP32Wroom32E die Pin´s 21 und 22. daher soll I²C auf 14 15 umziehen. Das ist Fehler 1.
Das 2. Problem ist das vom MCP23017 nur GPIO A ansteuern lässt nicht B.
#include <BluetoothSerial.h>
#include <Wire.h>
#include <Adafruit_MCP23X17.h>
BluetoothSerial SerialBT;
int CL_time = 500; // Delay für ein cl Dosierung
int Zutatenzahl_1 = 16; // Anzahl der verwendetet Zutaten für Inkrementenzähler
int Zutatenzahl_2 = 16; // Anzahl der verwendetet Zutaten für Inkrementenzähler
int breaktime = 1000; // Pausenzeit zwischen den einzelnen Pumpenvorgängen
int state = 0;
#define I2C_SDA 14
#define I2C_SCL 15
TwoWire I2C = TwoWire(0);
Adafruit_MCP23X17 mcp0;
#define MCP23017_I2C_addr0 0x20 // A0=GND, A1=GND, A2=GND
//Deklarieren der MPC Ausgänge
int Kokossirup = 0;
int Kaluha = 1;
int Zuckersirup = 2;
int Malibu = 3;
int Limettensaft = 4;
int Campari = 5;
int Martini = 6;
int Soda = 7;
int Grenadine = 8;
int Apfelsaft = 9;
int Aperol = 10;
int Sahne = 11;
int Bananensaft = 12;
int Grapefruitsaft = 13;
int Mandelsirup = 14;
int Maracujasaft = 15;
// für den MCP musst du die Zutaten und Ausgänge hier deklarieren !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//Legt die Ausgangspins für die jeweilige Zutat fest
const int zutatenPins[32] = {
2, // Rum_braun
4, // Rum
12, // Tequila
13, // Vodka
16, // Gin
17, // Cachaca
18, // Bananenlikör
19, // Ananassaft
20, // Kirschsaft
21, // Cola
23, // Tonic_Water
25, // Orangensaft
26, // Cointreau
27, // Cranberry-Saft
32, // Zitronensaft
33, // Blue Curacao
Kokossirup,
Kaluha,
Zuckersirup,
Malibu,
Limettensaft,
Campari,
Martini,
Soda,
Grenadine,
Apfelsaft,
Aperol,
Sahne,
Bananensaft,
Grapefruitsaft,
Mandelsirup,
Maracujasaft, // Ab hier musst du mit namen arbeiten die du oben deklarierst!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
};
//-------------------------------------------Setup
void setup() {
Serial.begin(115200);
Serial.println(F("MCP23017 test"));
I2C.begin(I2C_SDA, I2C_SCL, 100000);
SerialBT.begin("ESP32test"); //Name des ESP32
Serial.println("Der ESP32 ist bereit. Verbinde dich nun über Bluetooth.");
if (!mcp0.begin_I2C(MCP23017_I2C_addr0)) {
Serial.println("ErrorMCP.");
while (1);
}
}
//-------------------------------------------Loop----------------------------------------------
void loop() {
if (SerialBT.available() > 0) {
state = SerialBT.read();
SerialBT.println(state);
}
if (state == 'A') {
Serial.println("Juhu");
// (1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6)
Cocktail(8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,8,1,5,9,1,3,8,1,5,1,8);}
}
//------------------------------------------- ENDE LOOP -------------------------------------
void Cocktail(int cl01, int cl02, int cl03, int cl04,
int cl05, int cl06, int cl07, int cl08,
int cl09, int cl10, int cl11, int cl12,
int cl13, int cl14, int cl15, int cl16,
int cl17, int cl18, int cl19, int cl20,
int cl21, int cl22, int cl23, int cl24,
int cl25, int cl26, int cl27, int cl28,
int cl29, int cl30, int cl31, int cl32) {
//Erstellt ein Array für die Dosierung, nur noch die Angabe in cl ist nötig
int clArray1[16] = {cl01, cl02, cl03, cl04, cl05, cl06, cl07, cl08, cl09, cl10, cl11, cl12, cl13, cl14, cl15, cl16};
int clArray2[16] = {cl17, cl18, cl19, cl20, cl21, cl22, cl23, cl24, cl25, cl26, cl27, cl28, cl29, cl30, cl31, cl32};
//Liest die einzelnen Stellen aus und befüllt dann entsprechend der Menge
for (int i = 0; i < Zutatenzahl_1; i++) {
if (clArray1[i] > 0) {
int pin = zutatenPins[i];
pinMode(pin, OUTPUT);
digitalWrite(pin,HIGH);
delay(clArray1[i]*CL_time);
digitalWrite(pin,LOW);
delay(breaktime);
}
}
for (int i = 0; i < Zutatenzahl_2; i++) {
if (clArray2[i] > 0) {
int pin = zutatenPins[i];
mcp0.pinMode(pin, OUTPUT);
mcp0.digitalWrite(pin,HIGH);
delay(clArray2[i]*CL_time);
mcp0.digitalWrite(pin,LOW);
delay(breaktime);
}
}
}

