погоди он работает ты проверял?
Вид для печати
погоди он работает ты проверял?
Проверял, но не работает:)) Я где то видимо логику потерял:)
ща погоди я видюхи записываю)
вот скетч который работает в первом видео
http://youtu.be/akB5EqfWCFcPHP код:
int Mute = 19; // Pin 19 - Mute
int Start = 18; // Pin 18 - Start
int Stopi = 17; // Pin 17 - Stop
int Opening = 15; // Pin 15 - Open
int Light = 16; // Pin 16 - Light
byte com = 0; //reply from voice recognition
boolean running = false;
void setup() {
// initialize the digital pins as output
pinMode(Mute, OUTPUT);
pinMode(Start, OUTPUT);
pinMode(Stopi, OUTPUT);
pinMode(Opening, OUTPUT);
pinMode(Light, OUTPUT);
Serial.begin(9600); // Start serial communication at 9600bps
delay(2000);
Serial.write(0xAA);
Serial.write(0x37);
delay(1000);
Serial.write(0xAA);
Serial.write(0x21);
}
void loop() // run over and over again
{
if(Serial.available())
{
com = Serial.read();
if (com==0x13)
{ running = !running;
digitalWrite(Mute, running);
}
else if (com==0x15)
{ running = !running;
digitalWrite(Light, running);
}
else if (com==0x14)
{ digitalWrite(Opening, HIGH);
delay(1000);
digitalWrite(Opening, LOW);
}
else if (com==0x11)
{ digitalWrite(Start, HIGH);
delay(1000);
digitalWrite(Start, LOW);
}
else if (com==0x12)
{digitalWrite(Stopi, HIGH);
delay(1000);
digitalWrite(Stopi, LOW);
}
}
}
там все равно в какой последовательности произносить команды команды приходится произносить достаточно громко
т. к. я их записывал когда микрофон лежал недалеко от колонок за то теперь я теперь знаю что он может реагировать не только на те команды которык я записывал но и еще просто путать их точнее все зависит от произношения и все такое это когда я командую свет а он зажигает диод который отвечает за тишину
теперь следующий скетч в котором уже должен быть триггер для простоты оставлено команда триггер (тишина) и команда свет на видео видно что там хоть оборись свет не заработает но у меня в какие то моменты умудрялся проорать что все получалось (при чем по задумке когда тишина должен вырубаться звук на магнитоле и загораться красный светодиод а при произнесении команды и её выполнения снова включался звук и светодиод тухнул) Т. е. белый светодиод загорался а красный практически одновременно с ним тух но при попытке выключить свет (должен потухнуть белый светодиод) тишина работала(красный загорался) но уже белый светодиод не тух (вот тут хоть оборись) а должно))))
PHP код:
int Mute = 19; // Pin 19 - Mute
int Start = 18; // Pin 18 - Start
int Stopi = 17; // Pin 17 - Stop
int Opening = 15; // Pin 15 - Open
int Light = 16; // Pin 16 - Light
byte com = 0; //reply from voice recognition
byte a = 0;
boolean running = false;
void setup() {
// initialize the digital pins as output
pinMode(Mute, OUTPUT);
pinMode(Start, OUTPUT);
pinMode(Stopi, OUTPUT);
pinMode(Opening, OUTPUT);
pinMode(Light, OUTPUT);
Serial.begin(9600); // Start serial communication at 9600bps
delay(2000);
Serial.write(0xAA);
Serial.write(0x37);
delay(1000);
Serial.write(0xAA);
Serial.write(0x21);
}
void loop() // run over and over again
{
if (Serial.available() > 1)
{
a = Serial.read();
com = Serial.read();
if(a==0x13)
{
running = !running;
digitalWrite(Mute, running);
switch(com)
{
case 0x15:
running = !running;
digitalWrite(Light, running);
break;
}
}
}
}
http://youtu.be/Ukp6CwDuS50
команды я запрограммировал следующим образом
ниндзяя - (0x11) синий
япошка - (0x12) зеленый
тишина - (0x13) красный
базажник - (0x14) жолтый
свет - (0x15) белый
Omigovolt, все таки, что приходит в ардуино? Судя по видео просто один байт на каждую команду без 0x13 в начале. Тогда все просто. если поймали 0x13, то поднимаем флаг. если флаг поднят и пришла команда, то выполняем ее и сбрасываем флаг.
Вложение 15741
после подключения я послал команду(АА 21)
и скомандовал 5 команд которые я записывал ранее
Вложение 15742
потом посылаю (АА 37) и еще раз скомандовал 5 команд для примера
5 квадратиков это то что приходило в ответ на мои команды соответственно по одному после каждой команды
всего она может записать 15 команд по 5 в группу всего получается 3 группы если бы у меня было еще 5 команд я бы
их записал в др группу и что бы плата начала откликаться на команды второй группы надо послать (АА 22)
Чип если есть вопросы задавайте я постараюсь на них ответить)))
Попробуй:
Логика работы такая: Пока не придет команда "тишина" ни на что не реагирует. После этой команды включается диод и показывает, что ждет следующей команды. Команда "свет" включит/выключит нужный диод, после чего красный погаснет и будет ждать "тишины".PHP код:
boolean flag=false;
if(Serial.available())
{
com = Serial.read();
if(com==0x13)
{
flag=true; //поднимаем флаг команд
digitalWrite(Mute, HIGH); //включаем выход
com=0;//сбрасываем переменную
}
if(flag) //флаг поднят
{
switch(com)
{
case 0x15:
running = !running;
digitalWrite(Light, running);
flag=false;
digitalWrite(Mute, LOW); //выключаем выход
com=0;
break;
}
}
}
УУУУУУУУУУУУУУУУУУУУУУУ АГОНЬ ВСЕ РАБОТАЕТ КАК НАДО ))))))))))))))))))))))))))))))))))))))
http://youtu.be/iQAvUNwVX-w
теперь осталось добавить еще 3 команды а потом потеть над условиями))))
блин на радостях забыл один ниуанс при произнесении тишины если не поступила ни одна команда то есть мы тупо молчим или надо поговорить по телефону (у магнитолы выключился звук) то при повторении тишины звук снова включался я ток что проверил сейчас это не работает эту функцию нужно реализовать))))
вот весь скетч все работает и на ниндзе и на я пошке и на багажнике)))))
http://youtu.be/Yl8zL-qng24PHP код:
int Mute = 19; // Pin 19 - Mute
int Start = 18; // Pin 18 - Start
int Stopi = 17; // Pin 17 - Stop
int Opening = 15; // Pin 15 - Open
int Light = 16; // Pin 16 - Light
byte com = 0; //reply from voice recognition
boolean running = false;
boolean flag=false;
void setup() {
// initialize the digital pins as output
pinMode(Mute, OUTPUT);
pinMode(Start, OUTPUT);
pinMode(Stopi, OUTPUT);
pinMode(Opening, OUTPUT);
pinMode(Light, OUTPUT);
Serial.begin(9600); // Start serial communication at 9600bps
delay(2000);
Serial.write(0xAA);
Serial.write(0x37);
delay(1000);
Serial.write(0xAA);
Serial.write(0x21);
}
void loop() // run over and over again
{
if(Serial.available())
{
com = Serial.read();
if(com==0x13)
{
flag=true;
digitalWrite(Mute, HIGH);
com=0;
}
if(flag)
{
switch(com)
{
case 0x15:
running = !running;
digitalWrite(Light, running);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x11:
digitalWrite(Start, HIGH);
delay(1000);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x12:
digitalWrite(Stopi, HIGH);
delay(1000);
digitalWrite(Stopi, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x14:
digitalWrite(Opening, HIGH);
delay(1000);
digitalWrite(Opening, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
}
}
}
ааа и еще очень даже приятно если свет включен я говорю тишина и вместо света говорю багажник она открывает багажник а свет продолжает гореть тема:p
теперь остались еще 3 условия что бы япошка сработал нужно что бы нога была на педали тормоза и с датчика скорости шел сигнал меньше 4Гц или вообще не шел сигнал при этом он должен понимать что двигатель запущен то есть лампочка зарядки АКБ не горела
а при ниндзе видеть что двигатель не запущен и нога тоже должна быть на педали тормоза при всем при этом все должно работать через триггер))))
вот последний обнавленный код когда нужно поговорить по мобильному :p
PHP код:
int Mute = 19; // Pin 19 - Mute
int Start = 18; // Pin 18 - Start
int Stopi = 17; // Pin 17 - Stop
int Opening = 15; // Pin 15 - Open
int Light = 16; // Pin 16 - Light
byte com = 0; //reply from voice recognition
boolean running = false;
boolean flag=false;
void setup() {
// initialize the digital pins as output
pinMode(Mute, OUTPUT);
pinMode(Start, OUTPUT);
pinMode(Stopi, OUTPUT);
pinMode(Opening, OUTPUT);
pinMode(Light, OUTPUT);
Serial.begin(9600); // Start serial communication at 9600bps
delay(2000);
Serial.write(0xAA);
Serial.write(0x37);
delay(1000);
Serial.write(0xAA);
Serial.write(0x21);
}
void loop() // run over and over again
{
if(Serial.available())
{
com = Serial.read();
if(com==0x13 && !flag)
{
flag=true;
digitalWrite(Mute, HIGH);
com=0;
}
if(flag)
{
switch(com)
{
case 0x15:
running = !running;
digitalWrite(Light, running);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x11:
digitalWrite(Start, HIGH);
delay(1000);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x12:
digitalWrite(Stopi, HIGH);
delay(1000);
digitalWrite(Stopi, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x14:
digitalWrite(Opening, HIGH);
delay(1000);
digitalWrite(Opening, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x13:
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
}
}
}
Еще можно обучить распознавать звонок телефона и тогда ардуино будет автоматически глушить звук когда звонят на твой мобильник
идея очень даже интересная правда но тогда скорее всего придется ставить очень простую мелодию на мобильник вплоть до примитивных пиликаний плата с микрофоном у меня будет стоять в козырьке еще при этом при всем будет орать музыка и последнее это приведет к усложнению кода а меня идея что бы все было как можно проще и безопаснее)))) а так для интузиастов вообще вариант чумовой :cool:
собрал проверочный стенд только что на скорую руку за 15 мин:D проверил показания датчиков стоп лампочка зарядки АКБ и конечно же датчик скорости все ок теперь доводим код до ума и можно будет тестить:p
Вложение 15767
Отличный стенд;)
ну вот теперь завязали все это на педаль тормоза и лампочку АКБ
за что огромное спасибо manu_245PHP код:
int Mute = 19; // Pin 19 - Mute
int Start = 18; // Pin 18 - Start
int Stopi = 17; // Pin 17 - Stop
int Opening = 15; // Pin 15 - Open
int Light = 16; // Pin 16 - Light
int Lampbattery = 4;
int Stopisignal = 2;
int Speedisensor = 3;
byte com = 0; //reply from voice recognition
boolean running = false;
boolean flag=false;
void setup() {
// initialize the digital pins as output
pinMode(Mute, OUTPUT);
pinMode(Start, OUTPUT);
pinMode(Stopi, OUTPUT);
pinMode(Opening, OUTPUT);
pinMode(Light, OUTPUT);
pinMode(Lampbattery, INPUT);
digitalWrite(Lampbattery, HIGH);
pinMode(Stopisignal, INPUT);
digitalWrite(Stopisignal, HIGH);
pinMode(Speedisensor, INPUT);
Serial.begin(9600); // Start serial communication at 9600bps
delay(2000);
Serial.write(0xAA);
Serial.write(0x37);
delay(1000);
Serial.write(0xAA);
Serial.write(0x21);
}
void loop() // run over and over again
{
if(Serial.available())
{
com = Serial.read();
if(com==0x13 && !flag)
{
flag=true;
digitalWrite(Mute, HIGH);
com=0;
}
if(flag)
{
switch(com)
{
case 0x15:
running = !running;
digitalWrite(Light, running);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x11:
if(digitalRead(2)==LOW && digitalRead(4)==LOW )
{
digitalWrite(Start, HIGH);
delay(1000);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x12:
if(digitalRead(2)==LOW && digitalRead(4)==HIGH)
{
digitalWrite(Stopi, HIGH);
delay(1000);
digitalWrite(Stopi, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x14:
digitalWrite(Opening, HIGH);
delay(1000);
digitalWrite(Opening, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x13:
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
}
}
}
ну и конечно же видео
http://youtu.be/PWtqcpHnhbQ
может немного не понятно поясню то есть лампочка АКБ горит двигатель не запущен нажимаем стоп потом произносим триггер и только после совпадения всех 3-х условий она откликнется на слово ниндзя и запустит двигатель лампочка АКБ потухла опять нажимаем тормоз триггер и только тогда можно его заглушить кстате эта возможность исключает путаницу двух команд (ниндзя и япошка) т к распознование голоса не совершенно во время тестов я замечал что иногда при произнесении ниндзяя она могла зажеч светодиод япошки и наоборот ))))))
возник вопрос :
один из пассажиров решив надомной и зная все команды приколоться решит на ходу открыть багажник???
решение:
сделать одним из условий наличие сигнала на датчике скорости и это исключит возможность открытия багажника на ходу
и опять спасибо за подсказку manu_245
теперь осталось сделать еще одно и очень важное условие это датчик скорости:p
чип есть часть кода
как его привязать к моему что бы начало прирываний на датчике скорости было условием или флагом ?PHP код:
interrupt [EXT_INT1] void ext_int1_isr(void)
{
tick++; //сигналы датчика
if (tick==6){ // если 6 - проехали 1 м., сбрасываем на 0
tick=0;
a=14063/period; //считаем скорость
period=0;
}
}
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
period++;
if(period>4000){ //если долго не прерывается пишем 0
a=0;period--;
}
}
Я так думаю, здесь не нужен спидометр, нужен признак движения.
Идея такая: По прерываниям на D3 увеличиваем счетчик импульсов. По таймеру, например раз в секунду, проверяем сколько в счетчике и обнуляем его. Если меньше 2 или 3 (не так важно. 2 примерно 1км/ч, 3 - 1,8), то поднимаем флаг остановки, если больше - сбрасываем.
тоесть ка то так
PHP код:
interrupt [EXT_INT1] void ext_int1_isr(void)
{
tick++; //сигналы датчика
if (tick==2){ // если 2 - проехали 1 м., сбрасываем на 0
tick=0;
period=0;
}
}
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
period++;
if(period>3000){ //если долго не прерывается пишем 0
period--;
}
}
Как-то так вроде. переменные только объяви в началеPHP код:
void blink() //прерывание
{
tick++; //импульсы
}
void flash() //таймер
{
if(tick<2){stopflag=true;} //если меньше 2 - поднимаем флаг
else {stopflag=false;} //если больше - сбрасываем
tick=0; //обнуляем
}
чип сегодня совместными усилиями с manu_245 добили код на условие прерывания с датчика скорости
возник вопрос по поводу библиотеки короче я копирую архив открываю его в новую папку потом содержимое копирую в папкуPHP код:
#include <MsTimer2.h>
int Mute = 19; // Pin 19 - Mute
int Start = 18; // Pin 18 - Start
int Stopi = 17; // Pin 17 - Stop
int Opening = 15; // Pin 15 - Open
int Light = 16; // Pin 16 - Light
int Lampbattery = 4;
int Stopisignal = 2;
int Speedisensor = 3;
int tick = 0 ;
byte com = 0; //reply from voice recognition
boolean running = false;
boolean flag=false;
boolean stopflag=false;
void Time()
{
tick++;
}
void flash()
{
if(tick<2){stopflag=true;}
else {stopflag=false;}
tick=0;
}
void setup() {
// initialize the digital pins as output
pinMode(Mute, OUTPUT);
pinMode(Start, OUTPUT);
pinMode(Stopi, OUTPUT);
pinMode(Opening, OUTPUT);
pinMode(Light, OUTPUT);
pinMode(Lampbattery, INPUT);
digitalWrite(Lampbattery, HIGH);
pinMode(Stopisignal, INPUT);
digitalWrite(Stopisignal, HIGH);
pinMode(Speedisensor, INPUT);
digitalWrite (Speedisensor, HIGH);
attachInterrupt(1, Time, FALLING);
MsTimer2::set(500, flash);
MsTimer2::start();
Serial.begin(9600); // Start serial communication at 9600bps
delay(2000);
Serial.write(0xAA);
Serial.write(0x37);
delay(1000);
Serial.write(0xAA);
Serial.write(0x21);
}
void loop() // run over and over again
{
if(Serial.available())
{
com = Serial.read();
if(com==0x13 && !flag)
{
flag=true;
digitalWrite(Mute, HIGH);
com=0;
}
if(flag)
{
switch(com)
{
case 0x15:
running = !running;
digitalWrite(Light, running);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x11:
if(digitalRead(2)==LOW && digitalRead(4)==LOW
&& stopflag=false)
{
digitalWrite(Start, HIGH);
delay(1000);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x12:
if(digitalRead(2)==LOW && digitalRead(4)==HIGH
&& stopflag=false)
{
digitalWrite(Stopi, HIGH);
delay(1000);
digitalWrite(Stopi, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x14:
if (stopflag=false)
digitalWrite(Opening, HIGH);
delay(1000);
digitalWrite(Opening, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x13:
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
}
}
}
с программой на ардуино в папку libraries (которую я предворительно создал) в папке hardware вот но вот эти 3 строчки все равно остаются черными
#include <MsTimer2.h>
MsTimer2::set(500, flash);
MsTimer2::start();
а должны быть первая оранжевой а вторая и третья синими если все хорошо, что я сделал не так???
Нужно библиотеку положить в папку .../Arduino-0023/libraries/MsTimer2
не знаю по чему закрыл программу и снова открыл но все равно эти строчки черные но при проверке в них ничего не выдает это правильно или опять что то не то????
Я не понимаю о чем речь, может лучше скриншот приложить?
Вложение 15811
вот где лежат файлы библиотеки и соответственно
каким цветом при этом выделяется строка
#include <MsTimer2.h>
и здесь вот тоже
Вложение 15812
:confused:
все кажется понял оказывается библиотека и должна быть прописанна черным шрифтом т. к. при удалении этой строчки появляются ошибки в
MsTimer2::set(500, flash);
MsTimer2::start();
этих строчках все проверил скетч больше ошибок нет)))) теперь проверка
manu_245 что то не то
вот весь скетч
ошибок нет а при командах и отсутствии сигнала на датчике скорости не происходит ни каких действий(((PHP код:
#include <MsTimer2.h>
int Mute = 19; // Pin 19 - Mute
int Start = 18; // Pin 18 - Start
int Stopi = 17; // Pin 17 - Stop
int Opening = 15; // Pin 15 - Open
int Light = 16; // Pin 16 - Light
int Lampbattery = 4;
int Stopisignal = 2;
int Speedisensor = 3;
int tick = 0 ;
byte com = 0; //reply from voice recognition
boolean running = false;
boolean flag=false;
boolean stopflag=false;
void Time()
{
tick++;
}
void flash()
{
if(tick<2){stopflag=true;}
else {stopflag=false;}
tick=0;
}
void setup() {
// initialize the digital pins as output
pinMode(Mute, OUTPUT);
pinMode(Start, OUTPUT);
pinMode(Stopi, OUTPUT);
pinMode(Opening, OUTPUT);
pinMode(Light, OUTPUT);
pinMode(Lampbattery, INPUT);
digitalWrite(Lampbattery, HIGH);
pinMode(Stopisignal, INPUT);
digitalWrite(Stopisignal, HIGH);
pinMode(Speedisensor, INPUT);
digitalWrite (Speedisensor, HIGH);
attachInterrupt(1, Time, FALLING);
MsTimer2::set(500, flash);
MsTimer2::start();
Serial.begin(9600); // Start serial communication at 9600bps
delay(2000);
Serial.write(0xAA);
Serial.write(0x37);
delay(1000);
Serial.write(0xAA);
Serial.write(0x21);
}
void loop() // run over and over again
{
if(Serial.available())
{
com = Serial.read();
if(com==0x13 && !flag)
{
flag=true;
digitalWrite(Mute, HIGH);
com=0;
}
if(flag)
{
switch(com)
{
case 0x15:
running = !running;
digitalWrite(Light, running);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x11:
if(stopflag=false && digitalRead(2)==LOW && digitalRead(4)==LOW
)
{
digitalWrite(Start, HIGH);
delay(1000);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x12:
if(stopflag=false && digitalRead(2)==LOW && digitalRead(4)==HIGH
)
{
digitalWrite(Stopi, HIGH);
delay(1000);
digitalWrite(Stopi, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x14:
if (stopflag=false)
digitalWrite(Opening, HIGH);
delay(1000);
digitalWrite(Opening, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x13:
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
}
}
}
ну правильно)) у тебя условие, чтобы было движение, тогда будет и багажник открываться, и двигатель глохнуть))
if(stopflag && digitalRead(2)==LOW && digitalRead(4)==HIGH) так должно работать по идее.
и еще в начале замени boolean stopflag=true; хотя можно и подождать секунду после включения.
отлично вот скетч после последней редакции
http://youtu.be/Gm_43jVcBPAPHP код:
#include <MsTimer2.h>
int Mute = 19; // Pin 19 - Mute
int Start = 18; // Pin 18 - Start
int Stopi = 17; // Pin 17 - Stop
int Opening = 15; // Pin 15 - Open
int Light = 16; // Pin 16 - Light
int Lampbattery = 4;
int Stopisignal = 2;
int Speedisensor = 3;
int tick = 0 ;
byte com = 0; //reply from voice recognition
boolean running = false;
boolean flag=false;
boolean stopflag=true;
void Time()
{
tick++;
}
void flash()
{
if(tick<2){stopflag=true;}
else {stopflag=false;}
tick=0;
}
void setup() {
// initialize the digital pins as output
pinMode(Mute, OUTPUT);
pinMode(Start, OUTPUT);
pinMode(Stopi, OUTPUT);
pinMode(Opening, OUTPUT);
pinMode(Light, OUTPUT);
pinMode(Lampbattery, INPUT);
digitalWrite(Lampbattery, HIGH);
pinMode(Stopisignal, INPUT);
digitalWrite(Stopisignal, HIGH);
pinMode(Speedisensor, INPUT);
digitalWrite (Speedisensor, HIGH);
attachInterrupt(1, Time, FALLING);
MsTimer2::set(500, flash);
MsTimer2::start();
Serial.begin(9600); // Start serial communication at 9600bps
delay(2000);
Serial.write(0xAA);
Serial.write(0x37);
delay(1000);
Serial.write(0xAA);
Serial.write(0x21);
}
void loop() // run over and over again
{
if(Serial.available())
{
com = Serial.read();
if(com==0x13 && !flag)
{
flag=true;
digitalWrite(Mute, HIGH);
com=0;
}
if(flag)
{
switch(com)
{
case 0x15:
running = !running;
digitalWrite(Light, running);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x11:
if(stopflag && digitalRead(2)==LOW && digitalRead(4)==LOW
)
{
digitalWrite(Start, HIGH);
delay(1000);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x12:
if(stopflag && digitalRead(2)==LOW && digitalRead(4)==HIGH
)
{
digitalWrite(Stopi, HIGH);
delay(1000);
digitalWrite(Stopi, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x14:
if (stopflag)
digitalWrite(Opening, HIGH);
delay(1000);
digitalWrite(Opening, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x13:
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
}
}
}
только появился один ниуанс когда я говорю багажник и при этом работает датчик скорости то он его не открывает но где то через секунду выключает тишину (включает звук магнитолы) как сделать так что бы он этого не делал
ну ты скобки то поставь, и не будет через секунды отключать тишину
ООООО теперь все класс кажется теперь скетч приобрел окончательный вид и все работает так как я хотел теперь осталась интеграция в автомобиль
естественно с видео отчетом:cool:
вот скетч после последней редакции время импульса открытия багажника я уменьшил до 0.7 секунды как на сигнализациях а время импульса на стартер уменьшил до 0.1 секунды думаю этого будет достаточно все остальное без изменений;)
PHP код:
#include <MsTimer2.h>
int Mute = 19; // Pin 19 - Mute
int Start = 18; // Pin 18 - Start
int Stopi = 17; // Pin 17 - Stop
int Opening = 15; // Pin 15 - Open
int Light = 16; // Pin 16 - Light
int Lampbattery = 4;
int Stopisignal = 2;
int Speedisensor = 3;
int tick = 0 ;
byte com = 0; //reply from voice recognition
boolean running = false;
boolean flag=false;
boolean stopflag=true;
void Time()
{
tick++;
}
void flash()
{
if(tick<2){stopflag=true;}
else {stopflag=false;}
tick=0;
}
void setup() {
// initialize the digital pins as output
pinMode(Mute, OUTPUT);
pinMode(Start, OUTPUT);
pinMode(Stopi, OUTPUT);
pinMode(Opening, OUTPUT);
pinMode(Light, OUTPUT);
pinMode(Lampbattery, INPUT);
digitalWrite(Lampbattery, HIGH);
pinMode(Stopisignal, INPUT);
digitalWrite(Stopisignal, HIGH);
pinMode(Speedisensor, INPUT);
digitalWrite (Speedisensor, HIGH);
attachInterrupt(1, Time, FALLING);
MsTimer2::set(500, flash);
MsTimer2::start();
Serial.begin(9600); // Start serial communication at 9600bps
delay(2000);
Serial.write(0xAA);
Serial.write(0x37);
delay(1000);
Serial.write(0xAA);
Serial.write(0x21);
}
void loop() // run over and over again
{
if(Serial.available())
{
com = Serial.read();
if(com==0x13 && !flag)
{
flag=true;
digitalWrite(Mute, HIGH);
com=0;
}
if(flag)
{
switch(com)
{
case 0x15:
running = !running;
digitalWrite(Light, running);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
case 0x11:
if(stopflag && digitalRead(2)==LOW && digitalRead(4)==LOW
)
{
digitalWrite(Start, HIGH);
delay(100);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x12:
if(stopflag && digitalRead(2)==LOW && digitalRead(4)==HIGH
)
{
digitalWrite(Stopi, HIGH);
delay(1000);
digitalWrite(Stopi, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x14:
if (stopflag)
{
digitalWrite(Opening, HIGH);
delay(700);
digitalWrite(Opening, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
break;
case 0x13:
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
}
}
}
Кульминация)))
http://www.youtube.com/watch?v=x8XzUHNXHPM
Круто , но меня хватило ровно на два дня . У меня так же слово триггер было "тишина". При движении я матерился жуть как что бы система меня хоть как то поняла :)) а на месте более менее но все равно не всегда с первого раза
а ты на (изи вр) делал или на таком же модуле что и у меня а я уже около недели тестю в целом очень доволен но в плане распознования да есть огрехи есть еще варианты как улучшить распознование (поставить другой микрофон и записать команды непосредственно в автомобиле и при полной тишине):)
Модуль такой же как и у тебя. Записывать команды пробовал по разному, и в тишине, и во время движения. В последнем случае распознавание самое хреновое выходит. Единственное что не попробовал, так это поставить микрофон с АРУ.
смотри я как микрофон приладил
Вложение 15862
Вложение 15863
Вложение 15864
Вложение 15865
а ты как его сделал?