I want help serial communication between arduino and python


If you insert 1 to 9 in the value of str () in Python when serial communication between Python and Aduino, characters with two or more digits that operate in Aduino code cannot write char, so int or string I want to use a function. Maybe there is a way to change my Aduino code?

this is my arduino code
#include "HCPCA9685.h"

#define I2CAdd 0x40

int Servo4Position1;
int Servo4Position2;
int Servo4Position3;

int SW1 = 8;

HCPCA9685 HCPCA9685(I2CAdd);

void setup() {
Serial.begin(9600);
HCPCA9685.Init(SERVO_MODE);
HCPCA9685.Sleep(false);

Servo4Position1 = 185; // 위치값의 최대값을 350으로 설정합니다.
Servo4Position2 = 185;
Servo4Position3 = 400;

HCPCA9685.Servo(14, Servo4Position1); // 서보모터를 서보모터 드라이버 6번에 연결합니다.
HCPCA9685.Servo(15, Servo4Position2); // 서보모터를 서보모터 드라이버 7번에 연결합니다.
HCPCA9685.Servo(7, Servo4Position3);

pinMode(SW1, INPUT_PULLUP);

}

void Focus_LeftUp(){
Servo4Position1 = 107.5; // 위치값 의 위치로 이동
Servo4Position2 = 267.5; // 위치값 의 위치로 이동
HCPCA9685.Servo(14, Servo4Position1);
HCPCA9685.Servo(15, Servo4Position2);
}

void Focus_Up(){
Servo4Position1 = 185; // 위치값 의 위치로 이동
Servo4Position2 = 267.5; // 위치값 의 위치로 이동
HCPCA9685.Servo(14, Servo4Position1);
HCPCA9685.Servo(15, Servo4Position2);
}
void Focus_RightUp(){
Servo4Position1 = 267.5; // 위치값 의 위치로 이동
Servo4Position2 = 267.5; // 위치값 의 위치로 이동
HCPCA9685.Servo(14, Servo4Position1);
HCPCA9685.Servo(15, Servo4Position2);
}

void Focus_Left(){
Servo4Position1 = 107.5; // 위치값 의 위치로 이동
Servo4Position2 = 185; // 위치값 의 위치로 이동
HCPCA9685.Servo(14, Servo4Position1);
HCPCA9685.Servo(15, Servo4Position2);
}

void Focus_Center(){
Servo4Position1 = 185; // 위치값 의 위치로 이동
Servo4Position2 = 185; // 위치값 의 위치로 이동
HCPCA9685.Servo(14, Servo4Position1);
HCPCA9685.Servo(15, Servo4Position2);
}

void Focus_Right(){
Servo4Position1 = 267.5; // 위치값 의 위치로 이동
Servo4Position2 = 185; // 위치값 의 위치로 이동
HCPCA9685.Servo(14, Servo4Position1);
HCPCA9685.Servo(15, Servo4Position2);
}

void Focus_LeftDown(){
Servo4Position1 = 107.5; // 위치값 의 위치로 이동
Servo4Position2 = 107.5; // 위치값 의 위치로 이동
HCPCA9685.Servo(14, Servo4Position1);
HCPCA9685.Servo(15, Servo4Position2);
}

void Focus_Down(){
Servo4Position1 = 185; // 위치값 의 위치로 이동
Servo4Position2 = 107.5; // 위치값 의 위치로 이동
HCPCA9685.Servo(14, Servo4Position1);
HCPCA9685.Servo(15, Servo4Position2);
}

void Focus_RightDown(){
Servo4Position1 = 267.5; // 위치값 의 위치로 이동
Servo4Position2 = 107.5; // 위치값 의 위치로 이동
HCPCA9685.Servo(14, Servo4Position1);
HCPCA9685.Servo(15, Servo4Position2);
}

void FOCUSING(){
while (Serial.available()) {
char serialListner = Serial.read();
if (serialListner == '1'){
Focus_LeftUp();
}
if (serialListner == '2'){
Focus_Up();
}
if (serialListner == '3'){
Focus_RightUp();
}
if (serialListner == '4'){
Focus_Left();
}
if (serialListner == '5'){
Focus_Center();
}
if (serialListner == '6'){
Focus_Right();
}
if (serialListner == '7'){
Focus_LeftDown();
}
if (serialListner == '8'){
Focus_Down();
}
if (serialListner == '9'){
Focus_RightDown();
}
}

}
void loop() {
FOCUSING();

if (!digitalRead(SW1) == HIGH) {
delay(900);
Servo4Position3 = 350;
HCPCA9685.Servo(7, Servo4Position3);
delay(900);
Servo4Position3 = 400;
HCPCA9685.Servo(7, Servo4Position3);

}

}

Please follow the advice given in the link below when posting code. Use code tags (the </> icon above the compose window) to make it easier to read and copy for examination

Maybe those two articles will help you

  1. Serial Input Basics - updated
  2. Demo of PC-Arduino comms using Python