да, компилятор скачал 1.02 и ему нужна была новая библиотека ir. на дом компе все прогнал-все работает, но теперь другая проблема, в авто под win7 программа не видит устройство. буду благодарен если укажете направление
Вид для печати
да, компилятор скачал 1.02 и ему нужна была новая библиотека ir. на дом компе все прогнал-все работает, но теперь другая проблема, в авто под win7 программа не видит устройство. буду благодарен если укажете направление
Установи свежий драйвер
Не помогает новый драйвер. Затыки какие-то, отклик carduino, как бы, с задержкой и кнопки надо держать не менее секунды. Регулировка яркости вообще непонятно когда работает, когда-нет. После сна программу all-in-one приходится перезапускать, иначе не работает. Уже не знаю, что и делать.
и на win7 x64 "IcarDs" заработает ? или он может использует свой драйвер собственный?
Добавлю по поводу драйверов.
В Ардуино общение по USB реализовано на микросхеме FT232 (переходник COM<->USB). Производитель - FTDI.
Свеженькие драйвера лучше брать с сайта производителя http://www.ftdichip.com.
В большинстве случаев нужен драйвер виртуального СОМ-порта, страница с ними - http://www.ftdichip.com/Drivers/VCP.htm
Есть драйверы под 32/64-bit версии Win XP/Vista/7, Server 2003/2008 и Linux.
Там же есть и ссылка на страничку с англоязычными мануалами по установке (Installation Guides) с картинками.
Вопрос в тему, для arduino mega переписывать софт нужно? Или только адреса портов поменять?
Если у Вас Mega с FTDI то все будет работать
Здравствуйте Chip, хороший проект, но так как я новичок в ардуино, то у меня естественно есть вопросы. С управлением от кнопок руля и ик пульта всё ясно,а вот с остальным непонятно. сигнал с батареи(вольтметр) как и где смотреть, какой софт, температура ,освещённость или надо искать все темы по этим устройствам в отдельности, тогда как ответ в одном из постов, что запускать софт только из шапки. В общем хотелось бы подробней инструкцию по данному проекту, только пожалуйста не отправляйте гуглить, мне не лень, время дорого стоит каждую тему по "50" страниц лопатить, экодер-какой марки или с какими параметрами лучше, а то в магазине глаза разбижались от их количества, и ещё вопрос -после настройки ик пульта программа ведёт себя некоректно, жму допустим убавить громкость-убавляет,прибавить-опять убавляет,потом начинает прибавлять и так с любыми командами, прошу дать ответ
такс... пытаюсь вычленить для себя информацию о кнопках на руле. Как ардуино понимает рулевые кнопки я понял, а вот вопросик, как он потом передает информацию на ПК? Я так понимаю, что должна быть какая-то программа на пк которая интерпретирует нажатия ардуины?
прогу уже нашел. она под винду. Мне под андроид не подойдет. жаль
Здравствуйте, не могу найти где скачать библиотеку #include <IRremote.h> ткните плиз если не трудно.
Что то не получается у меня использовать данную библиотеку, компилятор arduino-1.0.4
Выдает кучу ошибок после компиляции
C:\arduino-1.0.4\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=104 -IC:\arduino-1.0.4\hardware\arduino\cores\arduino -IC:\arduino-1.0.4\hardware\arduino\variants\eightanaloginputs -IC:\arduino-1.0.4\libraries\IRremote C:\Users\Maikl\AppData\Local\Temp\build82993979537 73187129.tmp\All_in_one.cpp -o C:\Users\Maikl\AppData\Local\Temp\build82993979537 73187129.tmp\All_in_one.cpp.o
All_in_one.ino: In function 'void joystik()':
All_in_one.ino:101: warning: comparison between signed and unsigned integer expressions
C:\arduino-1.0.4\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=104 -IC:\arduino-1.0.4\hardware\arduino\cores\arduino -IC:\arduino-1.0.4\hardware\arduino\variants\eightanaloginputs -IC:\arduino-1.0.4\libraries\IRremote -IC:\arduino-1.0.4\libraries\IRremote\utility C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp -o C:\Users\Maikl\AppData\Local\Temp\build82993979537 73187129.tmp\IRremote\IRremote.cpp.o
In file included from C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:14:
C:\arduino-1.0.4\libraries\IRremote\/IRremoteInt.h:15:22: warning: WProgram.h: No such file or directory
In file included from C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:14:
C:\arduino-1.0.4\libraries\IRremote\/IRremoteInt.h:113: error: 'uint8_t' does not name a type
C:\arduino-1.0.4\libraries\IRremote\/IRremoteInt.h:114: error: 'uint8_t' does not name a type
C:\arduino-1.0.4\libraries\IRremote\/IRremoteInt.h:115: error: 'uint8_t' does not name a type
C:\arduino-1.0.4\libraries\IRremote\/IRremoteInt.h:118: error: 'uint8_t' does not name a type
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp: In member function 'void IRsend::mark(int)':
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:259: error: 'delayMicroseconds' was not declared in this scope
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp: In member function 'void IRsend::space(int)':
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:268: error: 'delayMicroseconds' was not declared in this scope
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp: In member function 'void IRsend::enableIROut(int)':
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:288: error: 'OUTPUT' was not declared in this scope
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:288: error: 'pinMode' was not declared in this scope
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:289: error: 'LOW' was not declared in this scope
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:289: error: 'digitalWrite' was not declared in this scope
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp: In constructor 'IRrecv::IRrecv(int)':
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:306: error: 'volatile struct irparams_t' has no member named 'recvpin'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:307: error: 'volatile struct irparams_t' has no member named 'blinkflag'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp: In member function 'void IRrecv::enableIRIn()':
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:331: error: 'volatile struct irparams_t' has no member named 'rcvstate'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:332: error: 'volatile struct irparams_t' has no member named 'rawlen'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:336: error: 'volatile struct irparams_t' has no member named 'recvpin'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:336: error: 'INPUT' was not declared in this scope
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:336: error: 'pinMode' was not declared in this scope
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp: In member function 'void IRrecv::blink13(int)':
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:343: error: 'volatile struct irparams_t' has no member named 'blinkflag'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:345: error: 'OUTPUT' was not declared in this scope
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:345: error: 'pinMode' was not declared in this scope
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp: In function 'void __vector_9()':
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:359: error: 'volatile struct irparams_t' has no member named 'recvpin'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:359: error: 'digitalRead' was not declared in this scope
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:362: error: 'volatile struct irparams_t' has no member named 'rawlen'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:364: error: 'volatile struct irparams_t' has no member named 'rcvstate'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:366: error: 'volatile struct irparams_t' has no member named 'rcvstate'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:375: error: 'volatile struct irparams_t' has no member named 'rawlen'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:376: error: 'volatile struct irparams_t' has no member named 'rawlen'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:378: error: 'volatile struct irparams_t' has no member named 'rcvstate'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:384: error: 'volatile struct irparams_t' has no member named 'rawlen'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:386: error: 'volatile struct irparams_t' has no member named 'rcvstate'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:391: error: 'volatile struct irparams_t' has no member named 'rawlen'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:393: error: 'volatile struct irparams_t' has no member named 'rcvstate'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:401: error: 'volatile struct irparams_t' has no member named 'rcvstate'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:412: error: 'volatile struct irparams_t' has no member named 'blinkflag'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:414: error: 'B00100000' was not declared in this scope
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:417: error: 'B11011111' was not declared in this scope
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp: In member function 'void IRrecv::resume()':
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:423: error: 'volatile struct irparams_t' has no member named 'rcvstate'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:424: error: 'volatile struct irparams_t' has no member named 'rawlen'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp: In member function 'int IRrecv::decode(decode_results*)':
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:434: error: 'volatile struct irparams_t' has no member named 'rawlen'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:435: error: 'volatile struct irparams_t' has no member named 'rcvstate'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp: In member function 'long int IRrecv::decodeJVC(decode_results*)':
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:507: error: 'volatile struct irparams_t' has no member named 'rawlen'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:509: error: 'volatile struct irparams_t' has no member named 'rawlen'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:509: error: 'volatile struct irparams_t' has no member named 'rawlen'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:520: error: 'volatile struct irparams_t' has no member named 'rawlen'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp: In member function 'long int IRrecv::decodeSAMSUNG(decode_results*)':
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:566: error: 'volatile struct irparams_t' has no member named 'rawlen'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp: In member function 'long int IRrecv::decodeNEC(decode_results*)':
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:663: error: 'volatile struct irparams_t' has no member named 'rawlen'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:671: error: 'volatile struct irparams_t' has no member named 'rawlen'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp: In member function 'long int IRrecv::decodeSony(decode_results*)':
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:705: error: 'volatile struct irparams_t' has no member named 'rawlen'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:715: error: 'volatile struct irparams_t' has no member named 'rawlen'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp: In member function 'long int IRrecv::decodeRC5(decode_results*)':
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:794: error: 'volatile struct irparams_t' has no member named 'rawlen'
C:\arduino-1.0.4\libraries\IRremote\IRremote.cpp:805: error: 'volatile struct irparams_t' has no member named 'rawlen'
Попробовал использовать версию компилятора 017 ошибок меньше, но результат опять не радует использую ардуино нано V3.0 пока голую т.е. только usb хвост воткнут...
java.io.IOException: Target platform: "null" not found.
Make sure that "build.target" in the
preferences file points to a subdirectory of
D:\Maikl\Auto\Carduino\arduino-0017\arduino-0017\hardware\cores
at processing.app.debug.Target.<init>(Target.java:49)
at processing.app.Editor$43.run(Editor.java:1751)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilter s(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(U nknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarch y(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
ну не силен я в программировании.
Кто в теме подскажите плиз куда копать...
Идите в C:\arduino\libraries\IRremote\IRremoteInt.h, строку 15 и заменитеЦитата:
Что то не получается у меня использовать данную библиотеку, компилятор arduino-1.0.4
Выдает кучу ошибок после компиляции
#include <WProgram.h>
на
#include <Arduino.h>
Уважаемый Chip. А где же взять программку вольтметра? второй день рою, у себя в копиях нашел страницу с вольтметром а на сайте ее уже нету. Скетч залил, обвязку делителем сделал, а результаты измерений посмотреть не могу. укажите пож где смотреть...
Так программа в теме про вольтметр на arduino
Спасибо большое.
Уважаемый Chip!
Программа во вложении пишет: "Запуск программы невозможен, так как на компьютере отсутствует ftd2xx.dll. Попробуйте переустановить программу."
Я так понимаю, что это библиотека от USB-Моста FT232, через которую осуществляется обмен скетча, прошитого в ардуино, с компьютером.
у меня в Ордуине стоит чип CP2103, дергаться бесполезно?
Никак нельзя изменить модуль общения ардуины с компом для какой-то большей универсальности, БЕЗ ПРИВЯЗКИ к железу?
а то ведь теряется универсальность, которая изначально закладывалась как краеугольный камень платформы Ардуино, и появляется некая избирательность по отношению к пользователям...
Программа работает на прямую с драйверомЦитата:
Уважаемый Chip!
Программа во вложении пишет: "Запуск программы невозможен, так как на компьютере отсутствует ftd2xx.dll. Попробуйте переустановить программу."
Я так понимаю, что это библиотека от USB-Моста FT232, через которую осуществляется обмен скетча, прошитого в ардуино, с компьютером.
у меня в Ордуине стоит чип CP2103, дергаться бесполезно?
В Arduino никогда не использовали мосты SilabsЦитата:
Никак нельзя изменить модуль общения ардуины с компом для какой-то большей универсальности, БЕЗ ПРИВЯЗКИ к железу?
а то ведь теряется универсальность, которая изначально закладывалась как краеугольный камень платформы Ардуино, и появляется некая избирательность по отношению к пользователям...
внимательное чтение моего сообщения могло бы дать некие зацепки к тому, что не все то Ардуино, что сделано из Меги и фт232, есть оооочень много проектов и без мостов вообще - напрямую в СОМ порт включаются, и на другой элементной базе... при этом работают. странно, правда? :rolleyes:
но игнорировать другое железо проще, верно?
зачем читать порт (пусть даже эмулированный, как и у любой настоящей ардуины), если можно хитро влезть в обмен фт232 и читать оттуда. :rolleyes:
жаль. :(
всегда удивляло в программерском искусстве использование костылей и недокументированных возможностей (а также документированных бэкдоров), но, видимо, я как-то не так воспринимаю этот вопрос.
в общем, выкиньте из названия проекта слово "УНИВЕРСАЛЬНЫЙ" - и я заткнусь
Объединенный проект для 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 - забудется, как страшный сон, и все такое...
да и седьмая (!) реинкарнация одного и того же устройства как-то не вдохновляет - страшно думать, что с предыдущими шестью стало...
я не нашел 3х вопросов...
отвечу на те которые нашел
Саrduino Nano V7 заработает 100%
Саrduino Nano V3 была у меня (впуск начался с 3 версии) пробле нет не каких
а что изменилось с 3 до 7 можно найти на форуме (только есть ли в этом смысл)
а по поводу работы просто с ком портом проси Chipа
может и поможет...
или
http://www.autohotkey.com/board/topi...cript/#p187247
учи автохоткей или другие языки
кстати TermUSB
это простой терминал который есть и так в любой винде
поправил шапку на будущее чтоб не было вопросов
Подправил код, оставил только рулевые кнопки и энкодер с нажатием.
Хочу так же подключить второй энкодер, но ничего не получается :-(
На данный момент у меня работает полноценно один энкодер и у второго энкодера работает только нажатие.
Код:
Пробовал добавить заменить строки в конце кода на такие:Код:#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;}
Со значениями bytes[1]=25; так же экспериментировал.Код HTML:if(digitalRead(encoder1PinB)==HIGH){bytes[1]=25;}else{bytes[1]=5;}
Но ничего не выходит, второй энкодер молчит.
И главное - при повороте первого энкодера (когда в коде прописываю encoder1PinB) работает именно первый.
2 энкодера отдельно (без резистивных кнопок) работали прекрасно: http://compcar.ru/forum/showthread.p...ll=1#post88754
Но там смотрю принцип немного другой.
По такому же принципу исправил код на такой:
Второй энкодер срабатывает примерно 1 раз из 5-10 (иногда проскакивают значения при повороте).Код:#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();
}
Не поможете подправить скетч?
Вопрос не совсем по теме, но тем не менее прошу помочь.
Хочу часть данного проекта, а именно вольтметр, использовать для подобия интеллектуального модуля питания. Необходимо определенное значение значение temp привязать к действию. Так вот вопрос, как определить какое значение соответствует определенному напряжению. Способом "научного тыка" у меня вышло так:
На сколько я правильно рассчитал? И как вообще правильно это делать?Код:void voltmetr()
{
temp = analogRead(VOLT_SENS);
if (temp <= 477) //если ниже 11,7 вольт
{
//действие 1
}
else if (temp <= 469) //если ниже 11,5 вольт
{
//действие 2
}
}
Для того что бы определить нужный уровень, нужно знать значения резисторов делителя
А возможно использовать энкодер на оптопаре, как в скрол в мышках?
Резисторы те же, 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 Вольт?
Ага, нашёл пример на другом форуме (http://www.cnc-club.ru/forum/viewtop...t=2972&p=64785), буду пробовать.
Активистам pccar всего наилучшего...помогите советом начинающему ....имеется Freeduino V5 Nano, вопрос следующий- возможно ли объединить на его основе проект AVC LAN (Freeduino+PCA82C250) и All-In-One, если можно то как правильно объединить скетчи этих проектов и что в них необходимо поправить...практики пока не хватает...:(
У меня при запуске программы All_in_one показывает сообщение "FT_Open - Device Not Found". Что это может значить?
программа работает на прямую с драйверами FTDI
Если ардуино без FTDI то работать не будет
К сожалению нет
Можно iCarDS воспользоваться
Это был ответ мне? Вообще-то у меня не обычная Мега, а копия: http://www.aliexpress.com/item/Whole...93210081.html?
Так мне для Икара и нужно подключить этот энкодер.
Так в икаре есть свой плагин
Он может так же работать и с энкодером