Как использовать Arduino как аналого-цифровой преобразователь для преобразования 3 аналогового сигнала из 3 Poteciometer в малину? - PullRequest
0 голосов
/ 13 июня 2019

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

1 Ответ

0 голосов
/ 14 июня 2019

Вы не можете отправить аналоговое значение через цифровые контакты на 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...