stty ubuntu настройка

gecsogen
Offline
Зарегистрирован: 16.03.2018

сделал простейший таймер - перезагружает роутер при отсутствии пинга, перезагружает компьютер при зависании. bash скрипт посылает в ардуину символы echo "#1" > /dev/ttyUSB0 - пинг есть, echo "#0" > /dev/ttyUSB0 - пинг остутствует и просто echo "7" > /dev/ttyUSB0 время от времени (как сигнал "я живой").  sudo chmod a+rw /dev/ttyUSB0 - прописано. Всё работает (из bash, или из коммандной строки) только при условии, что загружена ARDUINO IDE с включенным монитором порта. Как только выключаешь монитор порта - всё ломается, данные из убунты не доходят. stty настраивал уже всеми возможными способами. Через minicom всё работает даже при выключенном мониторе порта, через echo повторюсь работает только при включенном мониторе порта.

Шляпа какая-то, третий день победить не могу. Подскажите что делать, если  кто в теме. 

Скетч прилагается:

// 16-03
int resetPinComp = 2;
int resetPinRouter = 3;
 
int comOK=12; //зеленый горит при любом прин. символе
int pingOK=11; // желтый светодиод, горит если пинг ОК 
int pingNO=10; //красный если пинга нет, принимается символ #0, включается реле, выключается роутер на 2 сек.
// #1 это пинг ОК                  
 
char incoming;
boolean bol=false;
unsigned long time1;
unsigned long time2;
unsigned long time21;
 
 
void setup() {
  Serial.begin(9600);
  pinMode(resetPinRouter, OUTPUT);
  pinMode(resetPinComp, OUTPUT);
  pinMode(pingOK, OUTPUT);
  pinMode(pingNO, OUTPUT);
  pinMode(comOK, OUTPUT);
 
}
 
 
void loop() {
 
  if (Serial.available() > 0) {
    incoming = Serial.read();
    Serial.println(incoming);
    digitalWrite(comOK, HIGH); // включаем зеленый светодиод
    delay(100);  
    digitalWrite(comOK,LOW); // мигнем
    delay(100);  
    digitalWrite(comOK, HIGH); // включаем зеленый светодиод
 
    time1 = millis();
 
    if (incoming == '1' && bol==true)  { //если получен сигнал #+1- пинг Ок
      digitalWrite(pingOK, HIGH); // включаем желтый светодиод
      delay(100);
      digitalWrite(pingOK,LOW);
      delay(100);
      digitalWrite(pingOK, HIGH);
      delay(100);
      digitalWrite(pingOK, LOW);
      delay(100); 
      digitalWrite(pingOK, HIGH);
      digitalWrite(pingNO, LOW); // выкл. красный светодиод
    }
 
    if(incoming == '0' && bol==true){ // включаем реле (выключаем роутер)
      digitalWrite(resetPinRouter, HIGH);  // включаем реле, разрывающее питание роутера
      delay(2000);
      digitalWrite(resetPinRouter, LOW);  // выключаем реле, подаём питание на роутер
      digitalWrite(pingNO, HIGH);  // включаем всетодиод "Ping NO" (красный)
      digitalWrite(pingOK, LOW);  // выключаем желтый светодиод
      digitalWrite(comOK, LOW);
    }
    if (incoming == '#'){
      bol=true;
    }
    else {
      bol=false;
    }  //конец проверки входящих символов
  } // if serial aviable
 
    time2=millis();
 
  // или time21=mills()-time1;
  time21=time2-time1;
  //// удалить
  //Serial.println(time21, DEC);
  //// удалить
 
 
  if ( time21 >= 300000 && time21 < 4294667295 ) { //если в теч. 5 минут ничего на сом порт не пришло
    digitalWrite(resetPinComp, HIGH);
    delay(300);
    digitalWrite(resetPinComp, LOW);
    digitalWrite(pingOK,LOW); // выкл желтый светодиод
    digitalWrite(comOK, LOW); // выключаем диод "связь с компом"
    digitalWrite(pingNO, HIGH);
    //Serial.println(time21, DEC); // убрать
    // обновляем счётчик time1 иначе постоянно будет дергать reset, 
    //или постояно через 5 минут будет перезагружать комп;
    time1=millis();      
  }
 
  delay(50);
}
 
gecsogen
Offline
Зарегистрирован: 16.03.2018

Видимо подключился к коллективному бессознательному.

http://arduino.ru/forum/apparatnye-voprosy/pitanie-arduino-perezagruzka-...

припаял электролитический конденсатор между землей и ресетом (советуют 10мкФ, припаял на ускоре какой нашел - на 470мкФ, таки работает как надо)

тему можно закрывать, не отругал никто и на том спасибо :)

Logik
Offline
Зарегистрирован: 05.08.2014

просто не успели ((

ven-til
Offline
Зарегистрирован: 13.02.2018

Logik пишет:

просто не успели ((

Еще можем постараться.