PySerial и Arduino связь - PullRequest
0 голосов
/ 26 июня 2018

До сих пор я изучал Python с Arduino, используя pySerial. Я сделал несколько проектов, где pySerial читает что-то из последовательного порта.

import serial 

arduinoSerialData = serial.Serial('com11',9600) #Create Serial port object called arduinoSerialData


while (1==1):
    if (arduinoSerialData.inWaiting()>0):
        myData = arduinoSerialData.readline()
        print (myData)
int trigPin=13; //Sensor Trig pin connected to Arduino pin 13
int echoPin=11;  //Sensor Echo pin connected to Arduino pin 11
float pingTime;  //time for ping to travel from sensor to target and return
float targetDistance; //Distance to Target in inches
float speedOfSound=776.5; //Speed of sound in miles per hour when temp is 77 degrees.

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

void loop() {
  // put your main code here, to run repeatedly:

  digitalWrite(trigPin, LOW); //Set trigger pin low
  delayMicroseconds(2000); //Let signal settle
  digitalWrite(trigPin, HIGH); //Set trigPin high
  delayMicroseconds(15); //Delay in high state
  digitalWrite(trigPin, LOW); //ping has now been sent
  delayMicroseconds(10); //Delay in low state

  pingTime = pulseIn(echoPin, HIGH);  //pingTime is presented in microceconds
  pingTime=pingTime/1000000; //convert pingTime to seconds by dividing by 1000000 (microseconds in a second)
  pingTime=pingTime/3600; //convert pingtime to hourse by dividing by 3600 (seconds in an hour)
  targetDistance= speedOfSound * pingTime;  //This will be in miles, since speed of sound was miles per hour
  targetDistance=targetDistance/2; //Remember ping travels to target and back from target, so you must divide by 2 for actual target distance.
  targetDistance= targetDistance*63360;    //Convert miles to inches by multipling by 63360 (inches per mile)

  Serial.println(targetDistance);

  delay(100); //delay tenth of a  second to slow things down a little.
}

Пока мой код выглядит примерно так. Как я могу использовать свой ультразвуковой датчик в Python и отправлять сигналы в мою программу Arduino? Другими словами, можно ли заставить мой файл Arduino считываться из имеющегося у меня файла Python или это только одно направление?

1 Ответ

0 голосов
/ 26 июня 2018

pySerial позволяет осуществлять связь через последовательный порт в обоих направлениях. На стороне Arduino вам нужно вызвать Serial.read, где это уместно, для чтения потока данных из Python. В Python вам просто нужно отправить данные, используя функцию serial.write. При использовании Python 3 ввод в serial.write должен быть в формате byte.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...