Отправка значений с помощью pyserial не работает, если на Arduino Due также есть распознавание.
Я использую Arduino Due, чтобы создать цикл обратной связи с использованием Python, но, похоже, это не работает. Код Python, который я использую, следующий:
from serial import Serial
board = Serial('COM11',9600)
board.write('100'.encode()) # 100 взят в качестве примера
На самом деле, если я просто использую Arduino для измерения напряжения датчика, все получится. То же самое, если напряжение подается без измерения датчиком. Но, как только я поставил оба одновременно, датчик в порядке, но Ардуино ничего не читает. Однако если я отправлю напряжение не с помощью Python, а с помощью Arduino IDE, все будет в порядке.
Кажется, что Arduino не может выполнять две операции одновременно, но это странно. Вот мой код Arduino:
int const controller = DAC0; // Устанавливаем выходной контакт контроллера
int const sensor = A1; // Устанавливаем контакт датчика
double MeanNumber = 500;
void setup() {
Serial.begin(9600);
pinMode(controller, OUTPUT);
analogReadResolution(12);
}
double get_voltage(int Measure)
{
double voltage;
voltage = Measure * 3.3 / 4095.0;
return voltage;
}
void loop() {
double Measure = 0;
double voltage;
for (int i = 0; i < int(MeanNumber); i++) // Реализуем среднее значение каждого значения MeanNumber
{
Measure = Measure + analogRead(sensor) / MeanNumber;
delay(1);
}
// Отправляем усредненную меру в Python
voltage = get_voltage(Measure);
Serial.println(voltage,4);
// Получаем обратную связь от Python
if (Serial.available() > 0)
{// Проверьте, доступны ли данные
String receivedData = Serial.readString(); // Считаем значение напряжения из байтов в строку
float value = receivedData.toFloat(); // Преобразуем напряжение в число с плавающей запятой
analogWrite(controller,value); // Отправляем сигнал через Arduino
}
}
У вас есть представление о том, что не так с моей работой?
@celestin, 👍1
Обсуждение1 ответ
Открытие последовательного соединения приведет к сбросу Arduino. Код Python может делать это при создании порта. Добавьте строку Serial.print("Starting") в функцию настройки, чтобы проверить, происходит ли это.
- Построение графика на Python с использованием Tkinter Canvas
- Связь между Python и Arduino ненадежна
- Протокол связи Arduino с python — помимо примера pyserial и Arduino
- Выход устанавливается на «низкий», когда новая переменная в буфере
- Вопросы по сервопрограмме
- Программирование Arduino с использованием Python, а не C/C ++
- Не удается связаться с ардуино с помощью python (Windows)
- Arduino Due vs Mega 2560
Всякий раз, когда Python открывает порт, Arduino сбрасывается. Обычно помогает сразу после открытия порта в Python заснуть на пару секунд (time.sleep(3))., @Fahad