Я не уверен , но по моему функция millis использует Timer2
У тебя получается инициализация таймера в setup сбрасывается этой функцией
Вид для печати
Я не уверен , но по моему функция millis использует Timer2
У тебя получается инициализация таймера в setup сбрасывается этой функцией
Так оно же работает. Функции по таймеру тоже отрабатывают.
Но все равно попробую отключить прерывание.
Если попробовать избавиться от millis(), то можно ли ее заменить просто счетчиком?
PHP код:
counter1++;
if (counter1==2000) //запуск процедур по таймеру
{
//stime = millis();
counter1 = 0;
autolight();
cam();
ReadTemp();
voltmetr();
buttons[0]=0;
Serial.write(buttons,8);
}
Можно конечно
Только не помогло :)
Методом исключения выявлен виновник затыка: ReadTemp();
Если эту функцию не вызывать, то все работает правильно.
Может ли это быть из-за того, что датчик на "паразитном" питании?
+5 я ему не давал - просто двумя проводами подключен.
Сейчас еще попробую библиотеку далласовскую посвежее найти.
Ошибка в switch, нужно break вместо return
Пример
PHP код:
switch (var)
{
case 1:
//выполняется, когда var равно 1
break;
case 2:
//выполняется когда var равно 2
break;
default:
// выполняется, если не выбрана ни одна альтернатива
// default необязателен
}
У меня есть похожая проблема. В моем случае я считываю с посл. порта данные климат-контроля, вывожу на дисплей + обрабатываю нажатия кнопок и вывод на ИК диод для управления магнитолой + температурный датчик. Вот он то мне все и портил. Вопрос не решен, пока без датчика обхожусь.
Chip, не в этом дело.
Дело в библиотеке. Сейчас самую последнюю попробовал, там конструкция опроса датчиков другая.
Один фиг, выполняется опрос очень долго, поэтому и затык.PHP код:
sensors.getTempCByIndex(0);
Фиг с ним, с внешним датчиком. К процессорным подключусь.
Может быть тогда поставить аналоговый датчик температуры?
Например LM35
Цитата:
датчик LM35, имеет заводскую калибровку в градусах Цельсия с погрешностью 1%. У датчика линейная шкала зависимости Градус/Вольт. Выходное напряжение (контакт 2) изменяется с температурой от 0мВ (0С) до 1500мВ (+150C).
Посмотри внимательно мой скетч.
У меня в порт пишутся и передаются в ПК совсем не те значения, что выдает АЦП. А конкретно константы: 11, 12, 13, 14, 15.
Анализируя в скетче данные с разных входов, передавать компу можно одинаковые константы.
Абстрактный пример:
PHP код:
joystick1 = analogRead(5);
joystick2 = analogRead(6);
if (joystick1==560) Serial.write(15, 1);
if (joystick1==720) Serial.write(11, 1);
if (joystick2==234) Serial.write(15, 1);
if (joystick2==456) Serial.write(11, 1);
Прошу прощения, но может кто-то сталкивался с тем что конфигуратор Хоткея не читает значения с порта, но при этом сам Хоткей через пень-колоду, но работает?
Суть в том что я дома когда игрался с Ардуиной конфигуратор работал и под Хрюшей и под Семеркой. Соответственно я там сохранил значения своих кнопок. В машине конфигуратор сначала выводил значения с огромным дребезгом, а потом стал показывать в верхнем окошке "0". Я закинул сохраненный текстовый файл с настройками взятыми из дома, и как-то все работает, но не очень. Хочу поэксперементировать со скетчем, но без работающего конфигуратора не могу
Выложи посмотреть свой config.txt
<1429>Key1=175 />
<1527>Key1=174 />
<1213>Key1=177 />
<1316>Key1=176 />
<1101>Key1=179 />
[options]
limit=5
Вроде все в порядке, должно работать
Сам в шоке. Помню только что поначалу значения читались, только прыгали сильно.
В принципе это могло произойти после модернизации драйвера FTDI. У меня еще ELM327 стоит. Попробую переставить дровишки на родные с отключенным ЭЛМом.
Еще вопрос.
ХотКей работает с сигналом только в двоичном коде?
Он понимает только Serial.write или Serial.print(...,BIN) тоже поймет?
Ему без особой разницы к каким данным привязыватся, главное что бы приходило 4 байтаЦитата:
ХотКей работает с сигналом только в двоичном коде?
Он понимает только Serial.write или Serial.print(...,BIN) тоже поймет?
Спасибо
Изменение кода, попробуйте и отпишитесь о результатах.
PHP код:
//http://compcar.ru
#define PIN 5 //номер аналогового порта
#define LIMIT 5 //предел погрешности сопротивления
byte bytes[2];
int res_dt1, res_d;
unsigned long math_time,old_time,real_time;
void setup()
{
Serial.begin(115200); // настроить скорость com порта
}
void loop()
{
res_d = analogRead(PIN); // прочитать данные АЦП
delay(30);
res_dt1 = analogRead(PIN); // прочитать данные АЦП
old_time = millis();
math_time = 0;
while(math_time < 300 && (res_dt1 > res_d-LIMIT && res_dt1 < res_d+LIMIT ))
{
real_time = millis(); //получить реальное время
math_time = real_time - old_time; //считаем длительность нажатия
res_dt1 = analogRead(PIN); // прочитать данные АЦП
}
if( math_time > 50) //если нет дребезга то короткое нажатие
{
bytes[0] = res_d & 255; // преобразовать в 2-байта
bytes[1] = (res_d & 768) >> 8;
Serial.write( bytes,2); // отправить прочитаное значение компьютеру
}
}
Вопрос Chip-у. Помогите пожалуйста. Подключил Arduino Nano 5 по схеме из первого поста. В окне конфигуратора не отрабатываются нажатия кнопок на руле. Реагирует только на одну кнопку "Mode". На остальные никакой реакции. Дома на макетной плате собирал из подручных резисторов всё работало как надо. В машине не хочет.
Скетч залил для короткого и длинного нажатия.
Дома собирал без "начального" сопротивления на кнопках. В машине ,я так понял, присутствует это "начальное" сопротивление. Может быть из-за этого.
Тестером проверял в машине сопротивления меняются.
Arduino питается от USB. Кнопки подключил на выводы GND и А5 Arduino. Может я неправильно подключил?
Схема кнопок в автомобиле вот такая, я правда там никак не разберусь как у японцев такие значения получаются!!!
Какое сопротивление весит от +5в на А5 ?
Сопротивление висит как в схеме в первом посте 3,3кОм.
Должно работать. В автомобиле стоит ELM-327 или USB с мостом FTDI?
Из USB-устройств подключены только мышь и контроллер тача.
А может "землю" Arduino и авто дополнительно соединить? Как вот в этом посте http://www.compcar.ru/forum/showpost...86&postcount=7
Нет смысла. Да и не стоит этого делать
попробуй этот скетчь
Да , сейчас схожу в течение часа в авто-попробую.....
Залил новый скетч. Теперь вообще не реагирует ни на одну кнопку. Блин! Куда копать???
Может быть у тебя сопротивление не 3,3к ?
Сопротивление точно 3,3 кОм. Дома то на макетке всё работало с этим сопротивлением.
тогда проблема с подключением
Chip выясняются новые факты:
Вытащил плату с Ардуино и подключил другим кабелем к ноутбуку на работе. В Serial Monitor всё нормально. При замыкании кнопочных выводов (А5 и GND) что-то шлёт в Serial Monitor, т.е. работает нормально. Потащил обратно в машину проверяю-фиг. Попробовал вообще откинуть в машине резистивные кнопки от Ардуины. Тогда в Serial Monitor постоянно что-то шлёт Ардуина , причём без остановки!!!. Накидываю кнопки-всё прекращается (ну и соответственно реакции на кнопки ноль)??? Нашёл ,что Блютуз в машине сидит на COM3 и COM4.Но он не подключен. В ноутбуке Мегафоновский модем сидит на СОМ18 и СОМ19. Может быть это с блютузом конфликт в машине и надо перешивать Ардуино???
Возможно что кнопки в машине подключены к земле или к +12в, отсюда и все проблемы
Нет кнопки в порядке-проверял тестером. Почему Ардуино посылает какие-то значения в Serial Monitor если кнопки к ней вообще не подключены! На ноутбуке такого нет-всё отрабатывает отлично. Значит какая-то проблема в CarPC, а вот какая никак не соображу.....
Прошей кардуину осциллографом и увидишь все что происходит на входе
Вообще непонятки. Не работает кардуина именно с моими рулевыми кнопками и именно в машине. Полтергейст какой-то!!!! В выходные снимал комп и сами кнопки с руля. Принёс всё домой и подключил-всё работает нормально!!! Понёс обратно в машину, поставил-опять болт!!! Проверил тестером-кнопки с землёй в машине не звонятся, напряжения на них тоже нет и сопротивление при нажатии на них исправно меняется! Поставил на кардуину резистивную матрицу от монитора(лишняя была) прямо в машине---всё работает!!! Какой-то странный механизм рулевых кнопок у меня в машине!! Хотя с ИК адаптером другой фирмы (не буду рекламировать) всё работало нормально. Я так понимаю там такой же принцип. А с кардуиной ни в какую.. Я в отчаянии...... Что ещё придумать?
Скинь config.txt только тот который в автомобиле, посмотрю