2 функции в 1 скетче, происходит конфликт
- Войдите на сайт для отправки комментариев
ДОБРЫЙ ДЕНЬ!
Естественно новичек, ничего не понимаю в программировании, но методом тыка - получается, но не все.
описание: сервопривод 90, ir приемник, микрофон. (hw 484)
Нужно; сделано:
1. Поворачивать серво-привод на 90 градусов, по команде с пульта. скетч нашел, работает как надо.
#include <Servo.h>
#include <IRremote.h>
Servo tnk;
unsigned long Value1 = 0xFF02FD;
unsigned long Value2 = 0xFFA857;
int RECV_PIN = 11; //вход ИК приемника
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
irrecv.enableIRIn(); // включить приемник
tnk.attach(10); // серво подключён на цифровой вход 10 (pin 10)
}
void loop() {
if (irrecv.decode(&results)) {
irrecv.resume();
}
if(results.value == Value1) tnk.write(160); //крутим серву например (0 градусов)
if(results.value == Value2) tnk.write(90);
}
2. Решил усложнить, чтобы работало еще от увеличения звука, то есть есть пищалка при ее звуке серва выполняет 1-ю команду. -- Отдельный скет также работает на ура.
#include <Servo.h>
Servo servo;
int threshold = 700;
int volume;
void setup()
{
Serial.begin(9600); // For debugging
pinMode(A0, INPUT); // вход
pinMode(10, OUTPUT);// выход
servo.attach (10); // моторчик из порта 10
}
void loop()
{
volume = analogRead(A0);
Serial.println(volume);
//delay(1000);
if(volume>=threshold){
servo.write (160); // если звук громкий то поворот на 90 градусов
delay ( 100);
}
else{
servo.write (90) ; // если нет звука то находится в нуле
delay ( 1000);
}
}
Решил объединить две команды в одну. То есть, чтобы серво привод работал одинаково и при команде с пульта, или самостоятельно при появлении звука.
но без знания программирования
у меня получается, что при нажатии на пульт сервопривод начинает постоянно срабатывать без остановки.
вот код.
#include <Servo.h>
#include <IRremote.h>
Servo servo;
int threshold = 700;
int volume;
Servo tnk;
unsigned long Value1 = 0xFF02FD;
unsigned long Value2 = 0xFFA857;
int RECV_PIN = 11; //вход ИК приемника
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600); // For debugging
pinMode(A0, INPUT); // вход
pinMode(10, OUTPUT);// выход
servo.attach (10); // моторчик из порта 10
irrecv.enableIRIn(); // включить приемник
tnk.attach(10); // серво подключён на цифровой вход 10 (pin 10)
}
void loop()
{
volume = analogRead(A0);
Serial.println(volume);
//delay(1000);
if(volume>=threshold){
servo.write (160); // если звук громкий то поворот на 160 градусов
delay ( 100);
}
else{
servo.write (90) ; // если нет звука то находится в нуле
delay ( 1000);
}
{
if (irrecv.decode(&results)) {
irrecv.resume();
}
if(results.value == Value1) tnk.write(160); //крутим серву например (0 градусов)
if(results.value == Value2) tnk.write(90);
}
}
//===========================
Что делать и куда копать не понимаю, поэтому обращаюсь к широкой публике. заранее спасибо!
Что делать и куда копать не понимаю, поэтому обращаюсь к широкой публике. заранее спасибо!
У тебя в одном скетче объект «сервопривода» называется Servo, в другом tnk. А должно быть одно имя, объявленное вначале скетча.
Спасибо, Да, пробовал так и так, вот исправил, сейчас работает вроде кое-как, через раз, думаю все в задержках.
заменил еще направление вращения у микрофона,
вот как то так
#include <Servo.h> #include <IRremote.h> Servo tnk; int threshold = 700; int volume; unsigned long Value1 = 0xFF02FD; unsigned long Value2 = 0xFFA857; int RECV_PIN = 11; //вход ИК приемника IRrecv irrecv(RECV_PIN); decode_results results; void setup() { irrecv.enableIRIn(); // включить приемник tnk.attach (10); // моторчик из порта 10 pinMode(A0, INPUT); // вход pinMode(10, OUTPUT);// выход Serial.begin(9600); // For debugging tnk.attach(10); // серво подключён на цифровой вход 10 (pin 10) } void loop() { volume = analogRead(A0); Serial.println(volume); //delay(1000); if(volume>=threshold){ tnk.write (90); // если звук громкий то поворот на 160 градусов delay ( 10); } else{ tnk.write (160) ; // если нет звука то находится в нуле delay (50); } { if (irrecv.decode(&results)) { irrecv.resume(); } if(results.value == Value1) tnk.write(160); //крутим серву например (0 градусов) if(results.value == Value2) tnk.write(90); delay(500); } } //===========================Время показало: В случае, если микрофон подключен, то работает только одна кнопка на пульте, серво поворачивает и сразу возвращается в исходное положение.
Eсли я отключаю микрофон то сервопривод занимает противоположное состояние, первая кнопка работать перестает, начинает работать от другой копки пульта, и серво крутит в другую сторону.
Время показало: В случае, если микрофон подключен, то работает только одна кнопка на пульте, серво поворачивает и сразу возвращается в исходное положение.
Eсли я отключаю микрофон то сервопривод занимает противоположное состояние, первая кнопка работать перестает, начинает работать от другой копки пульта, и серво крутит в другую сторону.
2. Комментарии к поворотам не напутаны?
3. Напиши по-русски, что ты хочешь от устройства. У тебя 3 варианта кнопок и 2 варианта микрофона - как схема должна реагировать на сочетания?
Скобки 40, 48, как бы лишние, кто знает, как компилятор воспримет...
Сорри. Комментарии в скетче не изменял, так что на них обращать внимания не надо.
Сорри. Комментарии в скетче не изменял, так что на них обращать внимания не надо.