Странные наводки

Beer100
Offline
Зарегистрирован: 12.04.2011

Вот с чем столкнулся:

В коробке 10х20 см установлена ардуино нано и тумблер, на включение которого жужжат пару сервомашинок. 

Столкнулся с очень странным поведением. Ардуино встает на паузу, пока я не поднесу руку к коробке на расстояние в 10-20 см. Т.е. присутствует странный эффект емкостного "возбуждения". Выполнение программы встает на паузу, пока я не поднесу руку.

Что за баг? Как с этим бороться?

svm
Offline
Зарегистрирован: 06.11.2016

Beer100 пишет:

Вот с чем столкнулся:

В коробке 10х20 см установлена ардуино нано и тумблер, на включение которого жужжат пару сервомашинок. 

Столкнулся с очень странным поведением. Ардуино встает на паузу, пока я не поднесу руку к коробке на расстояние в 10-20 см. Т.е. присутствует странный эффект емкостного "возбуждения". Выполнение программы встает на паузу, пока я не поднесу руку.

Что за баг? Как с этим бороться?

Исключить все висящие в воздухе провода длиннее 10 см подключенные к входам. Или использовать внешние подтягивающие или стягивающие резисторы небольшого номинала 1-10 КОм.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Beer100 пишет:

Вот с чем столкнулся:

В коробке 10х20 см установлена ардуино нано и тумблер, на включение которого жужжат пару сервомашинок. 

Столкнулся с очень странным поведением. Ардуино встает на паузу, пока я не поднесу руку к коробке на расстояние в 10-20 см. Т.е. присутствует странный эффект емкостного "возбуждения". Выполнение программы встает на паузу, пока я не поднесу руку.

Что за баг? Как с этим бороться?

Это странное поведение. Что-то Вы неправильно сделали. Что именно, обсуждать без схемы и скетча бесполезно.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

andriano пишет:
обсуждать без схемы и скетча бесполезно.
И без фото

Beer100
Offline
Зарегистрирован: 12.04.2011

#include <Servo.h>
Servo lidservo;
Servo armservo; 
Servo flag;

int switchpin = 3;

int action = 1;

int pos = 0;

void setup() {
pinMode(switchpin,INPUT);
lidservo.attach(1);
armservo.attach(2);
flag.attach(4);

// Servo Default Starting Position

armservo.write(50);
flag.write(50);
lidservo.write(90);
}

void loop() {

// Action Selection starting with 1

  if (digitalRead(switchpin) == HIGH)
  {
  if (action > 8) {
    action = 1;
  }  
    if (action == 1) {
    action1();
    }
    else if (action == 2) {
    action2();
    }
    else if (action == 3) {
    action3();
    }
    else if (action == 4) {
    action4();
    }
    else if (action == 5) {
    action5();
    }
    else if (action == 6) {
    action6();
    }
    else if (action == 7) {
    action7();
    }
    else if (action == 8) {
    action8();
    }

    action += 1;
    
  }
}

//The Following are actions that are chosen chronologically

void action1() {
  lidservo.write(20);
  delay(1000);
  armservo.write(177);
  delay(500); 
  armservo.write(50);
  delay(1000);
  lidservo.write(90);
  delay(1000);
}

void action2() {
  lidservo.write(50);
  delay(100);
  armservo.write(177);
  delay(250);
  armservo.write(50);
  delay(100);
  lidservo.write(90);
}

void action3() {
    for(pos = 90; pos > 20; pos -=1)
  {
    lidservo.write(pos);
    delay(50);
  }
  armservo.write(177);
  delay(250);
  armservo.write(50);
  delay(100);
  lidservo.write(90);
}

void action4() {
  delay(250);
  lidservo.write(50);
  delay(100);
  armservo.write(177);
  delay(2500);
for(pos = 177; pos > 90; pos -=1)
  {
    armservo.write(pos);
    delay(50);
  }
  lidservo.write(90);
  armservo.write(50);
}

void action5() {
  lidservo.write(50);
  delay(500);
  lidservo.write(90);
  delay(500);
  lidservo.write(50);
  delay(500);
  lidservo.write(90);
  delay(500);
  lidservo.write(50);
  delay(500);
  lidservo.write(90);
  delay(2500);
  lidservo.write(50);
  delay(100);
  armservo.write(177);
  delay(250);
  armservo.write(50);
  delay(100);
  lidservo.write(90);
}

void action6() {
  lidservo.write(50);
  delay(100);
  armservo.write(155);
  delay(250);
  armservo.write(50);
  delay(100);
  lidservo.write(90);
  delay(250);
  lidservo.write(50);
  delay(100);
  armservo.write(155);
  delay(250);
  armservo.write(50);
  delay(100);
  lidservo.write(90);
  delay(250);
  lidservo.write(50);
  delay(100);
  armservo.write(155);
  delay(250);
  armservo.write(50);
  delay(100);
  lidservo.write(90);
  delay(250);  
  lidservo.write(50);
  delay(100);
  armservo.write(177);
  delay(250);
  armservo.write(50);
  delay(100);
  lidservo.write(90);
}

void action7() {
    for(pos = 90; pos > 20; pos -=2)
  {
    lidservo.write(pos);
    delay(50);
  }
for(pos = 50; pos < 145; pos +=2)
  {
    armservo.write(pos);
    delay(100);
  }
  armservo.write(177);
for(pos = 177; pos > 50; pos -=2)
  {
    armservo.write(pos);
    delay(100);
  }
for(pos = 20; pos < 90; pos +=2)
  {
    lidservo.write(pos);
    delay(50);
  }
  lidservo.write(90);
}

void action8() {
  if (digitalRead(switchpin) == HIGH)
  {
    delay(1000);
      for(pos = 90; pos > 20; pos -=2)
  {
    lidservo.write(pos);
    delay(50);
  }
      for(pos = 50; pos < 175; pos +=10)
  {
    flag.write(pos);
    delay(50);
  }
  delay(250);
      for(pos = 175; pos > 125; pos -=10)
  {
    flag.write(pos);
    delay(50);
  }
        for(pos = 125; pos < 175; pos +=10)
  {
    flag.write(pos);
    delay(50);
  }
        for(pos = 175; pos > 125; pos -=10)
  {
    flag.write(pos);
    delay(50);
  }
        for(pos = 125; pos < 175; pos +=10)
  {
    flag.write(pos);
    delay(50);
  }
        for(pos = 175; pos > 125; pos -=10)
  {
    flag.write(pos);
    delay(50);
  }
        for(pos = 125; pos < 175; pos +=10)
  {
    flag.write(pos);
    delay(50);
  }
        for(pos = 175; pos > 125; pos -=10)
  {
    flag.write(pos);
    delay(50);
  }
        for(pos = 125; pos < 175; pos +=10)
  {
    flag.write(pos);
    delay(50);
  }
  delay(250);
        for(pos = 175; pos > 50; pos -=10)
  {
    flag.write(pos);
    delay(50);
  }
   for(pos = 20; pos < 90; pos +=2)
  {
    lidservo.write(pos);
    delay(50);
  }
  delay(2000);
      lidservo.write(50);
  delay(100);
  armservo.write(177);
  delay(250);
  armservo.write(50);
  delay(100);
  lidservo.write(90);
  }

}
Beer100
Offline
Зарегистрирован: 12.04.2011

Провода сократил. Ни чего не изменилось.

Beer100
Offline
Зарегистрирован: 12.04.2011

Там ещё стоит платка заряда лития и dc-dc с 3,7 до 5В

AndreyD
AndreyD аватар
Offline
Зарегистрирован: 07.10.2018

У Вас в коробке крыса, она чуйствует, когда вы руку подносите.

А код нужно по правилам вставлять.

Beer100
Offline
Зарегистрирован: 12.04.2011

Извините за нарушение правил. ))

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

тумблер как подключен? похоже нет подтяжки 3 пина никуда.

Beer100
Offline
Зарегистрирован: 12.04.2011

3 пин ардуины?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Beer100 пишет:

Извините за нарушение правил. ))

Так вставьте правильно. Так его никто читать не будет. Или скажут, что ошибка в строке №ХЗ, т.к. номеров строк нет.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Beer100 пишет:

3 пин ардуины?

Вам в посте #2 сказали, что нужна схема. Схемы нет. Отсюда и такие разговоры. Делайте, что Вам говорят, если Вам правда помощь нужна!

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

Beer100 пишет:

3 пин ардуины?

ну если 

int switchpin = 3;

относится к ардуине, то - да!

Beer100
Offline
Зарегистрирован: 12.04.2011

Верно, тумблер подключен без подтяжки! Попробую исправить это.

Beer100
Offline
Зарегистрирован: 12.04.2011

Подтянул 3-ий вывод. Результат нулевой....

Прошу еще вашей помощи!

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

Beer100 пишет:

Подтянул 3-ий вывод.

куда? и как(чем)?

Beer100
Offline
Зарегистрирован: 12.04.2011

10 К к плюсу

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

ну так код то  в этом случае надо менять..

Beer100
Offline
Зарегистрирован: 12.04.2011

Прошу в этом вопросе помощи!

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015
if (digitalRead(switchpin) == LOW)

 

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

как выключатель то подключен?

Beer100
Offline
Зарегистрирован: 12.04.2011

Один контакт на минус, второй на 3 пин. К 3 пину 10К от плюса. 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

xDriver пишет:

как выключатель то подключен?

Ещё в #2 схему просили. ТС поплёвывает с высокой колокольни :-(

vvadim
Offline
Зарегистрирован: 23.05.2012

нда, бедный народец пошёл, мало у кого хрустальный шар есть. а ещё реже два.....

Beer100
Offline
Зарегистрирован: 12.04.2011

Схема: Ардуино нано, три сервы на трех пинах (1,2,4) и тумблер на 3 пине. 

К 3 пину резистор на 10К от плюса.

Извиняюсь, но ставить и изучать программу, что бы нарисовать три элемента но очень хочется...

nik182
Offline
Зарегистрирован: 04.05.2015

Нарисуй на бумажке и фото приложи к сообщению. А вообще проверь контакты, особенно землю. Если все точки земли соединить одним проводом, то подобных чудес не бывает.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Beer100 пишет:

Извиняюсь, но ставить и изучать программу, что бы нарисовать три элемента но очень хочется...

Что, Paint'а нету?

Словесное описание не заменяет схему. Ну а если "не очень хочется", зачем вообще было писать на форум?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Если Вам

Beer100 пишет:
не очень хочется...
решать Вашу проблему, то нам она вообще как-то пофиг. Трахайтесь сами.

Beer100
Offline
Зарегистрирован: 12.04.2011

Всем спасибо за советы! Развел + и - заново. Подправил подтяжку на 3-ем пине. Все заработало.

b707
Offline
Зарегистрирован: 26.05.2017

Beer100 пишет:

 Все заработало.

это поаод, тем более в пятницу

Beer100
Offline
Зарегистрирован: 12.04.2011

Согласен. Остальным тоже Привет!

Жаль, что тут многие себя позиционируют исключительными. Но и им тоже спасибо! )))