Помогите новичку
- Войдите на сайт для отправки комментариев
люди добрые помогите объединить 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
4 еще дальномер есть опечатка
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 или выключения питания
}
А сами-то Вы пробовали их объединить? Покажите свой объединённый скетч, расскажите в чём там проблема.
А сами-то Вы пробовали их объединить?
я запретил.
*нужно где-то в консерватории подправить - запрещать del ... или в пропасть сбрасывать их del.
сижу пробую, по совместительству учусь работать с ардуино,а так с чпу станком работаю и электроникой, появилось жение окунуться в программирование)
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 переменные, но ошибку выдает, помогите с ошибкой. что то не так в использовании функций или расположение функций не то, как я понимаю просто соединять часть это шаманство, но хотелось бы начать с простого
Нашел))))) все заработало
пины не назначил
Строчки
#define SPEED_1 5 // скорость для двигателя
и три следующие define из скетча для сервопривода потеряли. Вот и ругается что они не объявленные.
спасибо! Так теперь робот делает все по очереди сначала серво, потом говорит, а дальше едет, и все в loop т.е. как я понимаю delay если в коде убрать, то он будет функциональней или необходимо условие для совместной работы
Ну, вот, видите, глаза боятся - руки делают, Главное начать!
С Вас
три булькавечная благодарность за мой пост №3 :))))с меня полянка!))))) да это точно
Всё таки "волшебные пендели" делюают свою работу.
так это азы, но чтобы дойти без советов до нужного это не просто) сейчас хочу переделать под работу без задержек, а то с delay далеко не уедешь
с delay далеко не уедешь
Почему? Включить мотор "вперёд", закрыть прерывания и запустить delay(100500) - будет ехать пока в стенку не упрётся :)))
"робот камикадзе")...... лучше будет если он сделает все сразу, так даже страшнее будет ))))), а потом дальномер на него и уже будет начальный интелект, подъехал к объекту определил препятствие и как запел)