#1 2015-09-15 13:51:24

wrdarduino
Учасник
Зареєстрований: 2015-09-15
Повідомлень: 1

Нужна помощь!

Почему плохо работает схема:

5e56074ed9ffa038ffdda8b6e0bf5910.png

И зависает USB порт с Arduino когда использую с код:
(Я уже просто заеб.........)

int btnSost=LOW;
char send_mess;
byte flag;

void setup() {
  pinMode(12, OUTPUT);
  Serial.begin(9600);
  Serial.setTimeout(250);
  pinMode(2,INPUT);
  digitalWrite(12, HIGH);   
}

void loop() {
 if (flag==0){  
  btnSost=digitalRead(2);
  send_mess='0';
  if (btnSost==HIGH){send_mess='1';}
 }else{
       Serial.println(send_mess);
       flag=0;
 }
 delay(600); 
}

void serialEvent(){
 if (Serial.available()>0){
  char sread=Serial.read();
  
  switch (sread){
   case '6':   //openCash
               send_mess='0';
               if (btnSost==HIGH){send_mess='1';}  
               break;
   case '7':   //init;
               send_mess='3';
               break;
   case '8':   //open 
               if (btnSost==HIGH){
                 digitalWrite (12,LOW);
                 delay(200);//open rele
                 digitalWrite (12,HIGH); 
                 //delay(300);
                 send_mess='9';
               } else {send_mess='2';} 
               break;                        
  } 
  flag=1;
 }
}

ПОМОГИТЕ!!!!!!!!!!!!!!

Неактивний

#2 2015-09-15 14:41:29

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 878

Re: Нужна помощь!

а что вы вообще хотите сделать?

Неактивний

#3 2015-09-15 16:10:15

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Нужна помощь!

скорее всего у Вас что то очень сильно погружает питание, ищите "сопли" на плате
вместо реле поставьте лампочку, посмотрите что будет

Неактивний

#4 2015-09-15 17:14:47

nnn
Гість

Re: Нужна помощь!

с лампочкой работает Ок (12в).
Как убрать перегрузку питания если источник и так уже внешний с запасом (12в 5А)

#5 2015-09-15 20:38:24

iakoff
Учасник
Зареєстрований: 2014-10-24
Повідомлень: 5

Re: Нужна помощь!

delay(200) в сериал евенте ставить не нужно.
serialEvent должен выполнятся как можно быстрее, и сатвить там 200мс задержку нельзя.
Если нужно долго что то обрабатывать после serialEvent, то лучше в нем взвести флаг и потом в лупе по флагу обработать.

Неактивний

#6 2015-09-15 22:00:38

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Нужна помощь!

какая маркировка на relay?
по хорошему datasheet покажите  и номера контактов которые вы используете

Неактивний

#7 2015-09-16 09:55:52

nnn
Гість

Re: Нужна помощь!

digitalWrite (12,LOW);
delay(200);//open rele
digitalWrite (12,HIGH);

чтобы инд. катушка сработала!

распиновка по реле правильная

#8 2015-09-16 09:58:58

nnn
Гість

Re: Нужна помощь!

Спасибо! Попробую убрать delay из serial через флаг в Loop().
Позже отпишусь!
P.S. iakoff - Ваш ответ "нов", моя благодарность, надеюсь сработает!

#9 2015-09-16 12:31:23

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Нужна помощь!

void serialEvent()  прерывание?
а delay  наверное где то ожидает прерывания от таймера? ))))
а так  как ардуино не умеет выполнять прерывание в  прерывании, то благополучно и отваливается usb
если так - то рабочая версия smile

Неактивний

#10 2015-09-16 14:34:52

nnn
Гість

Re: Нужна помощь!

Да мои бока! smile)))))

Спасибо переписал код без delay в SerialEvent ВСЕ РАБОТАЕТ!!!!!!!!!!!
Попробую подогнать код ...

iakoff, скидуй "новую почту" вышлю ПИВО!!! Моя благодарность!

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму