Arduino ESP32
Tags: arduino, esp32, coding, programimg, robot, arm robot, iot, google sheet, wifi, bluetooth, plc, scada, modbus
การประยุกต์ใช้งาน coding Arduino และ ESP32
ดูตัวอย่างและโหลดโค้ดได้ตามลิงค์ ในช่อง Youtube
Youtube: https://www.youtube.com/@traningteam2022
- - เนื้อหา หัวข้อประมาณนี้
- arduino, esp32, coding, programimg, robot, arm robot,
- iot, google sheet, wifi, bluetooth, plc, scada, modbus
- - ดูคำอธิบายและตัวอย่างตามลิงค์ใน Youtube
- - เดี่๋ยวมีเวลามาเขียน ขยายความ :)
- #include<Servo.h> // add the servo libraries
- Servo myservo1; // create servo object to control a servo
- Servo myservo2;
- Servo myservo3;
- Servo myservo4;
- Servo myservo5;
- Servo myservo6;
- int pos1 =90, pos2=90, pos3=90, pos4=90, pos5=90, pos6=90; // define the variable of 4 servo angle and assign the initial value( that is the boot posture angle value)
- int PosIndex =1;
- int Joint1[7] = {80,120,120,120,160,160,120};
- int Joint2[7] = {110,120,92,92,120,120,120};
- int Joint3[7] = {100,100,100,100,100,100,100};
- int Joint4[7] = {80,80,80,80,80,80,80};
- int Joint5[7] = {60,60,60,60,60,60,60};
- int Joint6[7] = {60,60,60,115,115,60,60};
- //int armJoint[] = {90,90,90,90,90};
- const int right_X = A2; // define the right X pin to A2
- const int right_Y = A5; // define the right Y pin to A5
- const int right_key = 2; // define the right key pin to 7(that is the value of Z)
- const int left_X = A3; // define the left X pin to A3
- const int left_Y = A4; // define the left X pin to A4
- const int left_key = 11; //define the left key pin to 8(that is the value of Z)
- int x1,y1; // define the variable, used to save the joystick value it read.
- int x2,y2;
- bool z1,z2;
- int pos[7];
- char val;
- int incomingByte = 0; // Received data byte
- String inputString = ""; // Used to store received content
- boolean newLineReceived = false; // Previous data end flag
- boolean startBit = false; //Acceptance Agreement Start Sign
- int num_reveice=0;
- void setup()
- {
- // boot posture
- pinMode(right_key, INPUT); // set the right/left key to INPUT
- pinMode(left_key, INPUT);
- myservo1.write(Joint1[0]);
- delay(1000);
- myservo2.write(Joint2[0]);
- myservo3.write(Joint3[0]);
- myservo4.write(Joint4[0]);
- myservo5.write(Joint5[0]);
- myservo6.write(Joint6[0]);
- delay(1000);
- delay(1500);
- Serial.begin(9600); // set the baud rate to 9600
- }
- void loop()
- {
- myservo1.attach(3); // set the control pin of servo 1 to D3
- myservo2.attach(5); // set the control pin of servo 2 to D5
- myservo3.attach(6); // set the control pin of servo 3 to D6
- myservo4.attach(7); // set the control pin of servo 4 to D9
- myservo5.attach(8);
- myservo6.attach(9);
- // myservo5.attach(10);
- x2 = analogRead(right_X); //read the right X value
- y2 = analogRead(right_Y); // read the right Y value
- z2 = digitalRead(right_key); //// read the right Z value
- x1 = analogRead(left_X); //read the left X value
- y1 = analogRead(left_Y); //read the left Y value
- z1 = digitalRead(left_key); // read the left Z value
- while (Serial.available())
- {
- incomingByte = Serial.read(); //One byte by byte, the next sentence is read into a string array to form a completed packet
- Serial.println(incomingByte);
- if (incomingByte == '%')
- {
- num_reveice = 0;
- startBit = true;
- }
- if (startBit == true)
- {
- num_reveice++;
- inputString += (char) incomingByte;
- }
- if (startBit == true && incomingByte == '#')
- {
- newLineReceived = true;
- startBit = false;
- }
- if(num_reveice >= 20)
- {
- num_reveice = 0;
- startBit = false;
- newLineReceived = false;
- inputString = "";
- }
- }
- if(newLineReceived)
- {
- switch(inputString[1])
- {
- case 'B': T_left(); break; // turn left
- case 'C': T_right(); break;//turn right
- case 'A': RB(); break;// the lower arm will draw back
- case 'D': RF(); break;// the lower arm will stretch out
- case '5': ZK(); break;//close the claw
- case '6': ZB(); break;//close the claw
- case '4': LB(); break;//the upper arm will lift up
- case '7': LF(); break;//the upper arm will go down
- case '8': WC(); break;
- case '9': WW(); break;
- case 'E': GO(); break;
- case 'F': GC(); break;
- case 'K': Run(); break;
- case 'J': Run5(); break;
- case 'L': Jog1(); break;
- case 'M': Jog2(); break;
- case 'N': Jog3(); break;
- case 'O': Jog4(); break;
- case 'P': Jog5(); break;
- case 'Q': Jog6(); break;
- case 'R': Jog7(); break;
- // case 'M': Set1(); break;
- default:break;
- }
- inputString = ""; // clear the string
- newLineReceived = false;
- }
- Serial.println(z1);
- delay(200);
- if(z1 == HIGH)
- {
- Run();
- }
- }
- // Jog1
- void Jog1()
- {
- PosIndex = 0;
- myservo1.write(Joint1[PosIndex]);
- //delay(1000);
- myservo2.write(Joint2[PosIndex]);
- myservo3.write(Joint3[PosIndex]);
- myservo4.write(Joint4[PosIndex]);
- myservo5.write(Joint5[PosIndex]);
- myservo6.write(Joint6[PosIndex]);
- delay(2000);
- }
- // Jog2
- void Jog2()
- {
- PosIndex = 1;
- myservo1.write(Joint1[PosIndex]);
- //delay(1000);
- myservo2.write(Joint2[PosIndex]);
- myservo3.write(Joint3[PosIndex]);
- myservo4.write(Joint4[PosIndex]);
- myservo5.write(Joint5[PosIndex]);
- myservo6.write(Joint6[PosIndex]);
- delay(2000);
- }
- // Jog3
- void Jog3()
- {
- PosIndex = 2;
- myservo1.write(Joint1[PosIndex]);
- //delay(1000);
- myservo2.write(Joint2[PosIndex]);
- myservo3.write(Joint3[PosIndex]);
- myservo4.write(Joint4[PosIndex]);
- myservo5.write(Joint5[PosIndex]);
- myservo6.write(Joint6[PosIndex]);
- delay(2000);
- }
- // Jog4
- void Jog4()
- {
- PosIndex = 3;
- myservo1.write(Joint1[PosIndex]);
- //delay(1000);
- myservo2.write(Joint2[PosIndex]);
- myservo3.write(Joint3[PosIndex]);
- myservo4.write(Joint4[PosIndex]);
- myservo5.write(Joint5[PosIndex]);
- myservo6.write(Joint6[PosIndex]);
- delay(2000);
- }
- // Jog5
- void Jog5()
- {
- PosIndex = 4;
- myservo1.write(Joint1[PosIndex]);
- //delay(1000);
- myservo2.write(Joint2[PosIndex]);
- myservo3.write(Joint3[PosIndex]);
- myservo4.write(Joint4[PosIndex]);
- myservo5.write(Joint5[PosIndex]);
- myservo6.write(Joint6[PosIndex]);
- delay(2000);
- }
- // Jog6
- void Jog6()
- {
- PosIndex = 5;
- myservo1.write(Joint1[PosIndex]);
- //delay(1000);
- myservo2.write(Joint2[PosIndex]);
- myservo3.write(Joint3[PosIndex]);
- myservo4.write(Joint4[PosIndex]);
- myservo5.write(Joint5[PosIndex]);
- myservo6.write(Joint6[PosIndex]);
- delay(2000);
- }
- // Jog7
- void Jog7()
- {
- PosIndex = 6;
- myservo1.write(Joint1[PosIndex]);
- //delay(1000);
- myservo2.write(Joint2[PosIndex]);
- myservo3.write(Joint3[PosIndex]);
- myservo4.write(Joint4[PosIndex]);
- myservo5.write(Joint5[PosIndex]);
- myservo6.write(Joint6[PosIndex]);
- delay(2000);
- }
- // Run 1
- void Run()
- {
- for (byte i = 0; i < 7; i = i + 1) {
- myservo1.write(Joint1[i]);
- //delay(1000);
- myservo2.write(Joint2[i]);
- myservo3.write(Joint3[i]);
- myservo4.write(Joint4[i]);
- myservo5.write(Joint5[i]);
- myservo6.write(Joint6[i]);
- delay(2000);
- }
- }
- // Run 5 cycle
- void Run5()
- {
- for (byte j = 0; j < 5; j = j + 1) {
- for (byte i = 0; i < 6; i = i + 1) {
- myservo1.write(Joint1[i]);
- //delay(1000);
- myservo2.write(Joint2[i]);
- myservo3.write(Joint3[i]);
- myservo4.write(Joint4[i]);
- myservo5.write(Joint5[i]);
- myservo6.write(Joint6[i]);
- delay(2000);
- }
- }
- }
- //}
- //**************************************************
- // turn left
- void T_left()
- {
- (Joint1[PosIndex])=(Joint1[PosIndex])+3;
- myservo1.write((Joint1[PosIndex]));
- delay(100);
- if((Joint1[PosIndex])>150)
- {
- (Joint1[PosIndex])=150;
- }
- }
- //turn right
- void T_right()
- {
- (Joint1[PosIndex])=(Joint1[PosIndex])-3;
- myservo1.write((Joint1[PosIndex]));
- delay(100);
- if((Joint1[PosIndex])<50)
- {
- (Joint1[PosIndex])=50;
- }
- }
- //********************************************
- //close the claw
- void ZK()
- {
- (Joint4[PosIndex])=(Joint4[PosIndex])-3;
- //Serial.println((Joint4[PosIndex]));
- myservo4.write((Joint4[PosIndex]));
- delay(100);
- if((Joint4[PosIndex])<30)
- {
- (Joint4[PosIndex])=30;
- }
- }
- // open the claw
- void ZB()
- {
- (Joint4[PosIndex])=(Joint4[PosIndex])+3;
- //Serial.println((Joint4[PosIndex]));
- myservo4.write((Joint4[PosIndex]));
- delay(100);
- if((Joint4[PosIndex])>150)
- {
- (Joint4[PosIndex])=150;
- }
- }
- //******************************************
- // the lower arm will stretch out
- void RF()
- {
- (Joint2[PosIndex])=(Joint2[PosIndex])-3;
- myservo2.write((Joint2[PosIndex]));
- delay(100);
- if((Joint2[PosIndex])<30)
- {
- (Joint2[PosIndex])=30;
- }
- }
- // the lower arm will draw back
- void RB()
- {
- (Joint2[PosIndex])=(Joint2[PosIndex])+3;
- myservo2.write((Joint2[PosIndex]));
- delay(100);
- if((Joint2[PosIndex])>150)
- {
- (Joint2[PosIndex])=150;
- }
- }
- //***************************************
- //the upper arm will lift up
- void LB()
- {
- (Joint3[PosIndex])=(Joint3[PosIndex])+3;
- myservo3.write((Joint3[PosIndex]));
- delay(100);
- if((Joint3[PosIndex])>150)
- {
- (Joint3[PosIndex])=150;
- }
- }
- //the upper arm will go down
- void LF()
- {
- (Joint3[PosIndex])=(Joint3[PosIndex])-3;
- myservo3.write((Joint3[PosIndex]));
- delay(100);
- if((Joint3[PosIndex])<30)
- {
- (Joint3[PosIndex])=30;
- }
- }
- //***************************************
- //the wrist cw
- void WC()
- {
- (Joint5[PosIndex])=(Joint5[PosIndex])+3;
- myservo5.write((Joint5[PosIndex]));
- delay(100);
- if((Joint5[PosIndex])>140)
- {
- (Joint5[PosIndex])=140;
- }
- }
- //the wrist ccw
- void WW()
- {
- (Joint5[PosIndex])=(Joint5[PosIndex])-3;
- myservo5.write((Joint5[PosIndex]));
- delay(100);
- if((Joint5[PosIndex])<30)
- {
- (Joint5[PosIndex])=30;
- }
- }
- //***************************************
- //the Grip open
- void GO()
- {
- (Joint6[PosIndex])=(Joint6[PosIndex])+3;
- myservo6.write((Joint6[PosIndex]));
- delay(100);
- if((Joint6[PosIndex])>140)
- {
- (Joint6[PosIndex])=140;
- }
- }
- //the Grip close
- void GC()
- {
- (Joint6[PosIndex])=(Joint6[PosIndex])-3;
- myservo6.write((Joint6[PosIndex]));
- delay(100);
- if((Joint6[PosIndex])<30)
- {
- (Joint6[PosIndex])=30;
- }
- }