Чтобы узнать значение допиши вместо serial.write(byte,2) напиши
serial.print(res_dt1,DEC);
serial.print(" ");
далее открываешь гипертерминал настраиваваешь на свой ком порт и смотришь значение!
Вид для печати
Чтобы узнать значение допиши вместо serial.write(byte,2) напиши
serial.print(res_dt1,DEC);
serial.print(" ");
далее открываешь гипертерминал настраиваваешь на свой ком порт и смотришь значение!
Мои извинения A2 это 16
#define A2 16
#define A3 17
PHP код:
#define PIN 5 //номер аналогового порта
#define LIMIT 6 //предел погрешности сопротивления
#define A2 16
#define A3 17
byte bytes[2];
int res_dt1;
unsigned long math_time,old_time,real_time;
void setup()
{
pinMode(A2, OUTPUT);
Serial.begin(115200); // настроить скорость com порта
}
void loop()
{
old_time = real_time;
math_time = 0;
res_dt1 = analogRead(PIN); // прочитать данные АЦП
while(math_time < 300 && (analogRead(PIN)>res_dt1-LIMIT && analogRead(PIN) < res_dt1+LIMIT ))
{
real_time = millis(); //получить реальное время
math_time = real_time - old_time; //считаем длительность паузы
}
if( math_time > 80 ) //если нет дребезга
{
if (res_dt1>710 && res_dt1<740) digitalWrite(A2,HIGH );
bytes[0] = res_dt1 & 255; // преобразовать в 2-байта
bytes[1] = (res_dt1 & 768) >> 8;
Serial.write( bytes,2); // отправить прочитаное значение компьютеру
}
Иееес!!! Заработало!
Спасибо всем!
Немного дописал скетч:
#define PIN 5 //номер аналогового порта
#define LIMIT 6 //предел погрешности сопротивления
#define A1 15
#define A2 16
#define A3 17
#define A4 18
byte bytes[2];
int res_dt1;
unsigned long math_time,old_time,real_time;
void setup()
{
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
pinMode(A4, OUTPUT);
Serial.begin(115200); // настроить скорость com порта
}
void loop()
{
old_time = real_time;
math_time = 0;
res_dt1 = analogRead(PIN); // прочитать данные АЦП
while(math_time < 300 && (analogRead(PIN)>res_dt1-LIMIT && analogRead(PIN) < res_dt1+LIMIT ))
{
real_time = millis(); //получить реальное время
math_time = real_time - old_time; //считаем длительность паузы
}
if( math_time > 80 ) //если нет дребезга
{
if (res_dt1>710 && res_dt1<740) digitalWrite(A2,HIGH );
delay(30);
digitalWrite(A2, LOW);
if (res_dt1>640 && res_dt1<650) digitalWrite(A3,HIGH );
delay(30);
digitalWrite(A3, LOW);
if (res_dt1>410 && res_dt1<420) digitalWrite(A4,HIGH );
if (res_dt1>0 && res_dt1<3) digitalWrite(A4,LOW);
bytes[0] = res_dt1 & 255; // преобразовать в 2-байта
bytes[1] = (res_dt1 & 768) >> 8;
Serial.write( bytes,2); // отправить прочитаное значение компьютеру
}
}
Теперь с помощью резисторной матрицы можно не только управлять компом, но и включать и выключать оборудование, причём РС не обязательно должен быть включен!
Это намного удобнее, чем : http://www.compcar.ru/forum/showthread.php?t=5010, тем более, что данная прога у меня нещадно глючила на трёх разных компах, с разными ОС.
Теперь на джойстик RMX4S (10 кн. + Shift)
http://www.telekom.com.pl/sony/images/RM-X4S_1.jpg
Я повесил:
1. Вкл/выкл УМ, DAC, GPS, можно и сам комп включать ;)
2. Регулировка громкости аналоговым моторизированым 6-канальным ALPS : http://www.samodelka.ru/goods/6201.htm
3. Стандартные функции управления РС
Спасибо всем за участие!
Имею проблему с данным устройством...
Стоит Windows7 максимальная, залита прошивка с двойным нажатием.
Запускаю прогу HotKey разворачиваю вижу "1003" это когда ни одна кнопка не нажата, вижу дребезг т.е то 1003 то 1004 и т.п.
потом показания повисают и на нажатия не реагируют. Потом отвисает и даже реагирует на нажатия но может зависнуть в нажатом положении...
Смена прошивки на любую из этой темы не помогает.
Кто виноват - контроллер или прога на компе.
про "обвес" не забыл? сопротивление и конденсатор? номиналы правильные?
ну и проверь правильность схемы.
Похоже глючит сама программа hotkey.exe под Windows7. Ну не может же быть, что НИ ОДНА прошивка не работает как надо.
Сканирование данных с контроллера какое-то рваное с частыми зависаниями.
Отзовитесь у кого работет под 7-кой!
У меня работает под Win 7
У тебя к компу больше не подключены устройства с FTDI чипом?
Завтра попробую скачать и проверить выложеную здесь программу
К компу подключены:
- GPS-приёмник BU-353-й на пролифике
- тач не знаю на чём, но при перепрошивке находилось одно устройство на FTDI при подключеном контроллере и таче - значит тач не на FTDI, IMHO
- ELM327 (я перепрошил контроллер по инструкции и проблема с его неопределением ушла) на всякий случай пока отключил.
Комп - Core2Duo E7200/DG45FC/2Gb/160Gb БП Лебедева.
Завтра подключу к рулю ноут с XP, посмотрю как будет работать...
Как здесь описано сделал?
Да, всё согласно инструкции.
До этого, при подключенном ELM-е, вообще не работало, давало ошибку.
Значитца так!
Еще раз поставил все прошивки по очереди.
Похоже таки не программа виновата....
Заработала та прошивка, что в посте #74.
Дребезг и пропуски правда есть и очень нервируют, но уже хоть что-то!!!
Что можно поправить для их устранения?
P.S. Попытка запустить код от Hamster-а, пост #80, ни к чему не привела. Программа не выводит вообще ни каких значений. Если можно, автор, подробнее что и как там настраивать.
Проверил программу и код из щапки , все прекрасно работает.
У тебя какая версия драйвера ?
Версия FTDI 2.06.02 якобы последняя под Win7
Взял для интереса подключил еще одну Ардуину с дескриптором по умолчанию, все прекрасно работает с несколькими FTDI устройствами.
Прошивка вот эта
PHP код:
//http://compcar.ru
#define PIN 5 //номер аналогового порта
#define LIMIT 6 //предел погрешности сопротивления
byte bytes[2];
int res_dt1;
unsigned long math_time,old_time,real_time;
void setup()
{
Serial.begin(115200); // настроить скорость com порта
}
void loop()
{
old_time = real_time;
math_time = 0;
res_dt1 = analogRead(PIN); // прочитать данные АЦП
while(math_time < 300 && (analogRead(PIN)>res_dt1-LIMIT && analogRead(PIN) < res_dt1+LIMIT ))
{
real_time = millis(); //получить реальное время
math_time = real_time - old_time; //считаем длительность паузы
}
if( math_time > 80 ) //если нет дребезга
{
bytes[0] = res_dt1 & 255; // преобразовать в 2-байта
bytes[1] = (res_dt1 & 768) >> 8;
Serial.write( bytes,2); // отправить прочитаное значение компьютеру
}
}
Спасибо, завтра попробую.
Дело в том, что мой скетч не работает с программой Chip'a. Я давал его как пример реализации кнопок без дребезга.
Мой скрипт на автохоткее с которым работает прошивка можно взять тут (файлик steering.rar).
Вопрос по управлению.
Сейчас реализовано так :
if (res_dt1>410 && res_dt1<420) digitalWrite(2,HIGH ) ;// вкл реле 1
if (res_dt1>0 && res_dt1<3) digitalWrite(2,LOW);// выкл
Одна кнопка включает, другая выключает.
Никак не соображу как на одну кнопку тригер повесить- т.е нажал- вкл., нажал ещё раз - выкл.
вводишь переменнуюи она у тебя соответствует состоянию кнопки, и меняешь сначала переменнуюPHP код:
int knopka_trg=0;
а потом уже пишешь иё в портPHP код:
if (res_dt1>410 && res_dt1<420) {
knopka_trg=1-knopka_trg;
PHP код:
digitalWrite(2, knopka_trg);
}
int knopka_trg 0;
Этого компилятор не понимает:(
int knopka_trg=0;
Поиском пользуемся и находим http://www.compcar.ru/forum/showpost...4&postcount=18
Чудеса на виражах!!!!
Загружаю прошивку из поста #140 - НЕ РАБОТАЕТ, а тут же из поста #74 - РАБОТАЕТ...
Вопрос - чем они отличаются, принципиально, что одна работает, а другая нет ?????????
А софт из шапки как давно скачивал?
А можно как нибудь заставить программу Hotkey следить только за определенным портом, а то у меня стоит 2 кардуины и на второй весит мониторчик который читает из своего ком порта?
Прошей дискриптор одному Carduino
Вот спасибо большое, а то я что то сомневался насчет этой прошивки.
2 Hamster....
Посмотрел сегодня Ваш проект т.к. достала прога HotKey (дребезг пропуски ошибки при выходе из спящего режима), пока чисто теоретически.
Вопрос первый в файле ard-keys.ahk прописаны значения кнопок и в самой прошивке для ардуины тоже, причем прошивка выдает программе коды кнопок 1,2,3....
Допустим нажали MODE у меня это 710 отсчетов куда прописывать в оба файла и в прошивку и в скрипт.
Тогда не понятна фраза, что ардуиной выдается код нажатой клавиши....
и зачем тогда в скрипте погрешность???
Короче запутался, объясните плиз.
Вадим
Ааааа! Мой косяк. В проекте оказалось выложена старая версия, которая тоже периодически "дребезжала".
Добавил туда файлики с префиксом new_version.
Соответственно, значение кнопок прописываются в скетч ардуино (после комментария "Значения кнопок"), там же есть константа с погрешностью.
А в автохоткей скрипте по сути ничего менять уже не надо (окромя номера компорта - строчка 28, у меня он 8).
Вот, как-то так...
Сделал что называется в лоб - не работает.
Начал выяснять последовательно что не так.
Первое - установлена Win7 максимальная
Второе - скачал autohotkey версии 104805... установил.
Назначил ардуине com8 - типа чтобы не править скрипт.
Поправил в прошивке значения кнопок, взял их из утилиты конфигурации.
Прошил... всё ок!
Перезагрузился...
Запустил скрипт с помощью autohotkey... центрифугу, нажимаю кнопки на руле, а в ответ тишина.
Вопросы:
- под 7-кой будет работать
- та ли версия autohotkey
- как увидеть шлет ли ардуина коды в прогу - это самый главный вопрос т.к. был прецедент, что из всех скетчей заработал адекватно только из поста #74. Почему до сих пор не пойму.
- не пойму работает ли сам autohotkey, может есть какой простой тест, может он com не видит или версия dll под win7 другая нужна...
P.S. Ради интереса прошил рабочий скетч из поста #74, а в autohotkey загрузил первую версию скрипта. Прописал в скрипте значения для кнопок.
В этом варианте так же не работает - так что похоже здесь не ардуина виновата т.к. в прогу Chip-а всё шлёт.
Под win7 работать будет. Версия автохоткея у меня 1.0.48.05. Но версия тут вряд ли причем...
Направление мысли у тебя правильное :)
Сначала убеждаемся, что ардуина шлет коды нажатых кнопок в порт.
Для этого используем Serial monitor (в оболочке ардуино самая правая кнопка).
Что касается автохоткей скрипта - там можно в нужной строчке для отладки использовать конструкцию Tooltip <текст>, будет выводится надпись <текст> рядом с указателем мыши.
Спасибо, завтра буду пробовать...
2 Hamster!
Докладываю!
Похоже ардуина не шлёт ничего в порт.
В Serial monitor нет реакции на нажатия кнопок.
В прошивке из #74 - есть реакция, ну и дребезг хорошо заметен.
Возможна ошибка в скетче?
Вадим
Понял почему не шлет - в скетче не тот порт (пин0) был указан надо пин5. Стало реагировать, но не на все кнопки...