Управление движением моторчика в пк
- Войдите на сайт для отправки комментариев
Пнд, 18/01/2016 - 21:53
Всем здрасьте, я новенький, написал код под ардуино (УНО), написал код на c#(работаю в VS 2015) для управления движения двигателя(в данный момент там стоят 2 светодиода).
Нужна помощь, после нажатия кнопки "открыть жалюзи"- проходит большое кол-во времени, пока ардуино включит 12 ножку, так-же точно с другой кнопкой "закрть жалюзи"(13 нога), а светодиод на 11 ноге работает вечно(для откладки)
void setup() { pinMode(13, OUTPUT); pinMode(12, OUTPUT); pinMode(11, OUTPUT); Serial.begin(9600); } void loop() { int x; x == Serial.read(); //switch(x); if (Serial.available() == 30) { digitalWrite(13, HIGH); Serial.print("Shutters offer"); delay(10000); Serial.print("Shutters open"); digitalWrite(13, LOW); Serial.print(x); // x = x - 2; } else if (Serial.available() == 31) { digitalWrite(12, HIGH); Serial.print("Shutters closed"); delay(10000); Serial.print("Shutters closed"); digitalWrite(13, LOW); Serial.print(x); // x = x - 4; } else { digitalWrite(11, HIGH); delay(1000); digitalWrite(11, LOW); Serial.print(x); delay(5000); } } код с vs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using static System.IO.Ports.SerialPort; using System.IO; using System.IO.Ports; namespace WindowsFormsApplication3 { public partial class Form1 : Form { //int p; //private object port; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { SerialPort port = new SerialPort("COM3", 4800); port.Open(); port.WriteLine("0"); port.Close(); } private void button2_Click(object sender, EventArgs e) { SerialPort port = new SerialPort("COM3", 9600); port.Open(); port.WriteLine("1"); port.Close(); } private void button3_Click(object sender, EventArgs e) { SerialPort port = new SerialPort("COM3", 9600); port.Open(); port.WriteLine("2"); port.Close(); } } } Что можно сделать?
Избавься от delay()
Избавься от delay()
Я все понимаю, Но где? какая строка? (там просто 4 штуки..)
Очевидно - везде.
Убрал, толку нольЗаметил,на светодиоде RX появилась задержка
Логика не понятна. Всегда исполняется этот код.
и если за 6 сек задержки ты успеваешь засунуть в последовательный порт 31 или 32 символа, то в следующем цикле выполнится
if (Serial.available() == 30) или
else if (Serial.available() == 31)
Сдается мне ты не понимаешь что делает Serial.available();
Логика не понятна. Всегда исполняется этот код.
и если за 6 сек задержки ты успеваешь засунуть в последовательный порт 31 или 32 символа, то в следующем цикле выполнится
if (Serial.available() == 30) или
else if (Serial.available() == 31)
Сдается мне ты не понимаешь что делает Serial.available();
я с ардуино знаком недавно., почитав всякие статейки, нашел Serial.available();
немного переписал код
я все равно не понимаю логику. Какой смысл ты вкладываешь в эту строчку:
if
(
Serial
.available() == 30)
В моем понимании, если в буфере есть 30 символов (любых), то выполнить что-то. В последнем коде в буфере никогда не будет ни одного символа, т.к. они будут забираться быстрее, чем поступать.
Возможно ты имел в виду if (x == 0x30)....
я все равно не понимаю логику. Какой смысл ты вкладываешь в эту строчку:
if
(
Serial
.available() == 30)
В моем понимании, если в буфере есть 30 символов (любых), то выполнить что-то. В последнем коде в буфере никогда не будет ни одного символа, т.к. они будут забираться быстрее, чем поступать.
Возможно ты имел в виду if (x == 0x30)....
я со студии отсылаю числа (от 0 до 3), почитав узнал про ASCII, и решил попробовать..
попробовал другой код(нашел в сети и оптимизировал под себя) проблемма осталась проблеммой.. проходит большое время перед тем, как моторчик переключится.. (или вообще не работает)
Я не вижу проблем в этом коде, надеюсь выходы и Serial сконфигурены в setup()...
сумел сделать, поправил код на VS, вместо цифр идут теперь буквы... в этом и была проблемма(а может я криворукий человек..) Спасибо всем,кто отписался