Я разрабатываю систему управления в своем raspberry. К сожалению, у raspberry нет аналогового порта. Могу ли я использовать arduino для преобразования
сигнал с аналогового на цифровой и отправить этот сигнал на цифровой порт ввода/вывода с anduino на `raspberry? Это возможно?
да, но в сериале я могу отправить только одно значение или я могу отправить больше?
мой план состоял в том, чтобы получить аналоговый сигнал в arduino и преобразовать здесь в цифровой сигнал, а затем отправить его по цифровому порту на rasberry.
Вы можете отправлять и получать столько данных, сколько хотите.
Не могли бы вы привести небольшой пример того, как это сделать с двумя значениями разных потенциометров?





Вы не можете отправить аналоговое значение через цифровые контакты на Raspberry Pi, но вы можете использовать последовательную связь между ними.
На стороне Arduino вам нужно сначала прочитать аналоговые данные (значения потенциометров), сериализовать их (например, преобразовать в строку), а затем отправить их через последовательный порт на Pi. На стороне Pi просто получите значение и просто преобразуйте его в значение с плавающей запятой.
Следуйте за соединением, как в здесь, и не забудьте изменить имена контактов в соответствии с вашим соединением.
Код Ардуино:
// 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)
Вы не можете отправить аналоговое значение через цифровые контакты на Rpi. Простое решение — использовать Serial для отправки значений в Pi. Это то, что вы хотите?