Показано с 1 по 10 из 561

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь
    Регистрация
    07.12.2009
    Сообщений
    29
    Вес репутации
    198

    По умолчанию Re: Управление рулевыми кнопками при помощи Carduino.

    Цитата Сообщение от Chip Посмотреть сообщение
    Мои извинения A2 это 16
    #define A2 16
    #define A3 17
    Поправил, безрезультатно
    А насколько корректна эта строка?


    if ((res_dt1<730)&(res_dt1>720))digitalWrite(A2,HIGH );


    Ведь это переведённое в двоичный код ззначение на выходе ардуино, а на вх. АЦП ардуино понимает только значение U?
    Что-то я недопонимаю

  2. #2
    Новичок
    Регистрация
    21.11.2009
    Возраст
    40
    Сообщений
    19
    Вес репутации
    196

    По умолчанию Re: Управление рулевыми кнопками при помощи Carduino.

    Цитата Сообщение от Rover 176 Посмотреть сообщение
    Поправил, безрезультатно
    А насколько корректна эта строка?


    if ((res_dt1<730)&(res_dt1>720))digitalWrite(A2,HIGH );


    Ведь это переведённое в двоичный код ззначение на выходе ардуино, а на вх. АЦП ардуино понимает только значение U?
    Что-то я недопонимаю
    Нужно сначало вычисльть значение твоей кнопки смотри мой пост выше!

  3. #3
    Пользователь
    Регистрация
    07.12.2009
    Сообщений
    29
    Вес репутации
    198

    По умолчанию Re: Управление рулевыми кнопками при помощи Carduino.

    Цитата Сообщение от Dr_cannabis Посмотреть сообщение
    Нужно сначало вычисльть значение твоей кнопки смотри мой пост выше!


    чтоб его получить я думаю можно попробывать что то типо
    Serial.write( dt1,DEC) хотя неуверен лучше у гуру поинтересоваться!
    Строго следую твоим указаниям! Интересуюсь, Chipу мозх рву

  4. #4
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    55
    Сообщений
    13,381
    Вес репутации
    10

    По умолчанию Re: Управление рулевыми кнопками при помощи Carduino.

    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(A2OUTPUT);
    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<740digitalWrite(A2,HIGH );
    bytes[0] = res_dt1 255// преобразовать в 2-байта 
    bytes[1] = (res_dt1 768) >> 8
    Serial.writebytes,2); // отправить прочитаное значение компьютеру 

    Последний раз редактировалось Chip; 25.05.2010 в 11:21.

  5. #5
    Пользователь
    Регистрация
    07.12.2009
    Сообщений
    29
    Вес репутации
    198

    По умолчанию Re: Управление рулевыми кнопками при помощи Carduino.

    Иееес!!! Заработало!
    Спасибо всем!
    Немного дописал скетч:

    #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)

    Я повесил:
    1. Вкл/выкл УМ, DAC, GPS, можно и сам комп включать
    2. Регулировка громкости аналоговым моторизированым 6-канальным ALPS : http://www.samodelka.ru/goods/6201.htm
    3. Стандартные функции управления РС

    Спасибо всем за участие!
    Последний раз редактировалось Rover 176; 25.05.2010 в 15:17.

  6. #6
    Пользователь
    Регистрация
    24.03.2008
    Сообщений
    39
    Вес репутации
    238

    По умолчанию Re: Управление рулевыми кнопками при помощи Carduino.

    Имею проблему с данным устройством...
    Стоит Windows7 максимальная, залита прошивка с двойным нажатием.
    Запускаю прогу HotKey разворачиваю вижу "1003" это когда ни одна кнопка не нажата, вижу дребезг т.е то 1003 то 1004 и т.п.
    потом показания повисают и на нажатия не реагируют. Потом отвисает и даже реагирует на нажатия но может зависнуть в нажатом положении...
    Смена прошивки на любую из этой темы не помогает.
    Кто виноват - контроллер или прога на компе.

  7. #7
    Пользователь
    Регистрация
    04.12.2008
    Возраст
    48
    Сообщений
    75
    Вес репутации
    226

    По умолчанию Re: Управление рулевыми кнопками при помощи Carduino.

    запустив файл KeyConfig.exe узнал значения всех кнопок. (680 , 110 ,30 , 413 и так далее)
    как на кнопки повесить выходы D2-13? уже раз тридцать пробовал по разному,не выходит...
    Последний раз редактировалось Beard; 27.02.2014 в 22:25.

  8. #8
    Пользователь
    Регистрация
    04.12.2008
    Возраст
    48
    Сообщений
    75
    Вес репутации
    226

    По умолчанию Re: Управление рулевыми кнопками при помощи Carduino.

    PHP код:
    #define PIN 5 //номер аналогового порта
    #define LIMIT 6 //предел погрешности сопротивления


    byte bytes[2];
    int res_dt1;
    unsigned long math_time,old_time,real_time;
    void setup()
    {
    pinMode(2,OUTPUT); 
    pinMode(3,OUTPUT); 
    pinMode(4,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>675 && res_dt1<685digitalWrite(2,LOW );
    delay(30);
    digitalWrite(2HIGH);

    if (
    res_dt1>105 && res_dt1<115digitalWrite(3,LOW );
    delay(30);
    digitalWrite(3HIGH);

    if (
    res_dt1>25 && res_dt1<35digitalWrite(4,LOW );
    delay(30);
    digitalWrite(4HIGH);


    bytes[0] = res_dt1 255// преобразовать в 2-байта
    bytes[1] = (res_dt1 768) >> 8;
    Serial.writebytes,2); // отправить прочитаное значение компьютеру
    }

    почти добился своего,светодиод при нажатии нужной кнопки мигает,как сделать что бы пока нажимаешь он горел постоянно?

  9. #9
    Пользователь
    Регистрация
    04.12.2008
    Возраст
    48
    Сообщений
    75
    Вес репутации
    226

    По умолчанию Re: Управление рулевыми кнопками при помощи Carduino.

    #define PIN 5 //номер аналогового порта
    #define LIMIT 6 //предел погрешности сопротивления


    byte bytes[2];
    int res_dt1;
    unsigned long math_time,old_time,real_time;
    void setup()
    {
    pinMode(2,OUTPUT);
    pinMode(3,OUTPUT);
    pinMode(4,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>675 && res_dt1<685) digitalWrite(2,LOW );
    delay(30);
    digitalWrite(2, HIGH);

    if (res_dt1>105 && res_dt1<115) digitalWrite(3,LOW );
    if (res_dt1>1020 && res_dt1<1030)digitalWrite(3, HIGH);

    if (res_dt1>25 && res_dt1<35) digitalWrite(4,LOW );
    if (res_dt1>1020 && res_dt1<1030)digitalWrite(4, HIGH);


    bytes[0] = res_dt1 & 255; // преобразовать в 2-байта
    bytes[1] = (res_dt1 & 768) >> 8;
    Serial.write( bytes,2); // отправить прочитаное значение компьютеру
    }
    }
    так не критично? выделил жирным. на ненажатых кнопках код 1023. работает,но думаю,может по другому правильно?

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 6 (пользователей: 0 , гостей: 6)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •