какой метод может быть использован для отправки данных в Arduino - PullRequest
0 голосов
/ 04 апреля 2019

Я хочу отправить выходные данные из OpenCV в Arduino для управления некоторым приводом.Я делаю линию сортировки и упаковки яблочных плодов, заранее спасибо

"Я изменил этот код, он работает нормально, но при подключении к OpenCV его нет, код смог отправить цифры вручнуюArduino "

     #include"stdafx.h"
     using namespace System;
     using namespace System::IO::Ports;

    int main(array<System::String ^> ^args)
    {
SerialPort port("COM7", 9600);
port.Open();
while (true)
{
int input = Convert::ToInt32(Console::ReadLine());
    if (input == 1)
    port.Write("R");
    else if (input == 2)
    port.Write("G");
    else if (input == 3)
    port.Write("Y");
}
return 0;
   }

///// Код Arduino //// Когда Arduino получит данные (1,2,3), он выполнит действие, активировав серводвигатель

 void setup()

 {
 Serial.begin(9600);
 pinMode(led, OUTPUT);
 pinMode(motor, OUTPUT);
 Servo1.attach(servoPin1);
 Servo2.attach(servoPin2);
 Servo1.write(0); 
 Servo2.write(0); 
 }
 void loop(){

 digitalWrite(motor,HIGH);

 if(Serial.available()) 

  {
  int data = Serial.read();
  if(data == 'R')
  {
  digitalWrite(led,HIGH);

  Servo1.write(90); 
  Servo2.write(0); 
  }
  else if (data == 'G')
  {
  digitalWrite(led,LOW);

 Servo1.write(0); 
 Servo2.write(90); 
 }
  else if (data == 'Y')
  {
  digitalWrite(led,HIGH);

  Servo1.write(0); 
  Servo2.write(0); 
  }

//// Код OpenCV //// Когда OpenCV обнаружит цвет объекта, он отправит номер (1,2,3) для обозначения цвета.1 = красный, 2 = зеленый, 3 = желтый

    if (dArea_Red > 1.15609e+07 && dArea_Red < 1.40663e+07) {
        RED = 1;
        std::cout << "apple type "<< RED; // Red apple
    }
    if (dArea_Green > 1.46945e+07 && dArea_Green < 1.6315e+07) {
        GREEN = 2;
        std::cout << "apple type " << GREEN; // Red apple
    }

    if (dArea_Red > 2.5421e+06) {
        YELLOW = 3;
        std::cout << "apple type " << YELLOW; // Red apple
    }
...