отлично вот скетч после последней редакции
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(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;
}
}
}
}
только появился один ниуанс когда я говорю багажник и при этом работает датчик скорости то он его не открывает но где то через секунду выключает тишину (включает звук магнитолы) как сделать так что бы он этого не делал
ну ты скобки то поставь, и не будет через секунды отключать тишину
ООООО теперь все класс кажется теперь скетч приобрел окончательный вид и все работает так как я хотел теперь осталась интеграция в автомобиль
естественно с видео отчетом
вот скетч после последней редакции время импульса открытия багажника я уменьшил до 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;
}
}
}
}
Последний раз редактировалось Omigovolt; 30.12.2012 в 23:30.
Кульминация)))
Круто , но меня хватило ровно на два дня . У меня так же слово триггер было "тишина". При движении я матерился жуть как что бы система меня хоть как то поняла ) а на месте более менее но все равно не всегда с первого раза
а ты на (изи вр) делал или на таком же модуле что и у меня а я уже около недели тестю в целом очень доволен но в плане распознования да есть огрехи есть еще варианты как улучшить распознование (поставить другой микрофон и записать команды непосредственно в автомобиле и при полной тишине)
Модуль такой же как и у тебя. Записывать команды пробовал по разному, и в тишине, и во время движения. В последнем случае распознавание самое хреновое выходит. Единственное что не попробовал, так это поставить микрофон с АРУ.
Эту тему просматривают: 3 (пользователей: 0 , гостей: 3)