2015-04-30 5 views
1

Я пытался найти способ отправки последовательных команд с моего ПК (Windows 7) на Arduino Uno R3. Я работал над этой простой программой, где вы должны отправить простой «1» через USB-кабель, чтобы включить встроенный светодиод. Мой код Arduino должен работать (что я знаю, но я обязательно загружу его). Я пытался отправить эту команду с помощью Python и pySerial, но я не могу заставить pySerial работать. Также я попытался использовать CMD, но кажется, что CMD зависает, когда я ввожу свою команду (ECHO 1> COM3 BAUD: 9600). Я администратор моего компьютера.отправка последовательных команд в arduino

Это мой Arduino кодирования

int var = 0; 
int LEDPin = 13; 
int val = 0; 

void setup() { 
    Serial.begin(9600); 
    pinMode(LEDPin, OUTPUT); 
} 

void loop() { 
    if (Serial.available()>0){ 
    val = Serial.read(); 
} 

if (val == 1){ 
    digitalWrite(LEDPin, HIGH); 
} 

digitalRead(LEDPin); 
if (LEDPin==HIGH){ 
    var ++; 
    delay (1000); 
    if(var==10){ 
    digitalWrite(LEDPin,LOW); 
    var = 0; 
    val = 0; 
    } 

} 
} 

И короткая программа Python У меня есть :)

import serial 
ser = serial.Serial('COM3', 9600, timeout=0) 
while 1: 
    var = 1 
    ser.write(var) 
    delay(12000) 

С наилучшими пожеланиями Майкл Ведель.

ответ

0

для гарантии того, что Arduino действительно подключен к COM3?

Чтобы проверить серийное соединение вручную, вы можете использовать, например, Putty. С его помощью вы можете подключиться к нужному последовательному порту и отправить команду вручную. И чтобы проверить, получил ли Arduino его, вы можете добавить Serial.println(val); сразу после val = Serial.read();, при этом Arduino должен отправить обратно на серийные все персонажи, которые он получает.

0

Работает ли код, когда вы вводите «1» в последовательный монитор в среде Arduino? Если это так, проверьте COM-порт. На моем ПК (также Windows 7) COM3 никогда не Порт Arduino, поскольку он используется внутренне для чего-то другого.

Кстати, все после инструкции digitalRead() ничего не делает, поскольку вы сравниваете LEDpin (который объявлен как 13) с HIGH (который определен как 1). Я думаю, вы хотите увидеть, является ли вывод digitalRead HIGH, но я не уверен, что это сработает, так как pin объявлен как OUTPUT. Вам было бы намного лучше поставить эту логику в разделе (val == 1).

+0

Не работает отправка «1» из программы arduino. Ардуино получает данные (RX blink), но светодиод остается выключенным. –

+0

Кроме того, я сделал так, как вы сказали, и переместил часть из "var ++;" up после "if (val == 1) {" :) –

0

просто сохранить этот код, как .bat и убедитесь, что вы используете ком 6. Этот код позволяет вводить и отправляет команду к последовательному порту на 9600bpm

mode com6:9600,N,8,1 
@echo off 
:start 
cls 
Set /p commands="enter command:" 
echo|set /p= %commands% >com6 
goto start 

Теперь вы должны прочитать серийное использование это в Ардуино

Serial.read(); 
+0

Добавление пояснения для кода было бы полезным, и это привело бы к лучшему ответу. – AfroThundr

Смежные вопросы