Страница 19 из 20 ПерваяПервая ... 91314151617181920 ПоследняяПоследняя
Показано с 181 по 190 из 200
  1. #181
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: Объединенный проект для Carduino (Arduino) All-In-One.

    Уважаемый Chip!
    Программа во вложении пишет: "Запуск программы невозможен, так как на компьютере отсутствует ftd2xx.dll. Попробуйте переустановить программу."
    Я так понимаю, что это библиотека от USB-Моста FT232, через которую осуществляется обмен скетча, прошитого в ардуино, с компьютером.
    у меня в Ордуине стоит чип CP2103, дергаться бесполезно?
    Программа работает на прямую с драйвером

    Никак нельзя изменить модуль общения ардуины с компом для какой-то большей универсальности, БЕЗ ПРИВЯЗКИ к железу?
    а то ведь теряется универсальность, которая изначально закладывалась как краеугольный камень платформы Ардуино, и появляется некая избирательность по отношению к пользователям...
    В Arduino никогда не использовали мосты Silabs

  2. #182
    Новичок
    Регистрация
    30.12.2011
    Возраст
    52
    Сообщений
    5
    Вес репутации
    0

    Печаль Re: Объединенный проект для Carduino (Arduino) All-In-One.

    Цитата Сообщение от Chip Посмотреть сообщение
    Программа работает на прямую с драйвером


    В Arduino никогда не использовали мосты Silabs
    внимательное чтение моего сообщения могло бы дать некие зацепки к тому, что не все то Ардуино, что сделано из Меги и фт232, есть оооочень много проектов и без мостов вообще - напрямую в СОМ порт включаются, и на другой элементной базе... при этом работают. странно, правда?
    но игнорировать другое железо проще, верно?
    зачем читать порт (пусть даже эмулированный, как и у любой настоящей ардуины), если можно хитро влезть в обмен фт232 и читать оттуда.

    жаль.
    всегда удивляло в программерском искусстве использование костылей и недокументированных возможностей (а также документированных бэкдоров), но, видимо, я как-то не так воспринимаю этот вопрос.
    в общем, выкиньте из названия проекта слово "УНИВЕРСАЛЬНЫЙ" - и я заткнусь

  3. #183
    !!!
    Регистрация
    30.12.2007
    Сообщений
    116
    Вес репутации
    272

    По умолчанию Re: Объединенный проект для Carduino (Arduino) All-In-One.

    Цитата Сообщение от M@troskin Посмотреть сообщение
    внимательное чтение моего сообщения могло бы дать некие зацепки к тому, что не все то Ардуино, что сделано из Меги и фт232, есть оооочень много проектов и без мостов вообще - напрямую в СОМ порт включаются, и на другой элементной базе... при этом работают. странно, правда?
    но игнорировать другое железо проще, верно?
    зачем читать порт (пусть даже эмулированный, как и у любой настоящей ардуины), если можно хитро влезть в обмен фт232 и читать оттуда.

    жаль.
    всегда удивляло в программерском искусстве использование костылей и недокументированных возможностей (а также документированных бэкдоров), но, видимо, я как-то не так воспринимаю этот вопрос.
    в общем, выкиньте из названия проекта слово "УНИВЕРСАЛЬНЫЙ" - и я заткнусь
    Объединенный проект для Carduino (Arduino) All-In-One.

    внимательнее читаем название
    и не хамим (проще было нормально попросить)

    человек потратил своё время , написал программу...

    если у вас клон или плата не Carduino или Arduino (это торговые марки)
    какие притензии

    короче я считаю за такие сообщения поможет БАН

  4. #184
    Новичок
    Регистрация
    04.05.2013
    Сообщений
    1
    Вес репутации
    0

    Восклицание Re: Объединенный проект для Carduino (Arduino) All-In-One.

    Цитата Сообщение от Alexx13 Посмотреть сообщение
    Объединенный проект для Carduino (Arduino) All-In-One.

    внимательнее читаем название
    и не хамим (проще было нормально попросить)

    человек потратил своё время , написал программу...

    если у вас клон или плата не Carduino или Arduino (это торговые марки)
    какие притензии

    короче я считаю за такие сообщения поможет БАН
    Ок. Бан на неделю (!) без объяснения причин в личку или мылом (!) - вы случаем не перепутали форум про компьютеры и гестапо?
    теперь по порядку.
    вот первая статья уважаемого CHIP-а:
    http://compcar.ru/forum/showthread.p...ll=1#post34811
    Вот ее заголовок:
    Универсальный USB девайс для использования совместно с CarPC
    вот ее содержимое:
    Сейчас на столе лежит USB девайс под названием Freeduino (аналог Arduino), ...

    дальше я чего-то не понял:
    мы говорим про Ардуино или про аналоги - про первую фридуино Чипа, о которой он, похоже, уже забыл, про мой Ордуино, вполне себе аналог Ардуино, но сделанную другим вендором, про "ардуино никогда не использовало мостов Silabs..." - только без банов и хамства, по существу - три вопроса, три ответа, ок?
    и еще вопрос:
    повторюсь, я не программист, мне сложно судить про написание программ, поэтому возможно мой вопрос в топике выше прозвучал для кого-то неприятно, прошу за это прощения.
    и все же:
    есть такая программа TermUSB под андроид (автор ШИПОВ АЛЕКСАНДР, https://play.google.com/store/apps/d...i50ZXJtdXNiIl0.) - терминал, который без проблем читает данные после любого моста - FT232, CP2102 и PL2303. Но она под андроид.
    Программа Chip-а под винду, но читает только мост FT232.
    проблема даже не в том, чтобы читать порт - проблема в том, что дальнейшая обработка данных из скетча для управления windows ведется только в программе all-in-one. вот такая, панимашь, загогулина...

    И кстати:
    Если я куплю на кармониторе Саrduino Nano V7 (то есть опять потрачу деньги на аналоги, потому что настоящей ардуино нано в данном магазине нет) - где гарантия, что этот девайс заработает нормально? да, где-то там выше по страницам было указано, что программа только для купленных в данном интернет-магазине девайсов, но не произойдет ли то же самое, что с Freeduino - забудется, как страшный сон, и все такое...
    да и седьмая (!) реинкарнация одного и того же устройства как-то не вдохновляет - страшно думать, что с предыдущими шестью стало...
    Последний раз редактировалось AndrewM; 04.05.2013 в 10:55.

  5. #185
    !!!
    Регистрация
    30.12.2007
    Сообщений
    116
    Вес репутации
    272

    По умолчанию Re: Объединенный проект для Carduino (Arduino) All-In-One.

    Цитата Сообщение от AndrewM Посмотреть сообщение
    И кстати:
    Если я куплю на кармониторе Саrduino Nano V7 (то есть опять потрачу деньги на аналоги, потому что настоящей ардуино нано в данном магазине нет) - где гарантия, что этот девайс заработает нормально? да, где-то там выше по страницам было указано, что программа только для купленных в данном интернет-магазине девайсов, но не произойдет ли то же самое, что с Freeduino - забудется, как страшный сон, и все такое...
    да и седьмая (!) реинкарнация одного и того же устройства как-то не вдохновляет - страшно думать, что с предыдущими шестью стало...
    я не нашел 3х вопросов...

    отвечу на те которые нашел

    Саrduino Nano V7 заработает 100%
    Саrduino Nano V3 была у меня (впуск начался с 3 версии) пробле нет не каких
    а что изменилось с 3 до 7 можно найти на форуме (только есть ли в этом смысл)

    а по поводу работы просто с ком портом проси Chipа
    может и поможет...

    или
    http://www.autohotkey.com/board/topi...cript/#p187247
    учи автохоткей или другие языки

    кстати TermUSB
    это простой терминал который есть и так в любой винде


    поправил шапку на будущее чтоб не было вопросов
    Последний раз редактировалось Alexx13; 05.05.2013 в 22:54.

  6. #186
    Пользователь Аватар для WhyMax
    Регистрация
    09.10.2011
    Возраст
    31
    Сообщений
    54
    Вес репутации
    165

    По умолчанию Re: Объединенный проект для Carduino (Arduino) All-In-One.

    Подправил код, оставил только рулевые кнопки и энкодер с нажатием.
    Хочу так же подключить второй энкодер, но ничего не получается :-(
    На данный момент у меня работает полноценно один энкодер и у второго энкодера работает только нажатие.
    Код:
    Код:
    #include <IRremote.h>  
    #include <EEPROM.h>
    
     byte bytes[4]={0,3}; // 0-3 байт - энкодер, рулевые кнопки, ИК приемник 
    
     int JOYSTIK_PIN = 5 ; // вход для рулевых кнопок 
    
     int RECV_PIN = 10; // вход ИК приемника
     int encoder0PinA = 2 ; // вывод А энкодера
     int encoder0PinB = 3 ; // вывод В энкодера
     int encoder0PinC = 4 ; // вход кнопки энкодера
     
     int encoder1PinA = 5 ; // вывод А энкодера 2
     int encoder1PinB = 6 ; // вывод В энкодера 2
     int encoder1PinC = 7 ; // вход кнопки энкодера 2
    
    
    byte temp; 
    //IRrecv irrecv(RECV_PIN);
    //decode_results results;
    unsigned long res_dt;
    
     //****************************************** 
     void setup() 
     { 
     pinMode(encoder0PinA, INPUT); 
     digitalWrite(encoder0PinA, HIGH); // подключить подтягивающий резистор энкодера
     pinMode(encoder0PinB, INPUT); 
     digitalWrite(encoder0PinB, HIGH); // подключить подтягивающий резистор энкодера
     pinMode(encoder0PinC, INPUT); 
     digitalWrite(encoder0PinC, HIGH); // подключить подтягивающий резистор энкодера
    
     pinMode(encoder1PinA, INPUT);      
     digitalWrite(encoder1PinA, HIGH);    // подключить подтягивающий резистор     
     pinMode(encoder1PinB, INPUT);      
     digitalWrite(encoder1PinB, HIGH);    // подключить подтягивающий резистор   
     pinMode(encoder1PinC, INPUT);      
     digitalWrite(encoder1PinC, HIGH);    // подключить подтягивающий резистор   
         
     attachInterrupt(0, doEncoderA, FALLING); // настроить прерывание энкодера interrupt 0 на pin 2 
     attachInterrupt(1, doEncoderB, FALLING); // настроить прерывание энкодера interrupt 0 на pin 3
    
     Serial.begin(115200); // настроить скорость com порт 
    
     } 
     //****************Кнопка Энкодера**************************** 
     void loop() 
     { 
     if(digitalRead(encoder0PinC)==LOW) 
     { 
     bytes[0] = 0; 
     bytes[1] = 8; 
     bytes[2] = 0; 
     bytes[3] = 0; 
     Serial.write(bytes,4); 
     while(digitalRead(encoder0PinC)==LOW){delay(50);} 
     bytes[0] = 0; 
     bytes[1] = 7; 
     bytes[2] = 0; 
     bytes[3] = 0; 
     }
    
     if(digitalRead(encoder1PinC)==LOW) 
     { 
     bytes[0] = 0; 
     bytes[1] = 6; 
     bytes[2] = 0; 
     bytes[3] = 0; 
     Serial.write(bytes,4); 
     while(digitalRead(encoder1PinC)==LOW){delay(50);} 
     bytes[0] = 0; 
     bytes[1] = 5; 
     bytes[2] = 0; 
     bytes[3] = 0; 
     } 
     joystik(); 
     } 
    
     //****************Резистивные кнопки************************** 
     void joystik() 
     { 
     res_dt = analogRead(JOYSTIK_PIN); // прочитать данные АЦП 
     if( res_dt < 1023) 
     { 
     delay(50); // пауза для проверки дребезга 
     if(res_dt == analogRead(JOYSTIK_PIN)) // если нет дребезга 
     { 
     bytes[0] = res_dt & 255; // преобразовать в 2-байта 
     bytes[1] = (res_dt & 768) >> 8; 
     bytes[2] = 0; 
     bytes[3] = 0; 
     Serial.write( bytes,4); // отправить прочитаное значение компьютеру 
     delay(250); // пауза между нажатиями 
     } 
     } 
     } 
     //*******************Поворот Энкодера (обработка прерывания)**** 
     void doEncoderA() 
     { 
     cli(); 
     if(digitalRead(encoder0PinB)==HIGH){bytes[1]=25;}else{bytes[1]=5;} 
     bytes[0] = 0; 
     bytes[2] = 0; 
     bytes[3] = 0; 
     Serial.write( bytes,4); 
     sei(); 
     } 
     //*******************Поворот Энкодера (обработка прерывания)**** 
     void doEncoderB() 
     { 
     cli(); 
     if(digitalRead(encoder0PinA)==HIGH){bytes[1]=5;}else{bytes[1]=25;}
     bytes[0] = 0; 
     bytes[2] = 0; 
     bytes[3] = 0; 
     Serial.write( bytes,4); 
     sei(); 
     }
    Пробовал добавить заменить строки в конце кода на такие:
    Код HTML:
     if(digitalRead(encoder0PinB)==HIGH){bytes[1]=25;}else{bytes[1]=5;} 
     if(digitalRead(encoder1PinB)==HIGH){bytes[1]=25;}else{bytes[1]=5;}
    И даже:
    Код HTML:
     if(digitalRead(encoder1PinB)==HIGH){bytes[1]=25;}else{bytes[1]=5;}
    Со значениями bytes[1]=25; так же экспериментировал.

    Но ничего не выходит, второй энкодер молчит.
    И главное - при повороте первого энкодера (когда в коде прописываю encoder1PinB) работает именно первый.

    2 энкодера отдельно (без резистивных кнопок) работали прекрасно: http://compcar.ru/forum/showthread.p...ll=1#post88754
    Но там смотрю принцип немного другой.
    По такому же принципу исправил код на такой:
    Код:
    #include <IRremote.h>  
    #include <EEPROM.h>
    
     byte bytes[4]={0,3}; // 0-3 байт - энкодер, рулевые кнопки, ИК приемник 
    
     int JOYSTIK_PIN = 5 ; // вход для рулевых кнопок 
    
     int RECV_PIN = 10; // вход ИК приемника
     int encoder0PinA = 2 ; // вывод А энкодера
     int encoder0PinB = 3 ; // вывод В энкодера
     int encoder0PinC = 4 ; // вход кнопки энкодера
     
     int encoder1PinA = 5 ; // вывод А энкодера 2
     int encoder1PinB = 6 ; // вывод В энкодера 2
     int encoder1PinC = 7 ; // вход кнопки энкодера 2
    
    
    byte temp; 
    //IRrecv irrecv(RECV_PIN);
    //decode_results results;
    unsigned long res_dt;
    
     //****************************************** 
     void setup() 
     { 
     pinMode(encoder0PinA, INPUT); 
     digitalWrite(encoder0PinA, HIGH); // подключить подтягивающий резистор энкодера
     pinMode(encoder0PinB, INPUT); 
     digitalWrite(encoder0PinB, HIGH); // подключить подтягивающий резистор энкодера
     pinMode(encoder0PinC, INPUT); 
     digitalWrite(encoder0PinC, HIGH); // подключить подтягивающий резистор энкодера
    
     pinMode(encoder1PinA, INPUT);      
     digitalWrite(encoder1PinA, HIGH);    // подключить подтягивающий резистор     
     pinMode(encoder1PinB, INPUT);      
     digitalWrite(encoder1PinB, HIGH);    // подключить подтягивающий резистор   
     pinMode(encoder1PinC, INPUT);      
     digitalWrite(encoder1PinC, HIGH);    // подключить подтягивающий резистор   
         
     attachInterrupt(0, doEncoderA, FALLING); // настроить прерывание энкодера interrupt 0 на pin 2 
     attachInterrupt(1, doEncoderB, FALLING); // настроить прерывание энкодера interrupt 0 на pin 3
    
     Serial.begin(115200); // настроить скорость com порт 
    
     } 
     //****************Кнопка Энкодера**************************** 
     
     
     unsigned graydecode(unsigned gray)  
    {  
     unsigned bin;  
    
     for (bin = 0; gray; gray >>= 1)  
        bin ^= gray;  
    
     return bin;  
    }  
    
    
    
     void loop() 
     { 
    static uint8_t tmp_code = 0;   
     uint8_t gray_code = digitalRead(encoder1PinA) | (digitalRead(encoder1PinB) << 1),  
      code = graydecode(gray_code);  
     if (code == 0)  
     {  
       if (tmp_code == 3)  
         {  
           bytes[0]=9;  
           bytes[1]=6;     
          Serial.write( bytes,2);    
          bytes[0]=0;    
         } else if (tmp_code == 1)  
                   {  
                      bytes[0]=9;  
                     bytes[1]=7;     
                      Serial.write( bytes,2);    
                      bytes[0]=0;   
                   }  
      }  
     tmp_code = code;  
     delay(2);  
       
       
     if(digitalRead(encoder0PinC)==LOW) 
     { 
     bytes[0] = 0; 
     bytes[1] = 8; 
     bytes[2] = 0; 
     bytes[3] = 0; 
     Serial.write(bytes,4); 
     while(digitalRead(encoder0PinC)==LOW){delay(50);} 
     bytes[0] = 0; 
     bytes[1] = 7; 
     bytes[2] = 0; 
     bytes[3] = 0; 
     }
    
     if(digitalRead(encoder1PinC)==LOW) 
     { 
     bytes[0] = 0; 
     bytes[1] = 6; 
     bytes[2] = 0; 
     bytes[3] = 0; 
     Serial.write(bytes,4); 
     while(digitalRead(encoder1PinC)==LOW){delay(50);} 
     bytes[0] = 0; 
     bytes[1] = 5; 
     bytes[2] = 0; 
     bytes[3] = 0; 
     } 
     joystik(); 
     } 
    
     //****************Резистивные кнопки************************** 
     void joystik() 
     { 
     res_dt = analogRead(JOYSTIK_PIN); // прочитать данные АЦП 
     if( res_dt < 1023) 
     { 
     delay(50); // пауза для проверки дребезга 
     if(res_dt == analogRead(JOYSTIK_PIN)) // если нет дребезга 
     { 
     bytes[0] = res_dt & 255; // преобразовать в 2-байта 
     bytes[1] = (res_dt & 768) >> 8; 
     bytes[2] = 0; 
     bytes[3] = 0; 
     Serial.write( bytes,4); // отправить прочитаное значение компьютеру 
     delay(250); // пауза между нажатиями 
     } 
     } 
     } 
     //*******************Поворот Энкодера (обработка прерывания)**** 
     void doEncoderA() 
     { 
     cli(); 
     if(digitalRead(encoder0PinB)==HIGH){bytes[1]=25;}else{bytes[1]=5;} 
     bytes[0] = 0; 
     bytes[2] = 0; 
     bytes[3] = 0; 
     Serial.write( bytes,4); 
     sei(); 
     } 
     //*******************Поворот Энкодера (обработка прерывания)**** 
     void doEncoderB() 
     { 
     cli(); 
     if(digitalRead(encoder0PinA)==HIGH){bytes[1]=5;}else{bytes[1]=25;}
     bytes[0] = 0; 
     bytes[2] = 0; 
     bytes[3] = 0; 
     Serial.write( bytes,4); 
     sei(); 
     }
    Второй энкодер срабатывает примерно 1 раз из 5-10 (иногда проскакивают значения при повороте).

    Не поможете подправить скетч?
    Последний раз редактировалось WhyMax; 01.06.2013 в 16:36.

  7. #187
    Пользователь Аватар для lti1
    Регистрация
    15.10.2010
    Возраст
    48
    Сообщений
    78
    Вес репутации
    182

    По умолчанию Re: Объединенный проект для Carduino (Arduino) All-In-One.

    Вопрос не совсем по теме, но тем не менее прошу помочь.
    Хочу часть данного проекта, а именно вольтметр, использовать для подобия интеллектуального модуля питания. Необходимо определенное значение значение temp привязать к действию. Так вот вопрос, как определить какое значение соответствует определенному напряжению. Способом "научного тыка" у меня вышло так:
    Код:
    void voltmetr() 
    { 
      temp = analogRead(VOLT_SENS);
       if (temp <= 477) //если ниже 11,7 вольт
      {
      //действие 1
      }
       else if (temp <= 469) //если ниже 11,5 вольт
      {
      //действие 2
      } 
    }
    На сколько я правильно рассчитал? И как вообще правильно это делать?

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

    По умолчанию Re: Объединенный проект для Carduino (Arduino) All-In-One.

    Для того что бы определить нужный уровень, нужно знать значения резисторов делителя

  9. #189
    Местный Аватар для Murkur
    Регистрация
    31.01.2012
    Возраст
    44
    Сообщений
    157
    Вес репутации
    224

    По умолчанию Re: Объединенный проект для Carduino (Arduino) All-In-One.

    А возможно использовать энкодер на оптопаре, как в скрол в мышках?
    MSI E350IA-E45, AMD Zacate E-350, RAM - 4 Gb, HDD - 120 Gb, M2-ITX, GPS - RoyalTek RGM-3600, 8" TFT, Win 7

  10. #190
    Пользователь Аватар для lti1
    Регистрация
    15.10.2010
    Возраст
    48
    Сообщений
    78
    Вес репутации
    182

    По умолчанию Re: Объединенный проект для Carduino (Arduino) All-In-One.

    Цитата Сообщение от Chip Посмотреть сообщение
    Для того что бы определить нужный уровень, нужно знать значения резисторов делителя
    Резисторы те же, 22 кОм и 5,1 кОм.

    Правильно я понял?
    Исходя из расчетов с этого калькулятора Входное напряжение 11,5 Вольт, R1 5,1 кОм, R2 22 кОм, получим Выходное напряжение 2,1642066420664 Вольт.
    Далее 5 Вольт / на 1024 получаем ~0,0048828125, 2,1642066420664 Вольт / 0,0048828125 получаем значение ~443,2295203.
    То есть 443 это ~11,494 Вольт?
    Последний раз редактировалось lti1; 16.10.2013 в 01:43.

Страница 19 из 20 ПерваяПервая ... 91314151617181920 ПоследняяПоследняя

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

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

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

Ваши права

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