I have a problem with my code. Below is my main code and the other functions. However, I always get an error from every function.
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
#include "OLED.h";
#include "Multiplexer.h";
#include "RTC.h";
#include "SD.h";
const char* ssid = "Pochie_5G";
const char* password = "notchkalugo747@";
const char* host = "192.168.254.100";
const uint16_t port = 80;
void setup()
{
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println("Connecting");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());
multiplexer_init();
oled_init();
rtc_init();
sd_loop();
}
void loop()
{
if (WiFi.isConnected()) {
WIFI_connect();
}
multiplexer_loop();
oled_loop();
rtc_loop();
sd_loop();
}
void WIFI_connect() {
WiFi.mode(WIFI_OFF); //Prevents reconnection issue (taking too long to connect)
delay(1000);
WiFi.mode(WIFI_STA);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("Connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
#define S0 D0
#define S1 D1
#define S2 D2
#define S3 D3
#define SIG A0
int BT = 0;
void multiplexer_init()
{
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(SIG, INPUT);
Serial.begin(9600);
}
void multiplexer_loop()
{
switch (BT) {
case 1: {
int aboRes;
char *abo[] = {"A positive", "A negative", "B positive", "B negative", "AB positive", "AB negative", "O positive", "O negative"};
digitalWrite(S0, LOW);
digitalWrite(S1, LOW);
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
int sensor0 = analogRead(SIG);
float voltage0 = sensor0 * (5.0 / 1023.0);
Serial.println(voltage0);
delay(2000);
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
int sensor1 = analogRead(SIG);
float voltage1 = sensor1 * (5.0 / 1023.0);
Serial.println(voltage1);
delay(2000);
digitalWrite(S0, LOW);
digitalWrite(S1, HIGH);
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
int sensor2 = analogRead(SIG);
float voltage2 = sensor2 * (5.0 / 1023.0);
Serial.println(voltage2);
delay(2000);
digitalWrite(S0, HIGH);
digitalWrite(S1, HIGH);
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
int sensor3 = analogRead(SIG);
float voltage3 = sensor3 * (5.0 / 1023.0);
Serial.println(voltage3);
delay(2000);
digitalWrite(S0, LOW);
digitalWrite(S1, LOW);
digitalWrite(S2, HIGH);
digitalWrite(S3, LOW);
int sensor4 = analogRead(SIG);
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
digitalWrite(S2, HIGH);
digitalWrite(S3, LOW);
int sensor5 = analogRead(SIG);
digitalWrite(S0, LOW);
digitalWrite(S1, HIGH);
digitalWrite(S2, HIGH);
digitalWrite(S3, LOW);
int sensor6 = analogRead(SIG);
digitalWrite(S0, HIGH);
digitalWrite(S1, HIGH);
digitalWrite(S2, HIGH);
digitalWrite(S3, LOW);
int sensor7 = analogRead(SIG);
if (voltage0 > 3.0 && voltage1 < 3.0 && voltage2 > 3.0 && voltage3 > 3.0)
int aboRes = 1;
else if (voltage0 > 3.0 && voltage1 < 3.0 && voltage2 > 3.0 && voltage3 < 3.0)
int aboRes = 2;
else if (voltage0 < 3.0 && voltage1 > 3.0 && voltage2 > 3.0 && voltage3 > 3.0)
int aboRes = 3;
else if (voltage0 < 3.0 && voltage1 > 3.0 && voltage2 > 3.0 && voltage3 < 3.0)
int aboRes = 4;
else if (voltage0 > 3.0 && voltage1 > 3.0 && voltage2 > 3.0 && voltage3 > 3.0)
int aboRes = 5;
else if (voltage0 > 3.0 && voltage1 > 3.0 && voltage2 > 3.0 && voltage3 < 3.0)
int aboRes = 6;
else if (voltage0 < 3.0 && voltage1 < 3.0 && voltage2 < 3.0 && voltage3 > 3.0)
int aboRes = 7;
else if (voltage0 < 3.0 && voltage1 < 3.0 && voltage2 < 3.0 && voltage3 < 3.0)
int aboRes = 8;
Serial.print(abo[aboRes]);
} break;
case 2: {
int rhpRes;
char *rhp[] = {"CcEe", "CcE", "Cce", "CEe", "cEe", "CE", "Ce", "cE", "ce"};
digitalWrite(S0, LOW);
digitalWrite(S1, LOW);
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
int sensor0 = analogRead(SIG);
float voltage0 = sensor0 * (5.0 / 1023.0);
Serial.println(voltage0);
delay(2000);
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
int sensor1 = analogRead(SIG);
float voltage1 = sensor1 * (5.0 / 1023.0);
Serial.println(voltage1);
delay(2000);
digitalWrite(S0, LOW);
digitalWrite(S1, HIGH);
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
int sensor2 = analogRead(SIG);
float voltage2 = sensor2 * (5.0 / 1023.0);
Serial.println(voltage2);
delay(2000);
digitalWrite(S0, HIGH);
digitalWrite(S1, HIGH);
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
int sensor3 = analogRead(SIG);
float voltage3 = sensor3 * (5.0 / 1023.0);
Serial.println(voltage3);
delay(2000);
digitalWrite(S0, LOW);
digitalWrite(S1, LOW);
digitalWrite(S2, HIGH);
digitalWrite(S3, LOW);
int sensor4 = analogRead(SIG);
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
digitalWrite(S2, HIGH);
digitalWrite(S3, LOW);
int sensor5 = analogRead(SIG);
digitalWrite(S0, LOW);
digitalWrite(S1, HIGH);
digitalWrite(S2, HIGH);
digitalWrite(S3, LOW);
int sensor6 = analogRead(SIG);
digitalWrite(S0, HIGH);
digitalWrite(S1, HIGH);
digitalWrite(S2, HIGH);
digitalWrite(S3, LOW);
int sensor7 = analogRead(SIG);
if (voltage0 > 3.0 && voltage1 > 3.0 && voltage2 > 3.0 && voltage3 > 3.0)
int rhpRes = 1;
else if (voltage0 > 3.0 && voltage1 > 3.0 && voltage2 > 3.0 && voltage3 < 3.0)
int rhpRes = 2;
else if (voltage0 > 3.0 && voltage1 > 3.0 && voltage2 < 3.0 && voltage3 > 3.0)
int rhpRes = 3;
else if (voltage0 > 3.0 && voltage1 < 3.0 && voltage2 > 3.0 && voltage3 > 3.0)
int rhpRes = 4;
else if (voltage0 < 3.0 && voltage1 > 3.0 && voltage2 > 3.0 && voltage3 > 3.0)
int rhpRes = 5;
else if (voltage0 > 3.0 && voltage1 < 3.0 && voltage2 > 3.0 && voltage3 < 3.0)
int rhpRes = 6;
else if (voltage0 > 3.0 && voltage1 < 3.0 && voltage2 < 3.0 && voltage3 > 3.0)
int rhpRes = 7;
else if (voltage0 < 3.0 && voltage1 > 3.0 && voltage2 > 3.0 && voltage3 < 3.0)
int rhpRes = 8;
else if (voltage0 < 3.0 && voltage1 > 3.0 && voltage2 < 3.0 && voltage3 > 3.0)
int rhpRes = 9;
Serial.print(rhp[rhpRes]);
} break;
case 3: {
int reverseRes;
char *reverse[] = {"A", "B", "AB", "O"};
digitalWrite(S0, LOW);
digitalWrite(S1, LOW);
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
int sensor0 = analogRead(SIG);
float voltage0 = sensor0 * (5.0 / 1023.0);
Serial.println(voltage0);
delay(2000);
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
int sensor1 = analogRead(SIG);
float voltage1 = sensor1 * (5.0 / 1023.0);
Serial.println(voltage1);
delay(2000);
digitalWrite(S0, LOW);
digitalWrite(S1, HIGH);
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
int sensor2 = analogRead(SIG);
float voltage2 = sensor2 * (5.0 / 1023.0);
Serial.println(voltage2);
delay(2000);
digitalWrite(S0, LOW);
digitalWrite(S1, LOW);
digitalWrite(S2, HIGH);
digitalWrite(S3, LOW);
int sensor4 = analogRead(SIG);
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
digitalWrite(S2, HIGH);
digitalWrite(S3, LOW);
int sensor5 = analogRead(SIG);
digitalWrite(S0, LOW);
digitalWrite(S1, HIGH);
digitalWrite(S2, HIGH);
digitalWrite(S3, LOW);
int sensor6 = analogRead(SIG);
digitalWrite(S0, HIGH);
digitalWrite(S1, HIGH);
digitalWrite(S2, HIGH);
digitalWrite(S3, LOW);
int sensor7 = analogRead(SIG);
if (voltage0 < 3.0 && voltage1 > 3.0 && voltage2 < 3.0)
int reverseRes = 1;
else if (voltage0 > 3.0 && voltage1 < 3.0 && voltage2 < 3.0)
int reverseRes = 2;
else if (voltage0 < 3.0 && voltage1 < 3.0 && voltage2 < 3.0)
int reverseRes = 3;
else if (voltage0 > 3.0 && voltage1 > 3.0 && voltage2 < 3.0)
int reverseRes = 4;
Serial.print(reverse[reverseRes]);
} break;
case 4: {
int crossRes;
char *cross[crossRes] = {"Compatible", "Not Compatible"};
digitalWrite(S0, LOW);
digitalWrite(S1, LOW);
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
int sensor0 = analogRead(SIG);
float voltage0 = sensor0 * (5.0 / 1023.0);
Serial.println(voltage0);
delay(2000);
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
int sensor1 = analogRead(SIG);
float voltage1 = sensor1 * (5.0 / 1023.0);
Serial.println(voltage1);
delay(2000);
digitalWrite(S0, LOW);
digitalWrite(S1, LOW);
digitalWrite(S2, HIGH);
digitalWrite(S3, LOW);
int sensor4 = analogRead(SIG);
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
digitalWrite(S2, HIGH);
digitalWrite(S3, LOW);
int sensor5 = analogRead(SIG);
digitalWrite(S0, LOW);
digitalWrite(S1, HIGH);
digitalWrite(S2, HIGH);
digitalWrite(S3, LOW);
int sensor6 = analogRead(SIG);
digitalWrite(S0, HIGH);
digitalWrite(S1, HIGH);
digitalWrite(S2, HIGH);
digitalWrite(S3, LOW);
int sensor7 = analogRead(SIG);
if (voltage0 < 3.0)
int crossRes = 1;
else
int crossRes = 2;
Serial.print(cross[crossRes]);
} break;
}
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "Multiplexer.h"
Adafruit_SSD1306 display(-1);
void oled_init()
{
// initialize with the I2C addr 0x3C
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
Serial.begin(115200);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}
delay(2000);
display.clearDisplay();
display.setTextColor(WHITE);
}
void oled_loop()
{
delay(5000);
display.clearDisplay();
//display ABO result
display.setTextSize(1);
display.setCursor(0, 0);
display.print("ABO/RhD: ");
display.setTextSize(2);
display.setCursor(0, 10);
display.print(abo[aboRes]);
//display Rh result
display.setTextSize(1);
display.setCursor(0, 0);
display.print("Rh: ");
display.setTextSize(2);
display.setCursor(0, 10);
display.print(rhp[rhpRes]);
//display Reverse result
display.setTextSize(1);
display.setCursor(0, 0);
display.print("Reverse Type: ");
display.setTextSize(2);
display.setCursor(0, 10);
display.print(reverse[reverseRes]);
//display Crossmatch result
display.setTextSize(1);
display.setCursor(0, 0);
display.print("Crossmatching: ");
display.setTextSize(2);
display.setCursor(0, 10);
display.print(cross[crossRes]);
display.display();
}
I need help. The error is:
In file included from C:\Users\PC\Documents\Blood Typing\Yopak_besh\Yopak_besh.ino:4:
C:\Users\PC\Documents\Blood Typing\Yopak_besh\OLED.h: In function 'void multiplexer_loop()':
OLED.h:10:1: error: a function-definition is not allowed here before '{' token
10 | {
| ^
OLED.h:26:1: error: a function-definition is not allowed here before '{' token
26 | {
| ^
In file included from C:\Users\PC\Documents\Blood Typing\Yopak_besh\Yopak_besh.ino:5:
Multiplexer.h:10:1: error: a function-definition is not allowed here before '{' token
10 | {
| ^
Multiplexer.h:22:1: error: a function-definition is not allowed here before '{' token
22 | {
| ^
Yopak_besh:71:1: error: expected '}' at end of input
71 | }
| ^
In file included from C:\Users\PC\Documents\Blood Typing\Yopak_besh\OLED.h:5,
from C:\Users\PC\Documents\Blood Typing\Yopak_besh\Yopak_besh.ino:4:
C:\Users\PC\Documents\Blood Typing\Yopak_besh\Multiplexer.h:22:1: note: to match this '{'
22 | {
| ^