Re: Запуск автомобиля с голоса
тоесть ка то так
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--;
}
}
Re: Запуск автомобиля с голоса
PHP код:
void blink() //прерывание
{
tick++; //импульсы
}
void flash() //таймер
{
if(tick<2){stopflag=true;} //если меньше 2 - поднимаем флаг
else {stopflag=false;} //если больше - сбрасываем
tick=0; //обнуляем
}
Как-то так вроде. переменные только объяви в начале
Re: Запуск автомобиля с голоса
чип сегодня совместными усилиями с 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();
а должны быть первая оранжевой а вторая и третья синими если все хорошо, что я сделал не так???
Re: Запуск автомобиля с голоса
Нужно библиотеку положить в папку .../Arduino-0023/libraries/MsTimer2
Re: Запуск автомобиля с голоса
не знаю по чему закрыл программу и снова открыл но все равно эти строчки черные но при проверке в них ничего не выдает это правильно или опять что то не то????
Re: Запуск автомобиля с голоса
Я не понимаю о чем речь, может лучше скриншот приложить?
Вложений: 2
Re: Запуск автомобиля с голоса
Вложение 15811
вот где лежат файлы библиотеки и соответственно
каким цветом при этом выделяется строка
#include <MsTimer2.h>
и здесь вот тоже
Вложение 15812
:confused:
Re: Запуск автомобиля с голоса
все кажется понял оказывается библиотека и должна быть прописанна черным шрифтом т. к. при удалении этой строчки появляются ошибки в
MsTimer2::set(500, flash);
MsTimer2::start();
этих строчках все проверил скетч больше ошибок нет)))) теперь проверка
Re: Запуск автомобиля с голоса
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;
}
}
}
}
ошибок нет а при командах и отсутствии сигнала на датчике скорости не происходит ни каких действий(((
Re: Запуск автомобиля с голоса
ну правильно)) у тебя условие, чтобы было движение, тогда будет и багажник открываться, и двигатель глохнуть))
if(stopflag && digitalRead(2)==LOW && digitalRead(4)==HIGH) так должно работать по идее.
и еще в начале замени boolean stopflag=true; хотя можно и подождать секунду после включения.