Помогите новичку

danil778no
Offline
Зарегистрирован: 10.01.2017

люди добрые помогите объединить 3 скетча. есть робот на ногах,  в самом основании(2ступни) есть по двигателю, есть дальномер и сервопривод? который находиться в корпусе от его поворота движуться руки, также есть мр3 модуль, необходимо чтобы при приближении к объекту он начинал говорить и останавливался, а в остальное время двигался на двигателях. т. е своего рода шагал и вращалась голова с сервоприводом, на котором у.д датчик у меня есть скетчи на него которые уже работают, а объединить их не получается 

#include <Servo.h> // подключаем библиотеку для работы с сервоприводом



Servo servo1; // объявляем переменную servo типа "servo1"



void setup() // процедура setup



{

servo1.attach(9); // привязываем сервопривод к аналоговому выходу 11

}



void loop() // процедура loop



{



servo1.write(0); // ставим угол поворота под 0



delay(2000); // ждем 2 секунды



servo1.write(90); // ставим угол поворота под 90



delay(2000); // ждем 2 секунды



servo1.write(180); // ставим угол поворота под 180



delay(2000); // ждем 2 секунды



}

СЕРВОПРИВОД

 

// Моторы подключаются к клеммам M1+, M1-, M2+, M2-

// Motor shield использует четыре контакта 4, 5, 6, 7 для управления моторами 

// 4 и 7 — для направления, 5 и 6 — для скорости

#define SPEED_1 5 // скорость для двигателя 

#define DIR_1 4 //направление движение двигателя 



#define SPEED_2 6 // скорость для двигателя 

#define DIR_2 7 // направление движение двигателя 





void setup() 

{

// Настраивает выводы платы 4, 5, 6, 7 на вывод сигналов 

for(int i = 4; i < 8; i++) 

pinMode(i, OUTPUT); 





void loop() 



// Для коллекторного мотора можно выбрать значение скорости от 0 до 255.

// Покрутим в течении секунды M1 на средней скорости сначала в одну сторону...

analogWrite(SPEED_1, 200);

digitalWrite(DIR_1, LOW);

analogWrite(SPEED_2, 200);

digitalWrite(DIR_2, LOW);

delay(1000);



// ... а затем в другую.

analogWrite(SPEED_1, 200);

digitalWrite(DIR_1, HIGH);

analogWrite(SPEED_2, 200);

digitalWrite(DIR_2, HIGH);

delay(1000);



// После чего остановим мотор 1



// Теперь он будет крутится до нажатия на Reset или выключения питания



}

ДВИГАТЕЛИ 

 

#include <SoftwareSerial.h>

#include <DFPlayer_Mini_Mp3.h>

void setup () {

Serial.begin (9600);

mp3_set_serial (Serial); //set Serial for DFPlayer-mini mp3 module 

delay (100);

mp3_set_volume (15);

delay (100);

mp3_set_EQ (3); // Эквалайзер 0~5 (0 - Normal, 1 - Pop, 2 - Rock, 3 - Jazz, 4 - Classic, 5 - Bass)

delay (100);

mp3_play (); // запускаем трек 

delay (100);

mp3_random_play (); // Даем команду проигрывать треки в случайной последовательности

}

void loop () { 

}

 

МР3

danil778no
Offline
Зарегистрирован: 10.01.2017

4 еще дальномер есть опечатка 

danil778no
Offline
Зарегистрирован: 10.01.2017

 
#include <Servo.h> // подключаем библиотеку для работы с сервоприводом
Servo servo1; // объявляем переменную servo типа "servo1"
void setup() // процедура setup
{
  servo1.attach(9); // привязываем сервопривод к аналоговому выходу 11
}
void loop() // процедура loop
{
servo1.write(0); // ставим угол поворота под 0
delay(2000); // ждем 2 секунды
servo1.write(90); // ставим угол поворота под 90
delay(2000); // ждем 2 секунды
servo1.write(180); // ставим угол поворота под 180
delay(2000); // ждем 2 секун
}
[/code]

void loop() 



// Для коллекторного мотора можно выбрать значение скорости от 0 до 255.

// Покрутим в течении секунды M1 на средней скорости сначала в одну сторону...

analogWrite(SPEED_1, 200);

digitalWrite(DIR_1, LOW);

analogWrite(SPEED_2, 200);

digitalWrite(DIR_2, LOW);

delay(1000);

// ... а затем в другую.

analogWrite(SPEED_1, 200);

digitalWrite(DIR_1, HIGH);

analogWrite(SPEED_2, 200);

digitalWrite(DIR_2, HIGH);

delay(1000);

// После чего остановим мотор 1

// Теперь он будет крутится до нажатия на Reset или выключения питания

}

 

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

А сами-то Вы пробовали их объединить? Покажите свой объединённый скетч, расскажите в чём там проблема.

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

ЕвгенийП пишет:

А сами-то Вы пробовали их объединить?

я запретил.

*нужно где-то в консерватории подправить - запрещать del ... или в пропасть сбрасывать их del. 

danil778no
Offline
Зарегистрирован: 10.01.2017

сижу пробую, по совместительству учусь работать с ардуино,а так с чпу станком работаю и электроникой, появилось жение окунуться в программирование)

danil778no
Offline
Зарегистрирован: 10.01.2017
[code]
#include <SoftwareSerial.h>    // 
#include <DFPlayer_Mini_Mp3.h> // библиотека на мр3 модуль 
#include <Servo.h> // подключаем библиотеку для работы с сервоприводом
Servo servo1; // объявляем переменную servo типа "servo1"
void setup ()
{
 servo1.attach(9);
 for(int i = 4; i < 8; i++) 
 pinMode(i, OUTPUT); // Настраивает выводы платы 4, 5, 6, 7 на вывод сигналов
 Serial.begin (9600);
 mp3_set_serial (Serial); //set Serial for DFPlayer-mini mp3 module 
 delay (100);
 mp3_set_volume (15);
 delay (100);
 mp3_set_EQ (3); // Эквалайзер 0~5 (0 - Normal, 1 - Pop, 2 - Rock, 3 - Jazz, 4 - Classic, 5 - Bass)
 delay (100);
 mp3_play (); // запускаем трек 
 delay (100);
 mp3_random_play (); // Даем команду проигрывать треки в случайной последовательности 
}
void loop()
{
 servo1.write(0); // ставим угол поворота под 0
delay(2000); // ждем 2 секунды
servo1.write(90); // ставим угол поворота под 90
delay(2000); // ждем 2 секунды
servo1.write(180); // ставим угол поворота под 180
delay(2000); // ждем 2 секун

// Для коллекторного мотора можно выбрать значение скорости от 0 до 255.
// Покрутим в течении секунды M1 на средней скорости сначала в одну сторону...
digitalWrite(SPEED_1, 200);
digitalWrite(DIR_1, LOW);
analogWrite(SPEED_2, 200);
digitalWrite(DIR_2, LOW);
delay(1000);

// ... а затем в другую.
analogWrite(SPEED_1, 200);
digitalWrite(DIR_1, HIGH);
analogWrite(SPEED_2, 200);
digitalWrite(DIR_2, HIGH);
delay(1000);

// После чего остановим мотор 1
}

[/code]

 

danil778no
Offline
Зарегистрирован: 10.01.2017

Arduino: 1.6.8 (Windows 7), Плата:"Arduino/Genuino Uno"

C:\Users\AC55~1.STA\AppData\Local\Temp\untitled1422888243.tmp\sketch_jan10a\sketch_jan10a.ino: In function 'void loop()':

sketch_jan10a:32: error: 'SPEED_1' was not declared in this scope

digitalWrite(SPEED_1, 200);

^ sketch_jan10a:33: error: 'DIR_1' was not declared in this scope

digitalWrite(DIR_1, LOW);

^ sketch_jan10a:34: error: 'SPEED_2' was not declared in this scope

analogWrite(SPEED_2, 200);

^ sketch_jan10a:35: error: 'DIR_2' was not declared in this scope

digitalWrite(DIR_2, LOW);

^exit status 1 'SPEED_1' was not declared in this scope Этот отчёт будет иметь больше информации с включенной опцией Файл -> Настройки -> "Показать подробный вывод во время компиляции"

Объединил, вроде бы по правилам синтаксиса. 1 библиотеки 2 назначаются пины 3 переменные, но ошибку выдает, помогите с ошибкой. что то не так в использовании функций или расположение функций не то, как я понимаю просто соединять часть это шаманство, но хотелось бы начать с простого

danil778no
Offline
Зарегистрирован: 10.01.2017

Нашел))))) все заработало

пины не назначил 

[code]
#include <SoftwareSerial.h>    // 
#include <DFPlayer_Mini_Mp3.h> // библиотека на мр3 модуль 
#include <Servo.h> // подключаем библиотеку для работы с сервоприводом
#define SPEED_1      5 
#define DIR_1        4
 #define SPEED_2     6
#define DIR_2        7
Servo servo1; // объявляем переменную servo типа "servo1"
void setup ()
{
 servo1.attach(9);
 for(int i = 4; i < 8; i++) 
 pinMode(i, OUTPUT); // Настраивает выводы платы 4, 5, 6, 7 на вывод сигналов
 Serial.begin (9600);
 mp3_set_serial (Serial); //set Serial for DFPlayer-mini mp3 module 
 delay (100);
 mp3_set_volume (15);
 delay (100);
 mp3_set_EQ (3); // Эквалайзер 0~5 (0 - Normal, 1 - Pop, 2 - Rock, 3 - Jazz, 4 - Classic, 5 - Bass)
 delay (100);
 mp3_play (); // запускаем трек 
 delay (100);
 mp3_random_play (); // Даем команду проигрывать треки в случайной последовательности 
}
void loop()
{
 servo1.write(0); // ставим угол поворота под 0
delay(2000); // ждем 2 секунды
servo1.write(90); // ставим угол поворота под 90
delay(2000); // ждем 2 секунды
servo1.write(180); // ставим угол поворота под 180
delay(2000); // ждем 2 секун

// Для коллекторного мотора можно выбрать значение скорости от 0 до 255.
// Покрутим в течении секунды M1 на средней скорости сначала в одну сторону...
digitalWrite(SPEED_1, 200);
digitalWrite(DIR_1, LOW);
analogWrite(SPEED_2, 200);
digitalWrite(DIR_2, LOW);
delay(1000);

// ... а затем в другую.
analogWrite(SPEED_1, 200);
digitalWrite(DIR_1, HIGH);
analogWrite(SPEED_2, 200);
digitalWrite(DIR_2, HIGH);
delay(1000);

// После чего остановим мотор 1
}

[/code]

 

 

kalapanga
Offline
Зарегистрирован: 23.10.2016

Строчки

#define SPEED_1 5 // скорость для двигателя

и три следующие define из скетча для сервопривода потеряли. Вот и ругается что они не объявленные.

danil778no
Offline
Зарегистрирован: 10.01.2017

спасибо! Так теперь робот делает все по очереди сначала серво, потом говорит, а дальше едет, и все в loop т.е. как я понимаю delay если в коде убрать, то он будет функциональней или необходимо условие для совместной работы 

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

Ну, вот, видите, глаза боятся - руки делают, Главное начать!
С Вас три булька вечная благодарность за мой пост №3 :))))

danil778no
Offline
Зарегистрирован: 10.01.2017

с меня полянка!))))) да это точно 

gena
Offline
Зарегистрирован: 04.11.2012

Всё таки "волшебные пендели" делюают свою работу.

danil778no
Offline
Зарегистрирован: 10.01.2017

так это азы, но чтобы дойти без советов до нужного это не просто) сейчас хочу переделать под работу без задержек, а то с delay далеко не уедешь

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

danil778no пишет:

 с delay далеко не уедешь

Почему? Включить мотор "вперёд", закрыть прерывания и запустить delay(100500) - будет ехать пока в стенку не упрётся :)))

danil778no
Offline
Зарегистрирован: 10.01.2017

"робот камикадзе")...... лучше будет если он сделает все сразу, так даже страшнее будет ))))), а потом дальномер на него и уже будет начальный интелект, подъехал к объекту определил препятствие и как запел)