Useless Robotic Box вопросы по созданию

Фрезеры, лазеры, квадрокоптеры ...
bezman
Сообщения: 15
Зарегистрирован: 11 апр 2017, 10:44
Имя: Валерий
Поблагодарили: 1 раз

Useless Robotic Box вопросы по созданию

Непрочитанное сообщение bezman » 17 апр 2017, 09:09

Пытаюсь создать эту коробку. Вроде все прочел, код программы нашел...
Но столкнулся с физическим подключением. Что куда подключить.
Есть Arduino Nano 3.0
и 2 сервопривода SG90

Не знаю, можно ли дать ссылку на описание это проекта на другой сайт (в сполер положу). Там на примере МЕГЕ или УНО... В общем вопрос... Как и куда и какими проводами подключить 2 сервопривода.
И наверное еще - как на сервоприводах установить положение угла 0...

Anry777
Сообщения: 360
Зарегистрирован: 16 мар 2017, 14:59
Имя: Андрей
Благодарил (а): 3 раза
Поблагодарили: 9 раз

Re: Useless Robotic Box вопросы по созданию

Непрочитанное сообщение Anry777 » 17 апр 2017, 13:06

в 0 сервы сами встанут, т.к. это устройство с абсолютным позиционированием, а не относительным, как ШД в 3Д принтерах и CNC/
А Вам нужно рычаги установить на них, чтоб нулю соответствовали

Аватара пользователя
wolfs_SG
Сообщения: 354
Зарегистрирован: 09 янв 2016, 15:22
Имя: Sergey
Откуда: Кемерово
Благодарил (а): 2 раза
Поблагодарили: 41 раз

Re: Useless Robotic Box вопросы по созданию

Непрочитанное сообщение wolfs_SG » 17 апр 2017, 16:41

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

Аватара пользователя
wolfs_SG
Сообщения: 354
Зарегистрирован: 09 янв 2016, 15:22
Имя: Sergey
Откуда: Кемерово
Благодарил (а): 2 раза
Поблагодарили: 41 раз

Re: Useless Robotic Box вопросы по созданию

Непрочитанное сообщение wolfs_SG » 17 апр 2017, 16:52

По поводу подключения сервы... вот ведь картинка...
Соответственно у сервы красный - это плюс, черный - минус, а желтый (оранжевый) - соответственно сигнал...

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

Только блин где прошивка!!!

Изображение
Все в этой жизни прах и суета, кроме охоты.
Тургенев И.С.
---
Один неудачный день на охоте, гораздо лучше одного удачного на работе.

Аватара пользователя
AKDZG
Сообщения: 2201
Зарегистрирован: 17 окт 2015, 10:00
Имя: Алексей
Откуда: Иркутск
Благодарил (а): 21 раз
Поблагодарили: 76 раз

Re: Useless Robotic Box вопросы по созданию

Непрочитанное сообщение AKDZG » 17 апр 2017, 17:01

wolfs_SG писал(а):
17 апр 2017, 16:41
А я что-то прошивку саму не увидел...
Код URoboBox для Arduino (много ошибок, отправлен на доработку)
Ultimaker Original
Mendel90
СПринтер 233

Аватара пользователя
wolfs_SG
Сообщения: 354
Зарегистрирован: 09 янв 2016, 15:22
Имя: Sergey
Откуда: Кемерово
Благодарил (а): 2 раза
Поблагодарили: 41 раз

Re: Useless Robotic Box вопросы по созданию

Непрочитанное сообщение wolfs_SG » 17 апр 2017, 17:11

АГА...
Нашел такой вариант
Спойлер Основной код
#include <Servo.h>
Servo doorServo;
Servo handServo;

int switch_pin = 2; //set switch on pin 2

//motor variables
int motorThrottle=11;
int motorDirection = 13;
int motorBrake=8;

int pos = 0;
int selectedMove = 0; //move selector
int Testmove = 0; //test mode: set to move number to test only one selected move
//(set to Zero to run normally i.e: roundrobbin on amm moves)

void setup()
{
Serial.begin(9600);
pinMode(switch_pin, INPUT);
doorServo.attach(9); //set door servo on Pin 9 pwm
handServo.attach(10); //set hand servo on Pin 10 pwm
doorServo.write(80); //set door to hiding position
handServo.write(0); //set hand to hiding position

//Setup Channel B, (since Channel A is reserved by door and hand servos and can't ber used at same time)
pinMode(motorDirection, OUTPUT); //Initiates Motor Channel B pin
pinMode(motorBrake, OUTPUT); //Initiates Brake Channel B pin

}


void loop()
{
if (Testmove != 0) {
selectedMove = Testmove;
}

//if the switch is on, then move door and hand to switch it off...
if(digitalRead(switch_pin) == HIGH)
{

if (selectedMove > 10) { selectedMove = 0; } //when all moves are played, repeat the moves from beginning
// below are all the "Moves" i designed so far, each is a function that is written below in the code, execuse the names, abit strange? yes as some are written in arabic
if (selectedMove == 0) { switchoff(); }
else if (selectedMove == 1) { switchoff(); }
else if (selectedMove == 2) { switchoffbitaraddod(); }
else if (selectedMove == 3) { crazydoor(); }
else if (selectedMove == 4) { crazyslow(); }
else if (selectedMove == 5) { m7anika7anika(); }
else if (selectedMove == 6) { m3alla2(); }
else if (selectedMove == 7) { switchoff(); }
else if (selectedMove == 8) { matrix(); }
else if (selectedMove == 9) { sneak(); }
else if (selectedMove == 10) { zee7(); }

if (Testmove == 0) {
selectedMove++; //swith to next move if not in test mode
}

}
}



// Library of moves

// basic move
void switchoff()
{
//Moving door
for(pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}

//Moving hand
for(pos = 0; pos < 129; pos = 4)
{
handServo.write(pos);
delay(15);
}

//hiding hand
for(pos = 129; pos>=0; pos-=4)
{
handServo.write(pos);
delay(15);
}

//hiding door
for(pos = 155; pos>=80; pos-=3)
{
doorServo.write(pos);
delay(15);
}
}

// move 3: open and wait, then move hand and wait, then switch of and hide
void switchoffbitaraddod()
{
//Moving door
for(pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}
delay(800);
//Moving hand
for(pos = 0; pos < 100; pos = 4)
{
handServo.write(pos);
delay(15);
}
delay(1000);
for(pos = 100; pos < 129; pos = 4)
{
handServo.write(pos);
delay(15);
}

//hiding hand
for(pos = 129; pos>=0; pos-=5)
{
handServo.write(pos);
delay(15);
}

//hiding door
for(pos = 155; pos>=80; pos-=3)
{
doorServo.write(pos);
delay(15);


}

}

//move 4: open door then close it many times, wait, then quickly reoprn a nd switch off and hide.

void crazydoor()
{

//Moving door
for(pos = 80; pos < 125; pos = 3)
{
doorServo.write(pos);
delay(15);
}

//hiding door
for(pos = 125; pos>=80; pos-=5)
{
doorServo.write(pos);
delay(15);
}
//Moving door
for(pos = 80; pos < 110; pos = 3)
{
doorServo.write(pos);
delay(15);
}

//hiding door
for(pos = 110; pos>=80; pos-=15)
{
doorServo.write(pos);
delay(15);
}
delay(700);
//Moving door
for(pos = 80; pos < 125; pos = 3)
{
doorServo.write(pos);
delay(15);
}
delay(700);
//hiding door
for(pos = 125; pos>=80; pos-=5)
{
doorServo.write(pos);
delay(15);
}


//----of switch of----//
//Moving door
for(pos = 80; pos < 155; pos = 8)
{
doorServo.write(pos);
delay(15);
}

//Moving hand
for(pos = 0; pos < 129; pos = 3)
{
handServo.write(pos);
delay(15);
}

//hiding hand
for(pos = 129; pos>=0; pos-=3)
{
handServo.write(pos);
delay(15);
}

//hiding door
for(pos = 155; pos>=80; pos-=15)
{
doorServo.write(pos);
delay(15);
}

}


// move 5: open door, then move hand very slowly forward and back to hiding very slowly, then quickly close door
void crazyslow()
{

//Moving door
for(pos = 80; pos < 155; pos = 1)
{
doorServo.write(pos);
delay(30);
}

//Moving hand
for(pos = 0; pos < 129; pos = 1)
{
handServo.write(pos);
delay(30);
}

//hiding hand
for(pos = 129; pos>=0; pos-=1)
{
handServo.write(pos);
delay(30);
}

//hiding door
for(pos = 155; pos>=125; pos-=1)
{
doorServo.write(pos);
delay(30);
}
delay(100);
for(pos = 125; pos>=80; pos-=4)
{
doorServo.write(pos);
delay(15);
}


}

//move 6:

void m7anika7anika() {

//Moving door
for(pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}

//Moving hand
for(pos = 0; pos < 70; pos = 1)
{
handServo.write(pos);
delay(15);
}
delay(800);


//hiding door
for(pos = 155; pos>=130; pos-=3)
{
doorServo.write(pos);
delay(15);
}

//hiding door
for(pos = 130; pos < 155; pos =3)
{
doorServo.write(pos);
delay(15);
}
//hiding door
for(pos = 155; pos>=130; pos-=3)
{
doorServo.write(pos);
delay(15);
}
//hiding door
for(pos = 130; pos < 155; pos =3)
{
doorServo.write(pos);
delay(15);
}

handServo.write(40);
delay(1000);

//Moving hand
for(pos = 40; pos < 129; pos = 4)
{
handServo.write(pos);
delay(15);
}

//hiding hand
for(pos = 129; pos>=0; pos-=4)
{
handServo.write(pos);
delay(15);
}


for(pos = 120; pos>=80; pos -= 1)
{
doorServo.write(pos);
delay(15);
}



}

void m3alla2(){
//Moving door
for(pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}

//Moving hand
for(pos = 0; pos < 127; pos = 4)
{
handServo.write(pos);
delay(15);
}
//hiding door
for(pos = 155; pos>=130; pos-=3)
{
doorServo.write(pos);
delay(15);
}
delay(2000);

for(pos = 130; pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}

for(pos = 155; pos>=140; pos-=3)
{
doorServo.write(pos);
delay(15);
}
for(pos = 140; pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}
delay(500);
//hiding hand
for(pos = 127; pos>=0; pos-=4)
{
handServo.write(pos);
delay(15);
}

//hiding door
for(pos = 155; pos>=80; pos-=3)
{
doorServo.write(pos);
delay(15);
}

}

void matrix()
{

//Moving door
for(pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}

//Moving hand
for(pos = 0; pos < 80; pos = 4)
{
handServo.write(pos);
delay(15);
}

for(pos = 80; pos < 129; pos = 1)
{
handServo.write(pos);
delay(30);
}
delay(300);

for(pos = 129; pos>=0; pos-=4)
{
handServo.write(pos);
delay(10);
}

//hiding door
for(pos = 155; pos>=80; pos-=3)
{
doorServo.write(pos);
delay(15);
}

}

void sneak()
{
//Moving door
for(pos = 80; pos < 130; pos = 1)
{
doorServo.write(pos);
delay(30);
}
delay(2000);

//Moving hand
for(pos = 0; pos < 40; pos = 1)
{
handServo.write(pos);
delay(30);
}

delay(500);

for(pos = 130; pos < 155; pos = 4)
{
doorServo.write(pos);
delay(15);
}
delay(100);

for(pos = 40; pos < 90; pos = 4)
{
handServo.write(pos);
delay(15);
}
delay(500);
//hiding hand
for(pos = 90; pos>=70; pos-=4)
{
handServo.write(pos);
delay(15);
}
delay(100);
for(pos = 70; pos < 90; pos = 4)
{

handServo.write(pos);
delay(15);
}
delay(100);
for(pos = 90; pos>=70; pos-=4)
{
handServo.write(pos);
delay(15);
}
delay(100);

for(pos = 70; pos < 129; pos = 4)
{

handServo.write(pos);
delay(15);
}

for(pos = 129; pos>=0; pos-=4)
{
handServo.write(pos);
delay(15);
}
//hiding door
for(pos = 155; pos>=80; pos-=3)
{
doorServo.write(pos);
delay(15);
}
}


void zee7()
{
//Moving door
for(pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}
delay(2000);
//forward @ half speed to the left
digitalWrite(motorDirection, LOW); //Establishes RIGHT direction of Channel B
digitalWrite(motorBrake, LOW); //Disengage the Brake for Channel B
analogWrite(motorThrottle, 100); //Spins the motor on Channel B at full speed
delay(300);
digitalWrite(motorBrake, HIGH); //Eengage the Brake for Channel B
delay(2000);

//backward @ half speed to the right
digitalWrite(motorDirection, HIGH); //Establishes LEFT direction of Channel B
digitalWrite(motorBrake, LOW); //Disengage the Brake for Channel B
analogWrite(motorThrottle, 100); //Spins the motor on Channel B at half speed
delay(300);
digitalWrite(motorBrake, HIGH); //Eengage the Brake for Channel B
delay(1000);

//Moving hand
for(pos = 0; pos < 129; pos = 4)
{
handServo.write(pos);
delay(15);
}

//hiding hand
for(pos = 129; pos>=0; pos-=4)
{
handServo.write(pos);
delay(15);
}

//hiding door
for(pos = 155; pos>=80; pos-=3)
{
doorServo.write(pos);
delay(15);
}
}
И модернизация
Спойлер Использование "глаз"
#include
Servo doorServo;
Servo handServo;

unsigned long TimerA,TimerB; //timer for the movement detection routine
int switch_pin = 2; //set switch on pin 2

//motor variables
int motorThrottle=11;
int motorDirection = 13;
int motorBrake=8;

//Distance Variables
int motionPin = 3; //motion sensor pin on analog 0
int lastDist = 0; //to remember last distance
int currentDist = 0;
int thresh = 200; //Threshold for Movement (set it such that you get the desired sensetivity of motion detection)


int pos = 0;
int selectedMove = 0; //move selector
int Testmove = 0; //test mode: set to move number to test only one selected move
//(set to Zero to run normally i.e: roundrobbin on all moves)
boolean randomize = true; // if true, the box will do movers randomly, if set to false then the moves will be done sequencially from 1 to 10


void setup()
{
Serial.begin(9600);
pinMode(switch_pin, INPUT);
doorServo.attach(9); //set door servo on Pin 9 pwm
handServo.attach(10); //set hand servo on Pin 10 pwm
doorServo.write(80); //set door to hiding position
handServo.write(0); //set hand to hiding position
//Setup Channel B, since Channel A is reserved by door and hand servos and can't ber used at same time
pinMode(motorDirection, OUTPUT); //Initiates Motor Channel B pin
pinMode(motorBrake, OUTPUT); //Initiates Brake Channel B pin

}


void loop()
{

//if the switch is on, then move door and hand to switch it off...
if(digitalRead(switch_pin) == HIGH)
{

if (Testmove == 0)
{

if(randomize == false)
{
if (selectedMove > 10)
{
selectedMove = 0; //when all moves are played, repeat the moves from beginning
}
}
else
{
selectedMove = random(11);
}
}
else
{
selectedMove = Testmove;
}
Serial.println(selectedMove);
if (selectedMove == 0) { switchoff(); }
else if (selectedMove == 1) { switchoff(); }
else if (selectedMove == 2) { switchoffbitaraddod(); }
else if (selectedMove == 3) { crazydoor(); }
else if (selectedMove == 4) { crazyslow(); }
else if (selectedMove == 5) { m7anika7anika(); }
else if (selectedMove == 6) { m3alla2(); }
else if (selectedMove == 7) { switchoff(); }
else if (selectedMove == 8) { matrix(); }
else if (selectedMove == 9) { sneak(); }
else if (selectedMove == 10) { zee7(); }

if (Testmove == 0 && randomize == false) {
selectedMove++; //switch to next move if not in test mode
}

}
}

// Library of moves

// basic move
void switchoff()
{
//Moving door
for(pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}

//Moving hand
for(pos = 0; pos < 129; pos = 4)
{
handServo.write(pos);
delay(15);
}

//hiding hand
for(pos = 129; pos>=0; pos-=4)
{
handServo.write(pos);
delay(15);
}

//hiding door
for(pos = 155; pos>=80; pos-=3)
{
doorServo.write(pos);
delay(15);
}
}

// move 3: open and wait, then move hand and wait, then switch of and hide
void switchoffbitaraddod()
{
//Moving door
for(pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}
delay(800);
//Moving hand
for(pos = 0; pos < 100; pos = 4)
{
handServo.write(pos);
delay(15);
}
delay(1000);
for(pos = 100; pos < 129; pos = 4)
{
handServo.write(pos);
delay(15);
}

//hiding hand
for(pos = 129; pos>=0; pos-=5)
{
handServo.write(pos);
delay(15);
}

//hiding door
for(pos = 155; pos>=80; pos-=3)
{
doorServo.write(pos);
delay(15);


}

}

//move 4: open door then close it many times, wait, then quickly reoprn a nd switch off and hide.

void crazydoor()
{

//Moving door
for(pos = 80; pos < 125; pos = 3)
{
doorServo.write(pos);
delay(15);
}

//hiding door
for(pos = 125; pos>=80; pos-=5)
{
doorServo.write(pos);
delay(15);
}
//Moving door
for(pos = 80; pos < 110; pos = 3)
{
doorServo.write(pos);
delay(15);
}

//hiding door
for(pos = 110; pos>=80; pos-=15)
{
doorServo.write(pos);
delay(15);
}
delay(700);
//Moving door
for(pos = 80; pos < 125; pos = 3)
{
doorServo.write(pos);
delay(15);
}
delay(700);
//hiding door
for(pos = 125; pos>=80; pos-=5)
{
doorServo.write(pos);
delay(15);
}


//----of switch of----//
//Moving door
for(pos = 80; pos < 155; pos = 8)
{
doorServo.write(pos);
delay(15);
}

//Moving hand
for(pos = 0; pos < 129; pos = 3)
{
handServo.write(pos);
delay(15);
}

//hiding hand
for(pos = 129; pos>=0; pos-=3)
{
handServo.write(pos);
delay(15);
}

//hiding door
for(pos = 155; pos>=80; pos-=15)
{
doorServo.write(pos);
delay(15);
}

}


// move 5: open door, then move hand very slowly forward and back to hiding very slowly, then quickly close door
void crazyslow()
{

//Moving door
for(pos = 80; pos < 155; pos = 1)
{
doorServo.write(pos);
delay(30);
}

//Moving hand
for(pos = 0; pos < 129; pos = 1)
{
handServo.write(pos);
delay(30);
}

//hiding hand
for(pos = 129; pos>=0; pos-=1)
{
handServo.write(pos);
delay(30);
}

//hiding door
for(pos = 155; pos>=125; pos-=1)
{
doorServo.write(pos);
delay(30);
}
delay(100);
for(pos = 125; pos>=80; pos-=4)
{
doorServo.write(pos);
delay(15);
}


}

//move 6:

void m7anika7anika() {

//Moving door
for(pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}

//Moving hand
for(pos = 0; pos < 70; pos = 1)
{
handServo.write(pos);
delay(15);
}
delay(800);


//hiding door
for(pos = 155; pos>=130; pos-=3)
{
doorServo.write(pos);
delay(15);
}

//hiding door
for(pos = 130; pos < 155; pos =3)
{
doorServo.write(pos);
delay(15);
}
//hiding door
for(pos = 155; pos>=130; pos-=3)
{
doorServo.write(pos);
delay(15);
}
//hiding door
for(pos = 130; pos < 155; pos =3)
{
doorServo.write(pos);
delay(15);
}

handServo.write(40);
delay(1000);

//Moving hand
for(pos = 40; pos < 129; pos = 4)
{
handServo.write(pos);
delay(15);
}

//hiding hand
for(pos = 129; pos>=0; pos-=4)
{
handServo.write(pos);
delay(15);
}


for(pos = 120; pos>=80; pos -= 1)
{
doorServo.write(pos);
delay(15);
}



}

void m3alla2(){
//Moving door
for(pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}

//Moving hand
for(pos = 0; pos < 127; pos = 4)
{
handServo.write(pos);
delay(15);
}
//hiding door
for(pos = 155; pos>=130; pos-=3)
{
doorServo.write(pos);
delay(15);
}
delay(2000);

for(pos = 130; pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}

for(pos = 155; pos>=140; pos-=3)
{
doorServo.write(pos);
delay(15);
}
for(pos = 140; pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}
delay(500);
//hiding hand
for(pos = 127; pos>=0; pos-=4)
{
handServo.write(pos);
delay(15);
}

//hiding door
for(pos = 155; pos>=80; pos-=3)
{
doorServo.write(pos);
delay(15);
}

}

void matrix()
{

//Moving door
for(pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}

//Moving hand
for(pos = 0; pos < 80; pos = 4)
{
handServo.write(pos);
delay(15);
}

for(pos = 80; pos < 129; pos = 1)
{
handServo.write(pos);
delay(30);
}
delay(300);

for(pos = 129; pos>=0; pos-=4)
{
handServo.write(pos);
delay(10);
}

//hiding door
for(pos = 155; pos>=80; pos-=3)
{
doorServo.write(pos);
delay(15);
}

}

void sneak()
{
//Moving door
for(pos = 80; pos < 130; pos = 1)
{
doorServo.write(pos);
delay(30);
}
delay(2000);

//Moving hand
for(pos = 0; pos < 40; pos = 1)
{
handServo.write(pos);
delay(30);
}

delay(500);

for(pos = 130; pos < 155; pos = 4)
{
doorServo.write(pos);
delay(15);
}
delay(100);

for(pos = 40; pos < 90; pos = 4)
{
handServo.write(pos);
delay(15);
}
delay(500);
//hiding hand
for(pos = 90; pos>=70; pos-=4)
{
handServo.write(pos);
delay(15);
}
delay(100);
for(pos = 70; pos < 90; pos = 4)
{

handServo.write(pos);
delay(15);
}
delay(100);
for(pos = 90; pos>=70; pos-=4)
{
handServo.write(pos);
delay(15);
}
delay(100);

for(pos = 70; pos < 129; pos = 4)
{

handServo.write(pos);
delay(15);
}

for(pos = 129; pos>=0; pos-=4)
{
handServo.write(pos);
delay(15);
}
//hiding door
for(pos = 155; pos>=80; pos-=3)
{
doorServo.write(pos);
delay(15);
}
}

//this move will open the door and wait for movement, if detected near the switch,
//the box will move first to the Right, and then to the Left, and finally the hand moves and turns off the switch
void zee7()
{

//open door
for(pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}
delay(1200); //wait to stabilize sensor readings after opening the door

// set the timer and read the sensor
// wait for movement that exceeds threshold or if timer expires (5 sec),
lastDist= analogRead(motionPin);
TimerA= millis();

while(millis()-TimerA <= 5000)
{
currentDist = analogRead(motionPin);

//Does the current distance deviate from the last distance by more than the threshold?
//if yes, then move box to the right
if ((currentDist > lastDist thresh || currentDist < lastDist - thresh) || currentDist > 300)
{

//forward @ half speed to the left (choose the speed and the delay
//(i.e delay(300) according to you box and battery voltage such that the movement throw is desirable)
digitalWrite(motorDirection, LOW); //Establishes RIGHT direction of Channel A
digitalWrite(motorBrake, LOW); //Disengage the Brake for Channel B
analogWrite(motorThrottle, 100); //Spins the motor on Channel B at full speed
delay(300);
digitalWrite(motorBrake, HIGH); //Eengage the Brake for Channel B
break;
}
lastDist = currentDist;
}

// set the timer and read the sensor
// wait for movement that exceeds threshold or if timer expires (5 sec),
delay(1200); //wait to stabilize sensor readings after opening the door
lastDist= analogRead(motionPin);
TimerB= millis();
while(millis()-TimerB <= 5000)
{
currentDist = analogRead(motionPin);
//did the box already move to the right and the current distance deviate from the last distance by more than the threshold?
//If yes, then move to the Left
if ((currentDist > lastDist thresh || currentDist < lastDist - thresh) || currentDist > 300)
{

//backward @ half speed to the right (choose the speed and the delay
//(i.e delay(300) according to you box and battery voltage such that the movement throw is desirable)
digitalWrite(motorDirection, HIGH); //Establishes LEFT direction of Channel B
digitalWrite(motorBrake, LOW); //Disengage the Brake for Channel B
analogWrite(motorThrottle, 100); //Spins the motor on Channel B at half speed
delay(300);
digitalWrite(motorBrake, HIGH); //Eengage the Brake for Channel B
break;
}

lastDist = currentDist;

}
delay(100);
//Moving hand
for(pos = 0; pos < 130; pos = 4)
{
handServo.write(pos);
delay(15);
}

//hiding hand
for(pos = 130; pos>=0; pos-=4)
{
handServo.write(pos);
delay(15);
}

//hiding door
for(pos = 155; pos>=80; pos-=3)
{
doorServo.write(pos);
delay(15);
}
}
Нашел это вот тут
Все в этой жизни прах и суета, кроме охоты.
Тургенев И.С.
---
Один неудачный день на охоте, гораздо лучше одного удачного на работе.

Аватара пользователя
wolfs_SG
Сообщения: 354
Зарегистрирован: 09 янв 2016, 15:22
Имя: Sergey
Откуда: Кемерово
Благодарил (а): 2 раза
Поблагодарили: 41 раз

Re: Useless Robotic Box вопросы по созданию

Непрочитанное сообщение wolfs_SG » 17 апр 2017, 17:12

Надо бы собрать тестовую схемку и протестить... если будет работать, то обязательно буду собирать
Все в этой жизни прах и суета, кроме охоты.
Тургенев И.С.
---
Один неудачный день на охоте, гораздо лучше одного удачного на работе.

bezman
Сообщения: 15
Зарегистрирован: 11 апр 2017, 10:44
Имя: Валерий
Поблагодарили: 1 раз

Re: Useless Robotic Box вопросы по созданию

Непрочитанное сообщение bezman » 18 апр 2017, 10:49

wolfs_SG писал(а):
17 апр 2017, 16:52
По поводу подключения сервы... вот ведь картинка...
Соответственно у сервы красный - это плюс, черный - минус, а желтый (оранжевый) - соответственно сигнал...

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

Только блин где прошивка!!!

Изображение
по картинке - это UNO а у меня NANO. в принципе уже разобрался... везде подключают на 9 и 10 пины. (кстати, почему только они?)

прошивка? ну может просто это не так называется... может это просто код программы на ардуино...

Аватара пользователя
wolfs_SG
Сообщения: 354
Зарегистрирован: 09 янв 2016, 15:22
Имя: Sergey
Откуда: Кемерово
Благодарил (а): 2 раза
Поблагодарили: 41 раз

Re: Useless Robotic Box вопросы по созданию

Непрочитанное сообщение wolfs_SG » 18 апр 2017, 12:02

bezman писал(а):
18 апр 2017, 10:49
по картинке - это UNO а у меня NANO
Я вообще не вижу ни какой разницы... и сам хочу использовать обычную ATmega 328P... по питанию поставлю dc-dc и запитаю от 3-х баночного лития... вообще "вечная" будет :)
Это я к тому, что не к чему тут вообще ардуина как таковая... можно использовать 1 м/с и все... хотя та же 328 мега используется на Arduino Pro Mini...
Дело "вкуса"... что хотите, то и ставьте... а в прошивке можно все исправить... если исходники есть...
Все в этой жизни прах и суета, кроме охоты.
Тургенев И.С.
---
Один неудачный день на охоте, гораздо лучше одного удачного на работе.

Ответить

Вернуться в «Другие наши интересные проекты»

Яндекс.Метрика