Re: Запуск автомобиля с голоса
http://www.youtube.com/watch?v=Yrl35yfpnA0
И вообще, по моему это просто мечта какая то, алюминиевый корпус, ни каких ДВС => ни каких масел, тосолов и прочей... и динамические характеристики покруче большинства спорт каров! После просмотра этих видео, смотришь на все эти Х6 как на, что то прошловековое :eek:
Re: Запуск автомобиля с голоса
Да, машина мечта, но пока не для наших карманов :) За такие деньги можно неплохую иномарку лет 20 обслуживать на бензине. Но как только эти технологии станут дешевле, а мы к этому придём полюбому, так вот тогда кругом будут такие машины или даже совершеннее. Тогда будет выгодный бизнес по переработке батарей. Вот тогда нафтотрейдеры сядут на жопу. Особенно Путин :)
П.С. Ничего не имею против самих россиян, просто удивляет уверенность политиков в бездонных ресурсах нефти и газа и значит больше ничего развивать не нужно. Да с правильным менеджментом можно было бы вывести Россию на первые позиции в мире во всех направлениях - интеллектуальные и материальные ресурсы для этого были, пока не запустили всё это. А жаль...
Re: Запуск автомобиля с голоса
У меня есть сомнения что автомобиль подойдет для нашего климата.
Всем известно что при минусовой температуре Li-ion аккумуляторы значительно теряют емкость или приходят в негодность
И еще, реагенты которыми обрабатывают улицы Москвы разъедают алюминиевые детали автомобилей
Так что нужно сначала проследить за тем как они переживут пару зим в России
А автомобиль у Э.Маска получился классный!!!
Re: Запуск автомобиля с голоса
Машины Тесла в прошлом году прошли тесты в скандинавских странах и сейчас там ездят. Правда, сами производители сообщили, что ход на одном заряде в таком климате будет на 20-40% ниже, чем в тёплых странах - всё зависит от температуры. Можно, конечно, и подогрев батарей сделать, чтобы не мёрзли постоянно, но это тоже дополнительний расход энергии. Понятно, что в Сибирь их лучше не запускать :) Но, всё равно, считаю, что батарейная система питания - это всего лишь промежуточная и не выгодная ступень на пути к более совершенным источником питания с большим запасом энергии, причём дешёвой. Хороший вариант поставить в каждую машину по небольшому атомному реактору и 15-20 лет не заправляться :)))
Re: Запуск автомобиля с голоса
Цитата:
Машины Тесла в прошлом году прошли тесты в скандинавских странах и сейчас там ездят. Правда, сами производители сообщили, что ход на одном заряде в таком климате будет на 20-40% ниже, чем в тёплых странах - всё зависит от температуры.
Это не показатель, у них мягкий и умеренный климат, на него влияет теплое течение Гольфстрим.
Цитата:
Можно, конечно, и подогрев батарей сделать, чтобы не мёрзли постоянно, но это тоже дополнительний расход энергии
Так как у большинства жителей больших городов нет отапливаемой парковки или гаража. Придется подогревать аккумулятор всю зиму
Да и с розеткой 220в в больших городах будут сложности
Цитата:
Хороший вариант поставить в каждую машину по небольшому атомному реактору и 15-20 лет не заправляться ))
Вот это уже другое дело!!!
Re: Запуск автомобиля с голоса
На самом деле это прорыв это мое мнение:cool:
а теперь по делу сегодня пробовал экспериментировать на работе со скетчем
беру вот эти срочки
PHP код:
if( digitalRead(2)==LOW && digitalRead(4)==LOW
)
{
digitalWrite(Start, HIGH);
delay(100);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
и ставлю их в самое начало loop
получается вот так
PHP код:
#include <MsTimer2.h>
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(11, 12); // RX, TX
char c;
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;
boolean a=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();
flag=true;
digitalWrite(Mute, HIGH);
BTSerial.begin(9600);
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( digitalRead(2)==LOW && digitalRead(4)==LOW
)
{
digitalWrite(Start, HIGH);
delay(100);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
if (BTSerial.available())
{
c = (char)BTSerial.read();
Serial.println(c);
if (c == '1' && !flag)
{
flag=true;
digitalWrite(Mute, HIGH);
c=0;
}
switch(c)
{
case 50:
if (stopflag)
{
digitalWrite(Opening, HIGH);
delay(700);
digitalWrite(Opening, LOW);
delay(1000);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
case 51:
running = !running;
digitalWrite(Light, running);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
if(flag)
{
switch(c)
{
case 49:
flag=false;
digitalWrite(Mute, LOW);
c=0;
break;
}
}
}
if (digitalRead(4)==LOW)
{
a=false;
flag=true;
digitalWrite(Mute, HIGH);
}
if (digitalRead(4)==HIGH && !a)
{
a=true;
flag=false;
delay(1000);
digitalWrite(Mute, LOW);
}
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;
delay(1000);
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;
}
}
}
}
я был уверен что все получится но на деле получается что ни чего не работает что я упустил или сделал не так?
Вложений: 1
Re: Запуск автомобиля с голоса
вчера получилось выполнить то что я захотел заработало добавил я пару строк в начале лупа
PHP код:
void loop() // run over and over again
{
if(stopflag && digitalRead(2)==LOW && digitalRead(4)==LOW
)
{
digitalWrite(Start, HIGH);
delay(100);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
только вот не задача хотелось немного по другому объясню на диаграммах
Вложение 17621
на первых показано как работает у меня получилось педаль тормоза как кнопка приходится ее отпускать и снова нажимать
а мне надо как на двух других диаграммах что бы я нажал и он сразу начал заводится а ногу я даже не убирал как это реализовать???
вот весь скетч
PHP код:
#include <MsTimer2.h>
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(11, 12); // RX, TX
char c;
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;
boolean a=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();
flag=true;
digitalWrite(Mute, HIGH);
BTSerial.begin(9600);
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(stopflag && digitalRead(2)==LOW && digitalRead(4)==LOW
)
{
digitalWrite(Start, HIGH);
delay(100);
digitalWrite(Start, LOW);
flag=false;
digitalWrite(Mute, LOW);
com=0;
}
if (BTSerial.available())
{
c = (char)BTSerial.read();
Serial.println(c);
if (c == '1' && !flag)
{
flag=true;
digitalWrite(Mute, HIGH);
c=0;
}
switch(c)
{
case 50:
if (stopflag)
{
digitalWrite(Opening, HIGH);
delay(700);
digitalWrite(Opening, LOW);
delay(1000);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
case 51:
running = !running;
digitalWrite(Light, running);
flag=false;
digitalWrite(Mute, LOW);
com=0;
break;
}
if(flag)
{
switch(c)
{
case 49:
flag=false;
digitalWrite(Mute, LOW);
c=0;
break;
}
}
}
if (digitalRead(4)==LOW)
{
a=false;
flag=true;
digitalWrite(Mute, HIGH);
}
if (digitalRead(4)==HIGH && !a)
{
a=true;
flag=false;
delay(1000);
digitalWrite(Mute, LOW);
}
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;
delay(1000);
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;
}
}
}
}
Вложений: 1
Re: Запуск автомобиля с голоса
сегодня проверил на стенде если быть точным то у меня там стоит реле птф и импульс подается на него так вот оно срабатывает в момент отпускания а ардуино держит нажатой хотя я делаю задержку в одну милисекунду почему так происходит?
Вложение 17622
Re: Запуск автомобиля с голоса
уровень на выходе стартера не так выглядит как ты нарисовал. там по факту происходит вот что: лампа заряда горит, stopflag==true, жмешь тормоз. выход на стартер включается. ждет 100мс и выключается. но поскольку все условия выполняются (лампа, педаль и т.д.) он тут же снова включает выход start. выглядит как будто он всегда включен. когда отпускаешь тормоз условие исчезает, и включение в цикле не происходит. чтобы это победить надо либо сделать отдельную переменную, чтобы она обнулялась после одного прохода цикла и потом восстанавливалась при следующем нажатии тормоза, либо поставить задержку, чтоб ардуина фигарила импульсами пока не отпустишь педаль или пока не погаснет лампа заряда.
Вложений: 1
Re: Запуск автомобиля с голоса
я понял тогда на графике это должно выглядеть так
Вложение 17623
импульсами ни как нельзя на деле это будет выглядеть так стартер будет включаться и снова выключаться как будто тупо щелкает втягивающее реле стартера там же реле птф а вот одноразовое выполнение именно то что надо это надо сделать через флаги вот так?
PHP код:
void loop() // run over and over again
{
if(stopflag && digitalRead(2)==LOW && digitalRead(4)==LOW
)
{startflag=true;}
{
digitalWrite(Start, HIGH);
delay(100);
digitalWrite(Start, LOW);
flag=false;
startflag=false;
digitalWrite(Mute, LOW);
c=0;
}