Непонятная остановка посреди выполнения функции
- Войдите на сайт для отправки комментариев
Ср, 18/05/2016 - 10:11
Проблема в том что он подключен к сотовму(android) через блютуз(hc-06). Все работает на ура . только вот при нажатии на кнопку на смартфоне платформа выполняет команду полторы секунды а потом прекращает, как это исправить.
это код ардуино шасси на 2 моторах с драйвером l298n.
int IN1 = 3; //input1 подключен к выводу
int IN2 = 2;
int IN3 = 4; //input1 подключен к выводу
int IN4 = 5;
int a = 0;
void setup() {
Serial.begin(9600);
pinMode (IN1, OUTPUT);
pinMode (IN2, OUTPUT);
pinMode (IN3, OUTPUT);
pinMode (IN4, OUTPUT);
}
void loop()
{
if (Serial.available())
{ a = Serial.parseInt();
if (a==1) { //назад
digitalWrite (IN2, HIGH);
digitalWrite (IN1, LOW);
digitalWrite (IN4, HIGH);
digitalWrite (IN3, LOW);
}
if (a==2) { //вперед
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
}
if (a==3) { //ну и типо такого поворты все дела
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
}
if (a==4) {
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
}
if (a==5) {
digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
}
if (a==6) {
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);
}
if (a==0) { //типо стоп
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
}
}
}
http://arduino.ua/ru/prog/Serial/ParseInt
Если в течение одной секунды не найдено ни одного целого числа, то, по умолчанию, функция вернет значение 0. Величина таймаута задается функцией Serial.setTimeout().
видать у тебя в сериал не приходят числа инт :)
и кстати вроде это только на меге работает...
А как сделать на uno. чтоб при нажатии выполнялось пока не отпустишь кнопку.
Все нашаел способ, надо вставить Serial.setTimeout(//тут чем больше тем лучше);
Все нашаел способ, надо вставить Serial.setTimeout(//тут чем больше тем лучше);
не правильно..... у тебя вообще все остановится...
if (Serial.available()) { a = Serial.parseInt(); } switch (a) { case 1: digitalWrite (IN2, HIGH); digitalWrite (IN1, LOW); digitalWrite (IN4, HIGH); digitalWrite (IN3, LOW); break case 2: //..... //..... }