Вы не можете отправить аналоговое значение через цифровые контакты на Raspberry Pi, но вы можете использовать последовательную связь между ними.
На стороне Arduino вам необходимо сначала прочитать аналоговые данные (значение потенциометров)), сериализовать их (например, преобразовать в строку), а затем отправить через последовательный порт на Pi.Со стороны Pi, просто получите значение и просто преобразуйте их в значение с плавающей точкой.
Выполните подключение, как в здесь , и не забудьте изменить имена контактов в соответствии с вашим подключением.
Код Arduino:
// definition of analog pins
int analogPin1 = A0;
int analogPin2 = A1;
int analogPin3 = A2;
void setup()
{
Serial.begin(9600);
}
// a function to read values and convert them to String
String read()
{
// a variable to hold serilize data of values that need to be sent
String result = "";
// convert each value to string
String analogPin1_value = String(analogRead(analogPin1), 3);
String analogPin2_value = String(analogRead(analogPin2), 3);
String analogPin3_value = String(analogRead(analogPin3), 3);
// result would become something like "1.231,59.312,65.333"
result = analogPin1_value + "," + analogPin2_value + "," + analogPin3_value;
return result;
}
void loop()
{
// send values with one second delay
Serial.println(read());
delay(1000);
}
Код Пи:
import serial
# remember to set this value to a proper serial port name
ser = serial.Serial('/dev/ttyUSB0', 9600)
ser.open()
# flush serial for unprocessed data
ser.flushInput()
while True:
result = ser.readline()
if result:
# decode result
result = result.decode()
print("new command:", result)
# split results
values = list(map(float, result.split(",")))
print("Converted results:", values)