#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
#include "Arduino.h" // Include the core Arduino library
#include "DFRobotDFPlayerMini.h" // Include the DFRobot DFPlayer Mini library
#include <WiFi.h>
#ifdef ESP32
#define FPSerial Serial1 // For ESP32, use hardware serial port 1
#else
#include <SoftwareSerial.h> // Include SoftwareSerial library for non-ESP32 boards
SoftwareSerial FPSerial(16, 17); // Define SoftwareSerial on pins 16 (RX) and 17 (TX)
#endif
const char* ssid = "ESP32_Network";
const char* password = "12345678";
WiFiServer TCPserver(4080); //بقوم بتجهيز البورت الذي سوف يتم تشغيل عليه الشبكه و منفذ الخادم الخاص بيه (4080)
WiFiClient client; // انشأت كائن للعميل (الجهاز الذي سوف يتصل بالشبكة)
DFRobotDFPlayerMini myDFPlayer; // Create an instance of the DFRobotDFPlayerMini class
int Signs[6] = {0, 0, 0, 0, 0, 0};
int flex1 = 39; //الحساس الأول (الإصبع الأول) متصل ب GPIO34
int flex2 = 34; //الحساس الثانى (الإصبع الثانى) متصل ب GPIO35
int flex3 = 35; //الحساس الثالث (الإصبع الثالث) متصل ب GPIO32
int flex4 = 32; //الحساس الرابع (الإصبع الرابع) متصل ب GPIO33
int flex5 = 33; //الحساس الخامس (الإصبع الخامس) متصل ب GPIO36
int x, y, z;
Adafruit_MPU6050 mpu;
void setup() {
#ifdef ESP32
FPSerial.begin(9600, SERIAL_8N1, 16, 17); // Start serial communication for ESP32 with 9600 baud rate, 8 data bits, no parity, and 1 stop bit
#else
FPSerial.begin(9600); // Start serial communication for other boards with 9600 baud rate
#endif
WiFi.softAP(ssid, password); // بنشاء نقطه اتصال (شبكه واي فاي )
TCPserver.begin();
Serial.println("WiFi Access Point Started");
Serial.println("TCP Server started");
pinMode(flex1, INPUT);
pinMode(flex2, INPUT);
pinMode(flex3, INPUT);
pinMode(flex4, INPUT);
pinMode(flex5, INPUT);
Serial.begin(115200); //إعداد الاتصال التسلسلى
while (!Serial)
delay(10); // will pause Zero, Leonardo, etc until serial console opens
Serial.println("Adafruit MPU6050 test!");
Serial.println(F("DFRobot DFPlayer Mini Demo")); // Print a demo start message
Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)")); // Print initialization message
while (!myDFPlayer.begin(FPSerial)) { // Initialize the DFPlayer Mini with the defined serial interface
Serial.println(F("Unable to begin:")); // If initialization fails, print an error message
Serial.println(F("1.Please recheck the connection!")); // Suggest rechecking the connection
Serial.println(F("2.Please insert the SD card!")); // Suggest checking for an inserted SD card
// Stay in an infinite loop if initialization fails
}
Serial.println(F("DFPlayer Mini online.")); // Print a success message if initialization succeeds
myDFPlayer.volume(30); // Set the DFPlayer Mini volume to 30 (max is 30)
while (!mpu.begin()) {
delay(100);
}
Serial.println("MPU6050 Found!");
mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
Serial.print("Accelerometer range set to: ");
switch (mpu.getAccelerometerRange()) {
case MPU6050_RANGE_2_G:
Serial.println("+-2G");
break;
case MPU6050_RANGE_4_G:
Serial.println("+-4G");
break;
case MPU6050_RANGE_8_G:
Serial.println("+-8G");
break;
case MPU6050_RANGE_16_G:
Serial.println("+-16G");
break;
}
mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
Serial.print("Filter bandwidth set to: ");
switch (mpu.getFilterBandwidth()) {
case MPU6050_BAND_260_HZ:
Serial.println("260 Hz");
break;
case MPU6050_BAND_184_HZ:
Serial.println("184 Hz");
break;
case MPU6050_BAND_94_HZ:
Serial.println("94 Hz");
break;
case MPU6050_BAND_44_HZ:
Serial.println("44 Hz");
break;
case MPU6050_BAND_21_HZ:
Serial.println("21 Hz");
break;
case MPU6050_BAND_10_HZ:
Serial.println("10 Hz");
break;
case MPU6050_BAND_5_HZ:
Serial.println("5 Hz");
break;
}
delay(100);
}
void loop() {
if (!client || !client.connected()) { // لو لا يوجد اجهزة متصله علي الشبكه التي انشأتها
client = TCPserver.available(); //مراجعة الاجهزة التي تريد الاتصال علي الشبكه
}
/* Get new sensor events with the readings */
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
// قراءة حالة كل إصبع
int finger1State = getFinger1State();
int finger2State = getFinger2State();
int finger3State = getFinger3State();
int finger4State = getFinger4State();
int finger5State = getFinger5State();
x = round(a.acceleration.x);
y = round(a.acceleration.y);
z = round(a.acceleration.z);
/* Print out the values */
Serial.print("Acceleration X: ");
Serial.print(x);
Serial.print(", Y: ");
Serial.print(y);
Serial.print(", Z: ");
Serial.print(z);
Serial.println(" m/s^2");
if (
(finger1State == 1 || finger1State == 2) && (finger2State == 1) && (finger3State == 1) && (finger4State == 2 || finger4State == 3) && (finger5State == 1 || finger5State == 2)
&& Signs[3] == 0) {
myDFPlayer.play(4);
Signs[0] = 0;
Signs[1] = 0;
Signs[2] = 0;
Signs[3] = 1;
Signs[4] = 0;
Signs[5] = 0;
Serial.println("Perfect");
} else if (
(finger1State == 3) && (finger2State == 3) && (finger3State == 3) && (finger4State == 3) && (finger5State == 1) && (x >= -3 && x <= 7) && (y >= 7 && y <= 10) && (z >= -5 && z <= 5) && Signs[0] == 0) {
myDFPlayer.play(1);
Signs[0] = 1;
Signs[1] = 0;
Signs[2] = 0;
Signs[3] = 0;
Signs[4] = 0;
Signs[5] = 0;
Serial.println("Good Jop");
} else if (
(finger1State == 3) && (finger2State == 3) && (finger3State == 3) && (finger4State == 3) && (finger5State == 1) && (x >= -2 && x <= 10) && (y >= -10 && y <= -2) && (z >= -4 && z <= 4) && Signs[1] == 0) {
myDFPlayer.play(2);
Signs[0] = 0;
Signs[1] = 1;
Signs[2] = 0;
Signs[3] = 0;
Signs[4] = 0;
Signs[5] = 0;
Serial.println("Bad Jop");
} else if (
(finger1State == 1) && (finger2State == 3) && (finger3State == 3) && (finger4State == 1) && (finger5State == 1) && Signs[4] == 0) {
myDFPlayer.play(5);
Signs[0] = 0;
Signs[1] = 0;
Signs[2] = 0;
Signs[3] = 0;
Signs[4] = 1;
Signs[5] = 0;
Serial.println("I Love You");
} else if (
(finger1State == 3) && (finger2State == 3) && (finger3State == 3) && (finger4State == 1) && (finger5State == 1 || finger5State == 2) && Signs[5] == 0) {
myDFPlayer.play(6);
Signs[0] = 0;
Signs[1] = 0;
Signs[2] = 0;
Signs[3] = 0;
Signs[4] = 0;
Signs[5] = 1;
Serial.println("Excuse Me");
} else if (
(finger1State == 3) && (finger2State == 3) && (finger3State == 1) && (finger4State == 1) && (finger5State == 1 || finger5State == 2) && (x >= 0 && x <= 8) && (y >= -4 && y <= 8) && (z >= -10 && z <= -4) && Signs[2] == 0) {
myDFPlayer.play(3);
Signs[0] = 0;
Signs[1] = 0;
Signs[2] = 1;
Signs[3] = 0;
Signs[4] = 0;
Signs[5] = 0;
Serial.println("Victory");
} else if (
(finger1State == 1) && (finger2State == 3) && (finger3State == 3) && (finger4State == 1) && (finger5State == 3) && Signs[6] == 0) {
myDFPlayer.play(7);
Signs[0] = 0;
Signs[1] = 0;
Signs[2] = 0;
Signs[3] = 0;
Signs[4] = 0;
Signs[5] = 0;
Signs[6] = 1;
Serial.println("00");
}else if (
(finger1State == 1) && (finger2State == 3) && (finger3State == 3) && (finger4State == 1) && (finger5State == 3) && Signs[7] == 0) {
myDFPlayer.play(8);
Signs[0] = 0;
Signs[1] = 0;
Signs[2] = 0;
Signs[3] = 0;
Signs[4] = 0;
Signs[5] = 0;
Signs[6] = 0;
Signs[7] = 0;
Serial.println("00");
}else if (
(finger1State == 3) && (finger2State == 3) && (finger3State == 1 || finger3State == 2 || finger3State == 3) && (finger4State == 1 || finger4State == 2) && (finger5State == 1)) {
Serial.println("led is on");
if (client) client.println(1);
} else if (
(finger1State == 3) && (finger2State == 3) && (finger3State == 3) && (finger4State == 3) && (finger5State == 2 || finger5State == 3)) {
Serial.println("led is off");
if (client) client.println(0);
} else if (
(finger1State == 1) && (finger2State == 3) && (finger3State == 3) && (finger4State == 3) && (finger5State == 1 || finger5State == 2)) {
Serial.println("fan is on");
if (client) client.println(2);
} else if (
(finger1State == 2) && (finger2State == 3) && (finger3State == 3) && (finger4State == 3) && (finger5State == 1 || finger5State == 2)) {
Serial.println("fan is off");
if (client) client.println(3);
} else if ((finger1State == 1) && (finger2State == 1) && (finger3State == 1) && (finger4State == 1) && (finger5State == 1)) {
Signs[0]= 0;
Signs[1]= 0;
Signs[2]= 0;
Signs[3]= 0;
Signs[4]= 0;
Signs[5]= 0;
Serial.println("Nothing");
}
if (myDFPlayer.available()) { // Check if the DFPlayer Mini has any new data available
uint8_t type = myDFPlayer.readType(); // Read the type of the message
if (type == DFPlayerPlayFinished) { // Check if the message type indicates the end of a track
Serial.println(F("Finished playing track."));
}
}
delay(500); //تأخير 500 ملى ثانية بين القراءات
}
//دالة تقرأ حاله الاصبع بناء علي قيمة الحساس
int getFinger1State() {
int result = analogRead(flex1); //قراءة القيمه التناظرية
Serial.print("Flex 1:");
Serial.println(result);
if (result >= 740) {
return 1; //الاصبع مستقيم
} else if (result >= 600) {
return 2; // الاصبع شبه منحني
} else {
return 3; //الاصبع منحني تماما
}
}
int getFinger2State() {
int result = analogRead(flex2); //قراءة القيمه التناظرية
Serial.print("Flex 2:");
Serial.println(result);
if (result >= 700) {
return 1; //الاصبع مستقيم
} else if (result >= 500) {
return 2; // الاصبع شبه منحني
} else {
return 3; //الاصبع منحني تماما
}
}
int getFinger3State() {
int result = analogRead(flex3); //قراءة القيمه التناظرية
Serial.print("Flex 3:");
Serial.println(result);
if (result >= 700) {
return 1; //الاصبع مستقيم
} else if (result >= 580) {
return 2; // الاصبع شبه منحني
} else {
return 3; //الاصبع منحني تماما
}
}
int getFinger4State() {
int result = analogRead(flex4); //قراءة القيمه التناظرية
Serial.print("Flex 4:");
Serial.println(result);
if (result >= 620) {
return 1; //الاصبع مستقيم
} else if (result >= 550) {
return 2; // الاصبع شبه منحني
} else {
return 3; //الاصبع منحني تماما
}
}
int getFinger5State() {
int result = analogRead(flex5); //قراءة القيمه التناظرية
Serial.print("Flex 5:");
Serial.println(result);
Serial.println("----------------------------------------------");
if (result >= 520) {
return 1; //الاصبع مستقيم
} else if (result >= 360) {
return 2; // الاصبع شبه منحني
} else {
return 3; //الاصبع منحني تماما
}
}
كود الاستقبال
#include <WiFi.h>
const char* ssid = "ESP32_Network";
const char* password = "12345678";
const char* serverAddress = "192.168.4.1"; // عنوان IP الخاص ب نقطة الوصول
const int serverPort = 4080;
WiFiClient client;
int led = 25;
bool ledstate = false;
int fan = 27;
bool fanstate = false;
void setup() {
pinMode(led, OUTPUT);
pinMode(fan, OUTPUT);
Serial.begin(115200);
Serial.print("Connecting to WiFi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) { // التأكد من قراءة حالة الواى فاى اذا كان متصل ام لا
delay(500);
Serial.print(".");
}
Serial.println("\nConnected to WiFi");
Serial.print("Connecting to server...");
while (!client.connect(serverAddress, serverPort)) {
Serial.print(".");
delay(500);
}
Serial.println("\nConnected to server");
}
// const char* a = "1";
void loop() {
while (client.available()) {
// if (client.available()) { // لو في شبكه او جهاز متصل علي نقطه الاتصال التي انشأتها
String receivedData = client.readStringUntil('\n'); // قراءة البيانات حتى نهاية السطر
Serial.print("Received: "); // عرض البيانات المستقبلة على السيريال
Serial.println(receivedData);
if (receivedData.toInt() == 1 && ledstate == false) {
digitalWrite(led, HIGH);
ledstate = true;
} else if (receivedData.toInt() == 0 && ledstate == true) {
digitalWrite(led, LOW);
ledstate = false;
} else if (receivedData.toInt() == 2 && fanstate == false) {
digitalWrite(fan, HIGH);
fanstate = true;
} else if (receivedData.toInt() == 3 && fanstate == true) {
digitalWrite(fan, LOW);
fanstate = false;
}
}
Serial.println("--------------------------------");
delay(500);
}
كود االارسال بعد تعديل الفيلكس
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
#include "Arduino.h" // Include the core Arduino library
#include "DFRobotDFPlayerMini.h" // Include the DFRobot DFPlayer Mini library
#include <WiFi.h>
#ifdef ESP32
#define FPSerial Serial1 // For ESP32, use hardware serial port 1
#else
#include <SoftwareSerial.h> // Include SoftwareSerial library for non-ESP32 boards
SoftwareSerial FPSerial(16, 17); // Define SoftwareSerial on pins 16 (RX) and 17 (TX)
#endif
const char* ssid = "ESP32_Network";
const char* password = "12345678";
WiFiServer TCPserver(4080); //بقوم بتجهيز البورت الذي سوف يتم تشغيل عليه الشبكه و منفذ الخادم الخاص بيه (4080)
WiFiClient client; // انشأت كائن للعميل (الجهاز الذي سوف يتصل بالشبكة)
DFRobotDFPlayerMini myDFPlayer; // Create an instance of the DFRobotDFPlayerMini class
int Signs[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int flex1 = 39; //الحساس الأول (الإصبع الأول) متصل ب GPIO34
int flex2 = 34; //الحساس الثانى (الإصبع الثانى) متصل ب GPIO35
int flex3 = 35; //الحساس الثالث (الإصبع الثالث) متصل ب GPIO32
int flex4 = 32; //الحساس الرابع (الإصبع الرابع) متصل ب GPIO33
int flex5 = 33; //الحساس الخامس (الإصبع الخامس) متصل ب GPIO36
int x, y, z;
Adafruit_MPU6050 mpu;
void setup() {
#ifdef ESP32
FPSerial.begin(9600, SERIAL_8N1, 16, 17); // Start serial communication for ESP32 with 9600 baud rate, 8 data bits, no parity, and 1 stop bit
#else
FPSerial.begin(9600); // Start serial communication for other boards with 9600 baud rate
#endif
WiFi.softAP(ssid, password); // بنشاء نقطه اتصال (شبكه واي فاي )
TCPserver.begin();
Serial.println("WiFi Access Point Started");
Serial.println("TCP Server started");
pinMode(flex1, INPUT);
pinMode(flex2, INPUT);
pinMode(flex3, INPUT);
pinMode(flex4, INPUT);
pinMode(flex5, INPUT);
Serial.begin(115200); //إعداد الاتصال التسلسلى
while (!Serial)
delay(10); // will pause Zero, Leonardo, etc until serial console opens
Serial.println("Adafruit MPU6050 test!");
Serial.println(F("DFRobot DFPlayer Mini Demo")); // Print a demo start message
Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)")); // Print initialization message
while (!myDFPlayer.begin(FPSerial)) { // Initialize the DFPlayer Mini with the defined serial interface
Serial.println(F("Unable to begin:")); // If initialization fails, print an error message
Serial.println(F("1.Please recheck the connection!")); // Suggest rechecking the connection
Serial.println(F("2.Please insert the SD card!")); // Suggest checking for an inserted SD card
// Stay in an infinite loop if initialization fails
}
Serial.println(F("DFPlayer Mini online.")); // Print a success message if initialization succeeds
myDFPlayer.volume(30); // Set the DFPlayer Mini volume to 30 (max is 30)
while (!mpu.begin()) {
delay(100);
}
Serial.println("MPU6050 Found!");
mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
Serial.print("Accelerometer range set to: ");
switch (mpu.getAccelerometerRange()) {
case MPU6050_RANGE_2_G:
Serial.println("+-2G");
break;
case MPU6050_RANGE_4_G:
Serial.println("+-4G");
break;
case MPU6050_RANGE_8_G:
Serial.println("+-8G");
break;
case MPU6050_RANGE_16_G:
Serial.println("+-16G");
break;
}
mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
Serial.print("Filter bandwidth set to: ");
switch (mpu.getFilterBandwidth()) {
case MPU6050_BAND_260_HZ:
Serial.println("260 Hz");
break;
case MPU6050_BAND_184_HZ:
Serial.println("184 Hz");
break;
case MPU6050_BAND_94_HZ:
Serial.println("94 Hz");
break;
case MPU6050_BAND_44_HZ:
Serial.println("44 Hz");
break;
case MPU6050_BAND_21_HZ:
Serial.println("21 Hz");
break;
case MPU6050_BAND_10_HZ:
Serial.println("10 Hz");
break;
case MPU6050_BAND_5_HZ:
Serial.println("5 Hz");
break;
}
delay(100);
}
void loop() {
if (!client || !client.connected()) { // لو لا يوجد اجهزة متصله علي الشبكه التي انشأتها
client = TCPserver.available(); //مراجعة الاجهزة التي تريد الاتصال علي الشبكه
}
/* Get new sensor events with the readings */
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
// قراءة حالة كل إصبع
int finger1State = getFinger1State();
int finger2State = getFinger2State();
int finger3State = getFinger3State();
int finger4State = getFinger4State();
int finger5State = getFinger5State();
x = round(a.acceleration.x);
y = round(a.acceleration.y);
z = round(a.acceleration.z);
/* Print out the values */
Serial.print("Acceleration X: ");
Serial.print(x);
Serial.print(", Y: ");
Serial.print(y);
Serial.print(", Z: ");
Serial.print(z);
Serial.println(" m/s^2");
if (
(finger1State == 1 || finger1State == 2) && (finger2State == 1) && (finger3State == 1) && (finger4State == 2 || finger4State == 3) && (finger5State == 1 || finger5State == 2)
&& Signs[3] == 0) {
myDFPlayer.play(4);
Signs[0] = 0;
Signs[1] = 0;
Signs[2] = 0;
Signs[3] = 1;
Signs[4] = 0;
Signs[5] = 0;
Signs[6] = 0;
Signs[7] = 0;
Signs[8] = 0;
Signs[9] = 0;
Serial.println("Perfect");
} else if (
(finger1State == 3) && (finger2State == 3) && (finger3State == 3) && (finger4State == 3) && (finger5State == 1) && (x >= -4 && x <= 5) && (y >= 5 && y <= 10) && (z >= -7 && z <= 0) && Signs[0] == 0) {
myDFPlayer.play(1);
Signs[0] = 1;
Signs[1] = 0;
Signs[2] = 0;
Signs[3] = 0;
Signs[4] = 0;
Signs[5] = 0;
Signs[6] = 0;
Signs[7] = 0;
Signs[8] = 0;
Signs[9] = 0;
Serial.println("Good Jop");
} else if (
(finger1State == 3) && (finger2State == 3) && (finger3State == 3) && (finger4State == 3) && (finger5State == 1) && (x >= 0 && x <= 7) && (y >= -10 && y <= -2) && (z >= -4 && z <= 4) && Signs[1] == 0) {
myDFPlayer.play(2);
Signs[0] = 0;
Signs[1] = 1;
Signs[2] = 0;
Signs[3] = 0;
Signs[4] = 0;
Signs[5] = 0;
Signs[6] = 0;
Signs[7] = 0;
Signs[8] = 0;
Signs[9] = 0;
Serial.println("Bad Jop");
} else if (
(finger1State == 1) && (finger2State == 3) && (finger3State == 3) && (finger4State == 1) && (finger5State == 1) && Signs[4] == 0) {
myDFPlayer.play(5);
Signs[0] = 0;
Signs[1] = 0;
Signs[2] = 0;
Signs[3] = 0;
Signs[4] = 1;
Signs[5] = 0;
Signs[6] = 0;
Signs[7] = 0;
Signs[8] = 0;
Signs[9] = 0;
Serial.println("I Love You");
} else if (
(finger1State == 3) && (finger2State == 3) && (finger3State == 3) && (finger4State == 1) && (finger5State == 1 || finger5State == 2) && Signs[5] == 0) {
myDFPlayer.play(6);
Signs[0] = 0;
Signs[1] = 0;
Signs[2] = 0;
Signs[3] = 0;
Signs[4] = 0;
Signs[5] = 1;
Signs[6] = 0;
Signs[7] = 0;
Signs[8] = 0;
Signs[9] = 0;
Serial.println("Excuse Me");
} else if (
(finger1State == 3) && (finger2State == 3) && (finger3State == 1) && (finger4State == 1) && (finger5State == 1 || finger5State == 2) && (x >= 0 && x <= 8) && (y >= -2 && y <= 8) && (z >= -10 && z <= -4) && Signs[2] == 0) {
myDFPlayer.play(3);
Signs[0] = 0;
Signs[1] = 0;
Signs[2] = 1;
Signs[3] = 0;
Signs[4] = 0;
Signs[5] = 0;
Signs[6] = 0;
Signs[7] = 0;
Signs[8] = 0;
Signs[9] = 0;
Serial.println("Victory");
} else if (
(finger1State == 1) && (finger2State == 3) && (finger3State == 3) && (finger4State == 1) && (finger5State == 3) && Signs[6] == 0) {
myDFPlayer.play(7);
Signs[0] = 0;
Signs[1] = 0;
Signs[2] = 0;
Signs[3] = 0;
Signs[4] = 0;
Signs[5] = 0;
Signs[6] = 1;
Signs[7] = 0;
Signs[8] = 0;
Signs[9] = 0;
Serial.println("awesome");
} else if (
(finger1State ==3) && (finger2State == 3) && (finger3State == 3) && (finger4State == 2) && (finger5State == 3) && Signs[7] == 0) {
myDFPlayer.play(8);
Signs[0] = 0;
Signs[1] = 0;
Signs[2] = 0;
Signs[3] = 0;
Signs[4] = 0;
Signs[5] = 0;
Signs[6] = 0;
Signs[7] = 1;
Signs[8] = 0;
Signs[9] = 0;
Serial.println("i have a question");
} else if (
(finger1State ==1) && (finger2State == 1) && (finger3State == 1) && (finger4State == 1) && (finger5State == 2 || finger5State == 3) && Signs[9] == 0) {
myDFPlayer.play(9);
Signs[0] = 0;
Signs[1] = 0;
Signs[2] = 0;
Signs[3] = 0;
Signs[4] = 0;
Signs[5] = 0;
Signs[6] = 0;
Signs[7] = 0;
Signs[8] = 0;
Signs[9] = 1;
Serial.println("Welcome to the college of technology and education");
} else if (
(finger1State == 3) && (finger2State == 3) && (finger3State == 1) && (finger4State == 1 || finger4State == 2) && (finger5State == 1)) {
Serial.println("led is on");
if (client) client.println(1);
} else if (
(finger1State == 3) && (finger2State == 3) && (finger3State == 3) && (finger4State == 3) && (finger5State == 2 || finger5State == 3)) {
Serial.println("led is off");
if (client) client.println(0);
} else if (
(finger1State == 1) && (finger2State == 3) && (finger3State == 3) && (finger4State == 3) && (finger5State == 1 || finger5State == 2)) {
Serial.println("fan is on");
if (client) client.println(2);
} else if (
(finger1State == 1) && (finger2State == 3) && (finger3State == 3) && (finger4State == 3) && (finger5State == 3)) {
Serial.println("fan is off");
if (client) client.println(3);
} else if ((finger1State == 1) && (finger2State == 1) && (finger3State == 1) && (finger4State == 1) && (finger5State == 1)) {
Signs[0]= 0;
Signs[1]= 0;
Signs[2]= 0;
Signs[3]= 0;
Signs[4]= 0;
Signs[5]= 0;
Signs[6]= 0;
Signs[7]= 0;
Signs[8]= 0;
Signs[9]= 0;
Serial.println("Nothing");
}
if (myDFPlayer.available()) { // Check if the DFPlayer Mini has any new data available
uint8_t type = myDFPlayer.readType(); // Read the type of the message
if (type == DFPlayerPlayFinished) { // Check if the message type indicates the end of a track
Serial.println(F("Finished playing track."));
}
}
delay(500); //تأخير 500 ملى ثانية بين القراءات
}
//دالة تقرأ حاله الاصبع بناء علي قيمة الحساس
int getFinger1State() {
int result = analogRead(flex1); //قراءة القيمه التناظرية
Serial.print("Flex 1:");
Serial.println(result);
if (result >= 570) {
return 1; //الاصبع مستقيم
} else if (result >= 500) {
return 2; // الاصبع شبه منحني
} else {
return 3; //الاصبع منحني تماما
}
}
int getFinger2State() {
int result = analogRead(flex2); //قراءة القيمه التناظرية
Serial.print("Flex 2:");
Serial.println(result);
if (result >= 480) {
return 1; //الاصبع مستقيم
} else if (result >= 350) {
return 2; // الاصبع شبه منحني
} else {
return 3; //الاصبع منحني تماما
}
}
int getFinger3State() {
int result = analogRead(flex3); //قراءة القيمه التناظرية
Serial.print("Flex 3:");
Serial.println(result);
if (result >= 530) {
return 1; //الاصبع مستقيم
} else if (result >= 470) {
return 2; // الاصبع شبه منحني
} else {
return 3; //الاصبع منحني تماما
}
}
int getFinger4State() {
int result = analogRead(flex4); //قراءة القيمه التناظرية
Serial.print("Flex 4:");
Serial.println(result);
if (result >= 450) {
return 1; //الاصبع مستقيم
} else if (result >= 370) {
return 2; // الاصبع شبه منحني
} else {
return 3; //الاصبع منحني تماما
}
}
int getFinger5State() {
int result = analogRead(flex5); //قراءة القيمه التناظرية
Serial.print("Flex 5:");
Serial.println(result);
Serial.println("----------------------------------------------");
if (result >= 350) {
return 1; //الاصبع مستقيم
} else if (result >= 250) {
return 2; // الاصبع شبه منحني
} else {
return 3; //الاصبع منحني تماما
}
}