Запуск сервопривода при захвате изображения
python
opencv
Я пытаюсь создать программу, когда камера захватывает сервопривод, который будет непрерывно вращаться на 90 градусов, но мой код остановится в выводе на печать 2
. Любая идея для непрерывного запуска сервопривода?
Вот код
import numpy as np
import cv2
import serial
import struct
import time
ser = serial.Serial('COM11',9600)
x=0
while(True):
# Capture frame-by-frame
cap = cv2.VideoCapture(0)
#framerate = cap.get(5)
ret, frame = cap.read()
cap.release()
# Our operations on the frame come here
filename = 'C:/Users/DELVO/Desktop/tryTest/bruises/main/images' + str(int(x)) + ".png"
x=x+1
cv2.imwrite(filename, frame)
print(ser.write(x))
time.sleep(5)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
Код Arduino
#include <Servo.h>
int data_x = 0;
int data_y = 0;
int data[1];
Servo myservo_x;
Servo myservo_y;// создаем сервообъект для управления сервоприводом
// на большинстве плат можно создать двенадцать сервообъектов
int pos = 0; // переменная для хранения положения сервопривода
void setup() {
Serial.begin(9600);
myservo_x.attach(7); // присоединяем сервопривод к контакту 9 к объекту сервопривода
myservo_y.attach(10);
myservo_x.write(90);
myservo_y.write(90);
}
void loop() {
while (Serial.available() >= 2) {
// data_x=Serial.read();
// data_y=Serial .read();
for (int i = 0; i < 2; i++) {
data[i] = Serial.read();
}
myservo_x.write(data[0]);
myservo_y.write(data[1]);
Serial.println(data[0]);
Serial.println(data[1]);
}
}
@TrialAndError, 👍-1
Обсуждение1 ответ
▲ 0
является кодом Arduino, выдающим ошибку, потому что вы инициализировали данные массива с длиной 1 (int data[1];
), а в цикле for длина превышает выделенную длину строки : for (int i = 0; i < 2; i++) {
данные[i] = Serial.read();
,
@Ahmed Abdus Salam
Как это сделать? что мой сервопривод не остановится, если я не закрою программу., @TrialAndError
@TrialAndError Пробовали ли вы писать int data[2];
вместо int data[1];
? Это ваш первый шаг, так как это очевидная ошибка, @chrisl
Я понимаю. Спасибо., @TrialAndError
Смотрите также:
- Opencv считывает LCD и не обеспечивает последовательную связь с arduino
- Программирование Arduino с использованием Python, а не C/C ++
- Не удается связаться с ардуино с помощью python (Windows)
- Как настроить OpenCV с помощью Arduino?
- Последовательная связь Arduino с Python: отправка массива
- Построение графика на Python с использованием Tkinter Canvas
- Отправьте несколько значений int из Python в Arduino, используя pySerial
- Построение графика данных датчика Arduino в реальном времени на Processing, MatLab или Python
«код остановится в выводе на печать 2». Где именно находится «выход на печать 2»? Я не понимаю вашей проблемы. Пожалуйста, опишите его подробнее. Что на самом деле делает код и чего вы от него ожидали?, @chrisl
вы использовали мою программу? когда вывод 2 печатает сервопривод остановится, @TrialAndError
Нет, я не делал. Сначала мы пытаемся найти ошибку, глядя на код. Кроме того, у меня нет бесплатного пи с камерой, поэтому я не могу проверить ваш код. То есть вы имеете в виду, что когда «2» печатается на Pi, @chrisl
нет, нет, я просто использую arduino, в любом случае, моя главная проблема в том, что когда печатается 2, сервопривод останавливается., @TrialAndError