Последовательная связь между python и Arduino nano BLE sense 33 для запуска шести двигателей постоянного тока.
Я управляю шестью двигателями постоянного тока, изменяя их напряжение. Я вычислил напряжение, необходимое для каждого двигателя в питоне; теперь пришло время отправить это напряжение через Arduino Nano BLE Sense 33 для запуска шести двигателей постоянного тока через последовательную связь. Может ли кто-нибудь помочь мне понять его решение?
Python Code:
from time import sleep
import serial
import struct
ser = serial.Serial('COM7', 9600)
while True:
ser.write(struct.pack('BBBBBB',200,210,220,230,240,180)) ## PWM
ser.readline()
sleep(.5)
Arduino Code:
const int ledPin[6] = {4, 7, 8, A5, 13, A0};
const int ledPin1[6] = {2, 6, 9, A4, 12, A1};
const int ledPin2[6] = {3, 5, 10, A3, 11, A2};
int x;
void setup() {
Serial.begin(9600);
for (int k = 0; k < 6; k++) {
pinMode(ledPin[k], OUTPUT);
pinMode(ledPin1[k], OUTPUT);
pinMode(ledPin2[k], OUTPUT);
}
Serial.setTimeout(1);
}
void loop() {
for (int i = 0; i < 6; i++) {
while (!Serial.available());
x = Serial.readString().toInt();
dir(ledPin[i], x, ledPin1[i], ledPin2[i]);
}
}
float dir(int Pin, float x, int Lpin1, int Lpin2) {
analogWrite(Pin, abs(x));
if (x < 0) {
digitalWrite(Lpin1, HIGH);
digitalWrite(Lpin2, LOW);
}
else if (x > 0) {
digitalWrite(Lpin1, LOW);
digitalWrite(Lpin2, HIGH);
}
else {
digitalWrite(Lpin1, LOW);
digitalWrite(Lpin2, LOW);
}
}
@Vishal Naik, 👍-2
Обсуждение1 ответ
Лучший ответ:
▲ 0
Вот как должен выглядеть ваш Arduino loop()
:
void loop()
{
if(Serial.available() > 0)
{
for (int i = 0; i < 6; i++)
{
while (!Serial.available());
int x = Serial.read();
dir(ledPin[i], x, ledPin1[i], ledPin2[i]);
}
}
}
Не проверял.
,
@Fahad
Оно работает. Спасибо, @Vishal Naik
@VishalNaik Пожалуйста, примите это как ответ. Спасибо! :), @Fahad
Смотрите также:
- Связь Arduino master/slave с использованием RS485
- Serial Comm. проблема синхронизации между Arduino и Pyserial
- Почему IDE не может найти плату, несмотря на то, что она четко видна и выбрана?
- Устройство еще не подключено к сети при попытке подключить Arduino uno (с USB) к приложению Blynk
- Связь между двумя Arduino/MKR1000
- Протокол связи Arduino с python — помимо примера pyserial и Arduino
- Каков наилучший (самый быстрый и надежный) способ отправки сообщений между Python на ПК и Arduino через последовательный порт?
- Постоянное отключение ESP8266 SocketIOclient с Python WebServerSocket
что ты пробовал? ... что не удалось? ... последовательная связь не связана с управлением двигателем ... эти две функции полностью разделены, @jsotola
Я хочу отправить данные о напряжении с python на Arduino, @Vishal Naik
Используя последовательную связь, мы можем передавать данные с Python на Arduino. Здесь, в моей программе, эти данные — ШИМ. Как только он появится в Arduino, я смогу запустить двигатель постоянного тока., @Vishal Naik
Теперь станет ясно. Пожалуйста, прочитайте вопрос еще раз., @Vishal Naik
Здесь я определил напряжение, необходимое для двигателя постоянного тока (привода). Теперь я не могу управлять двигателем постоянного тока через Python, поэтому я передаю данные из Python в Arduino IDE через последовательную связь. Я знаю, как обращаться с одним двигателем постоянного тока, но здесь мне нужно запустить шесть двигателей постоянного тока. В питоне я вычислил напряжение для каждого мотора, так что оно в виде массива. Итак, теперь я хочу перенести этот массив из Python в Arduino IDE, где я могу запустить шесть двигателей постоянного тока. Надеюсь, теперь вы понимаете., @Vishal Naik
Код Python, который у вас есть, отправляет шесть байтов данных в двоичной форме как
b'\xc8\xd2\xdc\xe6\xf0\xb4'
, в то время как вы читаете его как строку (то есть серию ASCII) в вашем Ардуино. Вам нужно прочитать каждый байт, напримерbyte x = Serial.read();
, и обрабатывать все полученные данные., @hcheungРаботает только один двигатель постоянного тока, остальные не работают. Я думаю, это может быть потому, что они не получают значения ШИМ. Вы можете решить это?, @Vishal Naik
Спасибо @hcheung. Я постараюсь, и дам вам знать., @Vishal Naik
Извините, @jsotola, я невнимательно прочитал ваш пост. Я получил теперь ваш вопрос. Я уже разместил свой код. Он работает только для одного двигателя постоянного тока, а остальные не работают., @Vishal Naik