Странноватенькая работа SerialPort-а

elfar
Offline
Зарегистрирован: 12.01.2018

Прошу помощи у знающих: подскажите кто может знает какие тонкости?

Исходные дынне:

Arduino (тестировал как Uno, так и Nano) - конечно же китайские клоны, локальный компьютер соединенный по USB c Arduino, Web сервер Denver с которого идет посылка в Serial Port с помощью SerialPHP и нативным способом записи fwrite

у меня есть скетч:

void setup() {
  Serial.begin(9600);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  led3();
}
void led3(){
    int sz = 100;
    digitalWrite(4, 1);
    delay(sz);
    digitalWrite(4, 0); 
    delay(sz);
}
void led2(){
    int sz = 100;
    digitalWrite(3, 1);
    delay(sz);
    digitalWrite(3, 0); 
    delay(sz);
}
void loop() {

}
void serialEvent(){
  while (Serial.available()){
    int ch = Serial.read();
    led3();led3();
  }
}

После загрузки скетча при отправки символов из PHP при помощи SerialPHP, да и просто методом

fwrite($file, chr(116));

все работает.

Но! стоит выключить(а потом включить) питание Arduino или открыть монитор порта, адекватная работа заканчивается. И при посылке данных через serial port происходит насколько я понимаю перезагрузка Arduino и спасает только загрузка скетча заново, после этого все начинает работать нормально

подскажите кто может знает какие тонкости?

sadman41
Offline
Зарегистрирован: 19.10.2016

А неадекватная - это какая? Ардуина песни поёт и со стола падает?

elfar
Offline
Зарегистрирован: 12.01.2018

ардуина не моргает светодидом в положенном месте

void serialEvent(){
  while (Serial.available()){
    int ch = Serial.read();
    led3();led3();
  }
}

в то время когда после загрузки скетча, срабатывает и моргает

andriano
andriano аватар
Онлайн
Зарегистрирован: 20.06.2015

elfar, я думаю, то, что Вы написали в serialEvent, должно быть в loop. А led2 можете вообще выкинуть.