PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Дополнительные устройства (http://pccar.ru/forumdisplay.php?f=177)
-   -   Резистивные кнопки под андроид (http://pccar.ru/showthread.php?t=18478)

armlive 05.06.2014 09:21

Цитата:

Сообщение от pokertk (Сообщение 299118)
Дребезг, не?

Подключаются к другому планшету, все идеально. Попробую сегодня перепрошить.

ilya174 05.06.2014 15:53

Цитата:

Вопрос: у кого работают кнопки на Arduino UNO R3, стабильно?
После замены блока питания, начались косяки, в месте с кодами кнопок отсылается ещё что-то, что постоянно вводит систему в ступор, а потом выскакивает окно о остановке приложений, в основном гугл поиск. Что только не делал, в терминале все чисто, уже 3 день мучаюсь.
Было подобное, когда скорость порта выставлял отличную от 9600.

armlive 05.06.2014 17:11

Цитата:

Сообщение от ilya174 (Сообщение 299163)
Было подобное, когда скорость порта выставлял отличную от 9600.

Короче пере прошил планшет, косяки пропали. С чем было связанно это, не пойму.

Timur PERM 06.06.2014 05:48

Цитата:

Сообщение от armlive (Сообщение 299179)
Короче пере прошил планшет, косяки пропали. С чем было связанно это, не пойму.

Прошил старой прошивкой?

armlive 06.06.2014 09:22

Цитата:

Сообщение от Timur PERM (Сообщение 299225)
Прошил старой прошивкой?

Нет, той же

Alekssandr 13.06.2014 23:03

pokertk

Это родные рулевые кнопки с Lacetti

Artemka181 15.06.2014 15:54

Не могу прошить USB HID в Leonardo и maga2560 на чипе mega8U2. Использовал Flip 3.4.7. Подскажите что не так ?

lti1 15.06.2014 16:25

Artemka181, Leonardo и так умеет прикидываться HID устройством.

Artemka181 15.06.2014 21:15

Цитата:

Сообщение от lti1 (Сообщение 300003)
Artemka181, Leonardo и так умеет прикидываться HID устройством.

Вот у меня не хотит !!!! Сам не знаю

lti1 15.06.2014 21:48

Цитата:

Сообщение от Artemka181 (Сообщение 300019)
Вот у меня не хотит !!!! Сам не знаю

А что делаете и что не получается? Так?

Artemka181 16.06.2014 07:38

Делаю так как написано, все проходит но как USB hid не определяется. В андройде не работает тоже.

Chubaka885 09.08.2014 20:08

Помню где то на форуме было решение одновременной работы андройд клавиатуры при подключенной внешней. Кто нибудь даст ссылку?
Поиском найти не могу.

з.ы решение не установкой APK а изменением кода в прошивке.

SpawnUA 11.08.2014 14:08

Одновременное использование экранной и внешней клавы возможно, если поставить Smart Keyboard - там можно настроить чтобы показывалась и экранная клава.

Chubaka885 02.09.2014 21:57

Цитата:

Сообщение от SpawnUA (Сообщение 303705)
Одновременное использование экранной и внешней клавы возможно, если поставить Smart Keyboard - там можно настроить чтобы показывалась и экранная клава.

Спасибо!, но я хотел без установки APK. Видел что можно где что то прописать, а гле видел не помню.

Artemka181 05.09.2014 21:05

Приветствую. Приобрел ардуино леонардо. Заливаю скетч кнопки работают. Коды кнопокподобрал. Но вот данный скетч не работает.Планшет на него не реагирует хотя как устройство ввода определил. Что могу делать не так ?
Набор резестивных кнопок подключен к А0
Цитата:

// Для рулевых кнопок
uint8_t buf[8] = {
0 };

// реле питания звуковой карты
#define relePin4 11

// Задержки между нажатиями конкретных кнопок, миллисекунды
#define KEY_CH_VOL_MINUS_DELAY (200)
#define KEY_CH_VOL_PLUS_DELAY (200)
#define KEY_CH_PAUSE_DELAY (200)
#define KEY_CH_PREV_TRACK_DELAY (400)
#define KEY_CH_FORW_TRACK_DELAY (400)
#define KEY_CH_TAB_DELAY (200)
#define KEY_CH_ESC_DELAY (200)
#define KEY_CH_AUDIO_OFF_DELAY (400)
#define KEY_CH_PLUS_DELAY (200)
#define KEY_MODE_DELAY (200)
#define KEY_MODE_DELAY (200)
#define KEY_MODE_DELAY (200)
#define KEY_MODE_DELAY (200)

// Значения кнопок значение "1500" свободные кнопки, если у вас больше 6 кнопок, можете использовать прописав свои значения
#define KEY_CH_VOL_MINUS (540)
#define KEY_CH_VOL_PLUS (337)
#define KEY_CH_PAUSE (1500)
#define KEY_CH_PREV_TRACK (500)
#define KEY_CH_FORW_TRACK (251)
#define KEY_CH_TAB (484)
#define KEY_CH_ESC (217)
#define KEY_CH_AUDIO_OFF (1500)
#define KEY_CH_PLUS (1500)
#define KEY_CH_MINUS (1500)


// Погрешность при чтении кнопок
#define KEY_DELTA (10)

// Коды кнопок, что отсылаем в порт внешней проге, 0 пустое значение при добавлении кнопок больше 6-ти, пропишите коды желаемых кнопок
#define CH_VOL_MINUS (81)
#define CH_VOL_PLUS (82)
#define CH_PAUSE (0)
#define CH_PREV_TRACK (80)
#define CH_FORW_TRACK (79)
#define CH_TAB (72)
#define CH_ESC (74)
#define CH_AUDIO_OFF (0)
#define CH_PLUS (0)
#define CH_MINUS (0)
#define NONE (0)

// Кнопки
#define ACCPin 2 // через делитель к ACC // в моем случае к питанию uno 5в
#define ControlPin A1 // через делитель к +12В // в моем случае к питанию uno 5в
#define relePin1 8 // реле разрыва OTG 5 контакт
#define relePin2 9 // реле датчика хола
#define relePin3 10 // реле активации усилителей
#define ONHUB 1000 // время включения реле HUB
#define ONTablet 4000 // время включения планшета
#define ONAudio 9000 // время включения аудио
#define OFFHUB 8000 // время выключения реле HUB---//моем случае не используется, контролируется реле задержкой К0
#define OFFTablet 3000 // время выключения планшета //в моем случае не используется, контролируется реле задержкой К0
#define OFFAudio 10 // время выключения аудио // в моем случае не используется, контролируется реле задержкой К0

unsigned long LastTimeKeyPressed = millis();
unsigned long duration, millisold, off = 0;
boolean stateACC, relestate1, relestate2,relestate3,relestate4 = 0;
int LastKeyPressed = NONE;
int flag = 1;
int flag2 = 0;
void setup()
{
Serial.begin(9600);
pinMode(relePin1, OUTPUT);
pinMode(relePin2, OUTPUT);
pinMode(relePin3, OUTPUT);
pinMode(relePin4, OUTPUT);
}
void loop()
{
ReadSteering();
Knopki();
delay(10);
}
// Читает рулевые кнопки и пишет в порт код нажатой кнопки
void ReadSteering()
{
pinMode(relePin4, OUTPUT);
digitalWrite(relePin4,flag );
unsigned long TimeKeyPressed;
int KeyPressed = NONE;
int dt1 = analogRead(A0);
delay(10);
Serial.println(dt1); // Раскомментировать для вывода и обозначения значения кнопок в монитор
int dt2 = analogRead(A0);
//Serial.println(dt2);
if (abs(dt1-dt2)<=490 and dt1<1024 ) //если нет дребезга и что-то есть
{
// Регистрируем время нажатия кнопки
TimeKeyPressed = millis(); //получить реальное время

//CH_VOL_MINUS
if ( (dt1-KEY_DELTA <= KEY_CH_VOL_MINUS) and (dt1+KEY_DELTA >= KEY_CH_VOL_MINUS) )
{
if ( (LastKeyPressed != CH_VOL_MINUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_VOL_MINUS_DELAY))
{
LastKeyPressed = CH_VOL_MINUS;
buf[2] = CH_VOL_MINUS;
LastTimeKeyPressed = TimeKeyPressed;
Serial.write(buf, 8);
releaseKey();
}
}
//CH_VOL_PLUS
else if ( (dt1-KEY_DELTA <= KEY_CH_VOL_PLUS) and (dt1+KEY_DELTA >=KEY_CH_VOL_PLUS) )
{
if ( (LastKeyPressed != CH_VOL_PLUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_VOL_PLUS_DELAY) )
{
LastKeyPressed = CH_VOL_PLUS;
buf[2]=CH_VOL_PLUS;
LastTimeKeyPressed = TimeKeyPressed;
Serial.write(buf, 8);
releaseKey();
}
}
//CH_PAUSE
else if ( (dt1-KEY_DELTA <= KEY_CH_PAUSE) and (dt1+KEY_DELTA >=KEY_CH_PAUSE) )
{
if ( (LastKeyPressed != CH_PAUSE) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_PAUSE_DELAY) )
{
LastKeyPressed = CH_PAUSE;
buf[2]=CH_PAUSE;
LastTimeKeyPressed = TimeKeyPressed;
Serial.write(buf, 8);
releaseKey();
}
}
//CH_PREV_TRACK
else if ( (dt1-KEY_DELTA <= KEY_CH_PREV_TRACK) and (dt1+KEY_DELTA >=KEY_CH_PREV_TRACK) )
{
if ( (LastKeyPressed != CH_PREV_TRACK) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_PREV_TRACK_DELAY) )
{
LastKeyPressed = CH_PREV_TRACK;
buf[2]=CH_PREV_TRACK;
LastTimeKeyPressed = TimeKeyPressed;
Serial.write(buf, 8);
releaseKey();
}
}
//CH_FORW_TRACK
else if ( (dt1-KEY_DELTA <= KEY_CH_FORW_TRACK) and (dt1+KEY_DELTA >=KEY_CH_FORW_TRACK) )
{
if ( (LastKeyPressed != CH_FORW_TRACK) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_FORW_TRACK_DELAY) )
{
LastKeyPressed = CH_FORW_TRACK;
buf[2]=CH_FORW_TRACK;
LastTimeKeyPressed = TimeKeyPressed;
Serial.write(buf, 8);
releaseKey();
}
}
//CH_TAB
else if ( (dt1-KEY_DELTA <= KEY_CH_TAB) and (dt1+KEY_DELTA >=KEY_CH_TAB) )
{
if ( (LastKeyPressed != CH_TAB) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_TAB_DELAY) )
{
LastKeyPressed = CH_TAB;
buf[2]=CH_TAB;
LastTimeKeyPressed = TimeKeyPressed;
Serial.write(buf, 8);
releaseKey();
}
}
//CH_ESC
else if ( (dt1-KEY_DELTA <= KEY_CH_ESC) and (dt1+KEY_DELTA >=KEY_CH_ESC) )
{
if ( (LastKeyPressed != CH_ESC) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_ESC_DELAY) )
{
LastKeyPressed = CH_ESC;
buf[2]=CH_ESC;
LastTimeKeyPressed = TimeKeyPressed;
Serial.write(buf, 8);
releaseKey();
}
}
//CH_AUDIO_OFF
else if ( (dt1-KEY_DELTA <= KEY_CH_AUDIO_OFF) and (dt1+KEY_DELTA >=KEY_CH_AUDIO_OFF) )
{
if ( (LastKeyPressed != CH_AUDIO_OFF) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_AUDIO_OFF_DELAY)&& flag==1)
{
digitalWrite(relePin4, flag2);
flag = 0;
flag2 = 1;
}
else if ( (LastKeyPressed != CH_AUDIO_OFF) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_AUDIO_OFF_DELAY)&& flag==0)
{
digitalWrite(relePin4, flag2);
flag = 1;
flag2 = 0;
}
LastKeyPressed = CH_AUDIO_OFF;
LastTimeKeyPressed = TimeKeyPressed;
releaseKey();
}

//CH_PLUS
else if ( (dt1-KEY_DELTA <= KEY_CH_PLUS) and (dt1+KEY_DELTA >=KEY_CH_PLUS) )
{
if ( (LastKeyPressed != CH_PLUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_PLUS_DELAY) )
{
LastKeyPressed = CH_PLUS;
buf[2]=CH_MINUS;
LastTimeKeyPressed = TimeKeyPressed;
Serial.write(buf, 8);
releaseKey();
}
}
//CH_PLUS
else if ( (dt1-KEY_DELTA <= KEY_CH_PLUS) and (dt1+KEY_DELTA >=KEY_CH_PLUS) )
{
if ( (LastKeyPressed != CH_PLUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_PLUS_DELAY) )
{
LastKeyPressed = CH_PLUS;
buf[2]=CH_MINUS;
LastTimeKeyPressed = TimeKeyPressed;
Serial.write(buf, 8);
releaseKey();
}
}
//CH_PLUS
else if ( (dt1-KEY_DELTA <= KEY_CH_PLUS) and (dt1+KEY_DELTA >=KEY_CH_PLUS) )
{
if ( (LastKeyPressed != CH_PLUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_PLUS_DELAY) )
{
LastKeyPressed = CH_PLUS;
buf[2]=CH_MINUS;
LastTimeKeyPressed = TimeKeyPressed;
Serial.write(buf, 8);
releaseKey();
}
}
//CH_PLUS
else if ( (dt1-KEY_DELTA <= KEY_CH_PLUS) and (dt1+KEY_DELTA >=KEY_CH_PLUS) )
{
if ( (LastKeyPressed != CH_PLUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_PLUS_DELAY) )
{
LastKeyPressed = CH_PLUS;
buf[2]=CH_MINUS;
LastTimeKeyPressed = TimeKeyPressed;
Serial.write(buf, 8);
releaseKey();
}
}
//CH_PLUS
else if ( (dt1-KEY_DELTA <= KEY_CH_PLUS) and (dt1+KEY_DELTA >=KEY_CH_PLUS) )
{
if ( (LastKeyPressed != CH_PLUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_PLUS_DELAY) )
{
LastKeyPressed = CH_PLUS;
buf[2]=CH_MINUS;
LastTimeKeyPressed = TimeKeyPressed;
Serial.write(buf, 8);
releaseKey();
}
}
}
}

void releaseKey()
{
buf[0] = 0;
buf[2] = 0;
Serial.write(buf, 8); // Release key
}

void Knopki()
{
if (digitalRead(ACCPin)&&!stateACC) {
stateACC=1;
duration = millis();
}
if (!digitalRead(ACCPin)&&stateACC) {
stateACC=0;
off = millis();
}
if(digitalRead(ACCPin) && stateACC && millis ()-duration > ONHUB){
digitalWrite(relePin1, HIGH);
relestate1 = 1;
millisold = millis();
}
if(digitalRead(ACCPin) && stateACC && millis ()-duration > ONTablet){
digitalWrite(relePin2, HIGH);
relestate2 = 1;
millisold = millis();
}
if(digitalRead(ACCPin) && stateACC && millis ()-duration > ONAudio){
digitalWrite(relePin3, HIGH);
relestate3 = 1;
millisold = millis();
}
if(!digitalRead(ACCPin) && !stateACC && millis () -off> OFFHUB){
digitalWrite(relePin1, LOW);
relestate1 = 0;
millisold = millis();
}
if(!digitalRead(ACCPin) && !stateACC && millis () -off > OFFTablet){
digitalWrite(relePin2, LOW);
relestate2 = 0;
millisold = millis();
}
if(!digitalRead(ACCPin) && !stateACC && millis () -off > OFFAudio){
digitalWrite(relePin3, LOW);
relestate3 = 0;
millisold = millis();
}
}

lti1 05.09.2014 22:23

Цитата:

Сообщение от Artemka181 (Сообщение 305680)
Приветствую. Приобрел ардуино леонардо. Заливаю скетч кнопки работают. Коды кнопокподобрал. Но вот данный скетч не работает.Планшет на него не реагирует хотя как устройство ввода определил. Что могу делать не так ?
Набор резестивных кнопок подключен к А0

А чем этот скетч не понравился?

Artemka181 06.09.2014 19:04

Цитата:

Сообщение от lti1 (Сообщение 305694)
А чем этот скетч не понравился?

Хотелось питанием планшета поуправлять

Daniel 07.09.2014 02:18

Цитата:

Сообщение от Artemka181 (Сообщение 305752)
Хотелось питанием планшета поуправлять

Питание питанием, управляй на здоровье, но чтобы планшет принимал нажатия кнопок, как клавиатурные, нужно их посылать не в serial, а как в скетче выше, через remote или Keyboard. Это же леонардо, все уже реализовано.

Artemka181 07.09.2014 17:42

Цитата:

Сообщение от Daniel (Сообщение 305771)
Питание питанием, управляй на здоровье, но чтобы планшет принимал нажатия кнопок, как клавиатурные, нужно их посылать не в serial, а как в скетче выше, через remote или Keyboard. Это же леонардо, все уже реализовано.

Понял. Спасибо

ВладимирC 18.10.2014 20:58

Цитата:

Сообщение от Chubaka885 (Сообщение 288838)
Готовый скетч для резестивных кнопок, любезно предоставленный lti1 за что ему огромное спасибо. Для работы требуются модифицированные USBAPI.h, HID.cpp. Скачать вложение с поста #182.
Скетч работает на arduino pro micro, arduino leonardo.

Алгоритм:
Кнопки громкости.
Одиночное нажатие - прибавление/убавление на одну единицу.
Удержание - прибавление/убавление до отпускания.

Кнопки следующий/предидущий трек
Одно нажатие - следующий/предидущий трек
Удержание - перемотка

Кнопка mode
первое нажатие - отсылается нажатие ALT и два раза TAB. Каждое следующее нажатие, если не истекло 800 мили сек. отсылает один раз TAB, ALT остаётся нажатым.
Удержание - плей/пауза.

Код:

int analogPin=6;    //пин для подключения кнопок
int data;
unsigned long flag = 0;
unsigned long eventTime = 0;
unsigned long pauseMillis = 0;

void setup()
{
Keyboard.begin();
}

void loop()
{
  data=analogRead(analogPin); //читаем значение нажатой кнопки
 
//********************** Громкость ************************************

  if(data>=950 && flag == 0) // все кнопки отпущены
  {
    eventTime=millis();
  }

  if(millis()-eventTime>10 && millis()-eventTime<499 && data>=210 && data<=230 && flag == 0) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
  {
    Remote.increase();
    flag = 5;
    delay(10);
    Remote.clear();
  }

  if(millis()-eventTime>500 && data>=210 && data<=230 && flag == 5 || data>=210 && data<=230 && flag == 3) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
  {
    Remote.increase(); // действие после удержание кнопки, Увеличить громкость каждые 0,1 секунды
    flag = 3;
    Remote.clear();
    delay(100);
  }

  if(millis()-eventTime>10 && millis()-eventTime<499 && data>=457 && data<=477 && flag == 0) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
  {
    Remote.decrease();
    flag = 6;
    delay(10);
    Remote.clear();
  }

  if(millis()-eventTime>500 && data>=457 && data<=477 && flag == 6 || data>=457 && data<=477 && flag == 3) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
  {
    Remote.decrease(); // действие после удержание кнопки, Уменьшить громкость каждые 0,1 секунды
    flag = 3;
    Remote.clear();
    delay(100);
  }
 
//********************** AltTab + Play/pause ************************************   

if(millis()-eventTime>10 && millis()-eventTime<499 && data>=567 && data<=587) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
  {
    flag = 1;
  }

  if(data>=950 && flag == 1 && pauseMillis == 0) // действие после короткого нажатия кнопки, Alt+Tab
  {
    Keyboard.press(KEY_LEFT_ALT);
    Keyboard.press(KEY_TAB);
    Keyboard.release(KEY_TAB);
    Keyboard.press(KEY_TAB);
    Keyboard.release(KEY_TAB);
    flag = 0;
    pauseMillis = millis();
  }
 
  if(data>=950 && flag == 1 && pauseMillis != 0) // действие после короткого повторного нажатия кнопки, Alt+Tab
  {
    Keyboard.press(KEY_TAB);
    Keyboard.release(KEY_TAB);
    flag = 0;
    pauseMillis = millis();
  }
 
  if(pauseMillis && millis()-pauseMillis >= 800 && data>=950) // && flag == 7 && data>=950)
  {
    flag = 0;
    pauseMillis = 0;
    Keyboard.releaseAll();
  }
 
  if(millis()-eventTime>500 && data>=567 && data<=587 && flag == 1) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
  {
    Remote.play_pause(); // действие после удержание кнопки, воспроизведение / пауза
    flag = 0;
    delay(10);
    Remote.clear();
  }
//********************** Next и Fast Forward ************************************   
   
  if(millis()-eventTime>10 && millis()-eventTime<499 && data>=0 && data<=10) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
  {
    flag = 2;
  }
 
  if(data>=950 && flag == 2) // действие после короткого нажатия кнопки, Next
  {
    Remote.next();
    flag = 0;
    delay(10);
    Remote.clear();
  }

  if(millis()-eventTime>500 && data>=0 && data<=10 && flag == 2 || data>=0 && data<=10 && flag == 3) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
  {
    Remote.forward(); // действие после удержание кнопки, Fast Forward
    flag = 3;
    Remote.clear();
    delay(100);
  }
//********************** Previous и Rewind ************************************   
   
  if(millis()-eventTime>10 && millis()-eventTime<499 && data>=74 && data<=94) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
  {
    flag = 4;
  }
 
  if(data>=950 && flag == 4) // действие после короткого нажатия кнопки, Previous
  {
    Remote.previous();
    flag = 0;
    delay(10);
    Remote.clear();
  }

  if(millis()-eventTime>500 && data>=74 && data<=94 && flag == 4 || data>=74 && data<=94 && flag == 3) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
  {
    Remote.rewind(); // действие после удержание кнопки, Rewind
    flag = 3;
    Remote.clear();
    delay(100);
  }
 
  if(data>=950 && flag == 3 || data>=950 && flag == 5 || data>=950 && flag == 6) // действие после отпускания кнопки
  {
    flag = 0;
  } 
}


Подскажи, плиз, это готовый скетч, т.е. я заливаю, компилирую и все должно работать? Я пытаюсь, но мне кучу ошибок выдает, файлы менял.

Chubaka885 18.10.2014 21:40

ВладимирC Версия программы Arduino какая?

Найдите в сети Arduino 1.0.4 и попробуйте ей.

Скетч готовый, Вам понадобится только подставить свои значения кнопок.

ВладимирC 18.10.2014 21:45

Цитата:

Сообщение от Chubaka885 (Сообщение 309053)
ВладимирC Версия программы Arduino какая?

Найдите в сети Arduino 1.0.4 и попробуйте ей.

Скетч готовый, Вам понадобится только подставить свои значения кнопок.

Версия 1,06, ща попробую.

lti1 18.10.2014 22:07

Цитата:

Сообщение от ВладимирC (Сообщение 309047)
Подскажи, плиз, это готовый скетч, т.е. я заливаю, компилирую и все должно работать? Я пытаюсь, но мне кучу ошибок выдает, файлы менял.

Какие ошибки выдает? Какую плату используете?

ВладимирC 18.10.2014 22:32

Цитата:

Сообщение от lti1 (Сообщение 309056)
Какие ошибки выдает? Какую плату используете?

Плата про микро. Поменял версию проги с 1.06 на 1.04, теперь проверка проходит, но происходит такая фигня:
Плата устанавливается, появляется в компортах, определяется как леонардо, порт 16. При заливке скетча вдруг находится снова, уже на следующем порту, загрузка останавливается, но не выходит из нее.

ВладимирC 18.10.2014 22:42

Вот что пишет после компиляции








Цитата:

E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega32u4 -DF_CPU=16000000L -MMD -DUSB_VID=0x2341 -DUSB_PID=0x8036 -DARDUINO=104 -IE:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino -IE:\Ардуино\arduino-1.0.4\hardware\arduino\variants\leonardo X:\TEMP\build1403068033382097150.tmp\sketch_oct18a .cpp -o X:\TEMP\build1403068033382097150.tmp\sketch_oct18a .cpp.o
sketch_oct18a.ino: In function 'void loop()':
sketch_oct18a.ino:31: warning: suggest parentheses around && within ||
sketch_oct18a.ino:47: warning: suggest parentheses around && within ||
sketch_oct18a.ino:110: warning: suggest parentheses around && within ||
sketch_oct18a.ino:132: warning: suggest parentheses around && within ||
sketch_oct18a.ino:140: warning: suggest parentheses around && within ||
sketch_oct18a.ino:140: warning: suggest parentheses around && within ||
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega32u4 -DF_CPU=16000000L -MMD -DUSB_VID=0x2341 -DUSB_PID=0x8036 -DARDUINO=104 -IE:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino -IE:\Ардуино\arduino-1.0.4\hardware\arduino\variants\leonardo E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\malloc.c -o X:\TEMP\build1403068033382097150.tmp\malloc.c.o
E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\malloc.c:67: warning: initialization makes pointer from integer without a cast
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega32u4 -DF_CPU=16000000L -MMD -DUSB_VID=0x2341 -DUSB_PID=0x8036 -DARDUINO=104 -IE:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino -IE:\Ардуино\arduino-1.0.4\hardware\arduino\variants\leonardo E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\WInterrupts.c -o X:\TEMP\build1403068033382097150.tmp\WInterrupts.c .o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega32u4 -DF_CPU=16000000L -MMD -DUSB_VID=0x2341 -DUSB_PID=0x8036 -DARDUINO=104 -IE:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino -IE:\Ардуино\arduino-1.0.4\hardware\arduino\variants\leonardo E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\wiring.c -o X:\TEMP\build1403068033382097150.tmp\wiring.c.o
E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\wiring.c:264: 3: warning: #warning Timer 2 not finished (may not be present on this CPU)
E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\wiring.c:273: 3: warning: #warning Timer 2 not finished (may not be present on this CPU)
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega32u4 -DF_CPU=16000000L -MMD -DUSB_VID=0x2341 -DUSB_PID=0x8036 -DARDUINO=104 -IE:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino -IE:\Ардуино\arduino-1.0.4\hardware\arduino\variants\leonardo E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\wiring_analog .c -o X:\TEMP\build1403068033382097150.tmp\wiring_analog .c.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega32u4 -DF_CPU=16000000L -MMD -DUSB_VID=0x2341 -DUSB_PID=0x8036 -DARDUINO=104 -IE:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino -IE:\Ардуино\arduino-1.0.4\hardware\arduino\variants\leonardo E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\wiring_digita l.c -o X:\TEMP\build1403068033382097150.tmp\wiring_digita l.c.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega32u4 -DF_CPU=16000000L -MMD -DUSB_VID=0x2341 -DUSB_PID=0x8036 -DARDUINO=104 -IE:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino -IE:\Ардуино\arduino-1.0.4\hardware\arduino\variants\leonardo E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\wiring_pulse. c -o X:\TEMP\build1403068033382097150.tmp\wiring_pulse. c.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega32u4 -DF_CPU=16000000L -MMD -DUSB_VID=0x2341 -DUSB_PID=0x8036 -DARDUINO=104 -IE:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino -IE:\Ардуино\arduino-1.0.4\hardware\arduino\variants\leonardo E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\wiring_shift. c -o X:\TEMP\build1403068033382097150.tmp\wiring_shift. c.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega32u4 -DF_CPU=16000000L -MMD -DUSB_VID=0x2341 -DUSB_PID=0x8036 -DARDUINO=104 -IE:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino -IE:\Ардуино\arduino-1.0.4\hardware\arduino\variants\leonardo E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\CDC.cpp -o X:\TEMP\build1403068033382097150.tmp\CDC.cpp.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega32u4 -DF_CPU=16000000L -MMD -DUSB_VID=0x2341 -DUSB_PID=0x8036 -DARDUINO=104 -IE:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino -IE:\Ардуино\arduino-1.0.4\hardware\arduino\variants\leonardo E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\HardwareSeria l.cpp -o X:\TEMP\build1403068033382097150.tmp\HardwareSeria l.cpp.o
E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\HardwareSeria l.cpp: In function 'void store_char(unsigned char, ring_buffer*)':
E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\HardwareSeria l.cpp:98: warning: comparison between signed and unsigned integer expressions
E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\HardwareSeria l.cpp: In function 'void __vector_25()':
E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\HardwareSeria l.cpp:158: warning: unused variable 'c'
E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\HardwareSeria l.cpp: In member function 'void HardwareSerial::begin(long unsigned int, byte)':
E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\HardwareSeria l.cpp:379: warning: unused variable 'current_config'
E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\HardwareSeria l.cpp: In member function 'virtual size_t HardwareSerial::write(uint8_t)':
E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\HardwareSeria l.cpp:478: warning: comparison between signed and unsigned integer expressions
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega32u4 -DF_CPU=16000000L -MMD -DUSB_VID=0x2341 -DUSB_PID=0x8036 -DARDUINO=104 -IE:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino -IE:\Ардуино\arduino-1.0.4\hardware\arduino\variants\leonardo E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\HID.cpp -o X:\TEMP\build1403068033382097150.tmp\HID.cpp.o
E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\HID.cpp: In member function 'virtual size_t Keyboard_::write(uint8_t)':
E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\HID.cpp:568: warning: unused variable 'r'
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega32u4 -DF_CPU=16000000L -MMD -DUSB_VID=0x2341 -DUSB_PID=0x8036 -DARDUINO=104 -IE:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino -IE:\Ардуино\arduino-1.0.4\hardware\arduino\variants\leonardo E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\IPAddress.cpp -o X:\TEMP\build1403068033382097150.tmp\IPAddress.cpp .o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega32u4 -DF_CPU=16000000L -MMD -DUSB_VID=0x2341 -DUSB_PID=0x8036 -DARDUINO=104 -IE:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino -IE:\Ардуино\arduino-1.0.4\hardware\arduino\variants\leonardo E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\main.cpp -o X:\TEMP\build1403068033382097150.tmp\main.cpp.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega32u4 -DF_CPU=16000000L -MMD -DUSB_VID=0x2341 -DUSB_PID=0x8036 -DARDUINO=104 -IE:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino -IE:\Ардуино\arduino-1.0.4\hardware\arduino\variants\leonardo E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\new.cpp -o X:\TEMP\build1403068033382097150.tmp\new.cpp.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega32u4 -DF_CPU=16000000L -MMD -DUSB_VID=0x2341 -DUSB_PID=0x8036 -DARDUINO=104 -IE:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino -IE:\Ардуино\arduino-1.0.4\hardware\arduino\variants\leonardo E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\Print.cpp -o X:\TEMP\build1403068033382097150.tmp\Print.cpp.o
E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\Print.cpp: In member function 'size_t Print::print(const __FlashStringHelper*)':
E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\Print.cpp:44: warning: '__progmem__' attribute ignored
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega32u4 -DF_CPU=16000000L -MMD -DUSB_VID=0x2341 -DUSB_PID=0x8036 -DARDUINO=104 -IE:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino -IE:\Ардуино\arduino-1.0.4\hardware\arduino\variants\leonardo E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\Stream.cpp -o X:\TEMP\build1403068033382097150.tmp\Stream.cpp.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega32u4 -DF_CPU=16000000L -MMD -DUSB_VID=0x2341 -DUSB_PID=0x8036 -DARDUINO=104 -IE:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino -IE:\Ардуино\arduino-1.0.4\hardware\arduino\variants\leonardo E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\Tone.cpp -o X:\TEMP\build1403068033382097150.tmp\Tone.cpp.o
E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\Tone.cpp:210: 12: warning: #warning this may not be correct
E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\Tone.cpp:110: warning: only initialized variables can be placed into program memory area
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega32u4 -DF_CPU=16000000L -MMD -DUSB_VID=0x2341 -DUSB_PID=0x8036 -DARDUINO=104 -IE:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino -IE:\Ардуино\arduino-1.0.4\hardware\arduino\variants\leonardo E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\USBCore.cpp -o X:\TEMP\build1403068033382097150.tmp\USBCore.cpp.o
E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\USBCore.cpp: In function 'int USB_Send(u8, const void*, int)':
E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\USBCore.cpp:2 78: warning: unused variable 'zero'
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega32u4 -DF_CPU=16000000L -MMD -DUSB_VID=0x2341 -DUSB_PID=0x8036 -DARDUINO=104 -IE:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino -IE:\Ардуино\arduino-1.0.4\hardware\arduino\variants\leonardo E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\WMath.cpp -o X:\TEMP\build1403068033382097150.tmp\WMath.cpp.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega32u4 -DF_CPU=16000000L -MMD -DUSB_VID=0x2341 -DUSB_PID=0x8036 -DARDUINO=104 -IE:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino -IE:\Ардуино\arduino-1.0.4\hardware\arduino\variants\leonardo E:\Ардуино\arduino-1.0.4\hardware\arduino\cores\arduino\WString.cpp -o X:\TEMP\build1403068033382097150.tmp\WString.cpp.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build1403068033382097150.tmp\core.a X:\TEMP\build1403068033382097150.tmp\malloc.c.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build1403068033382097150.tmp\core.a X:\TEMP\build1403068033382097150.tmp\WInterrupts.c .o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build1403068033382097150.tmp\core.a X:\TEMP\build1403068033382097150.tmp\wiring.c.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build1403068033382097150.tmp\core.a X:\TEMP\build1403068033382097150.tmp\wiring_analog .c.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build1403068033382097150.tmp\core.a X:\TEMP\build1403068033382097150.tmp\wiring_digita l.c.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build1403068033382097150.tmp\core.a X:\TEMP\build1403068033382097150.tmp\wiring_pulse. c.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build1403068033382097150.tmp\core.a X:\TEMP\build1403068033382097150.tmp\wiring_shift. c.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build1403068033382097150.tmp\core.a X:\TEMP\build1403068033382097150.tmp\CDC.cpp.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build1403068033382097150.tmp\core.a X:\TEMP\build1403068033382097150.tmp\HardwareSeria l.cpp.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build1403068033382097150.tmp\core.a X:\TEMP\build1403068033382097150.tmp\HID.cpp.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build1403068033382097150.tmp\core.a X:\TEMP\build1403068033382097150.tmp\IPAddress.cpp .o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build1403068033382097150.tmp\core.a X:\TEMP\build1403068033382097150.tmp\main.cpp.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build1403068033382097150.tmp\core.a X:\TEMP\build1403068033382097150.tmp\new.cpp.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build1403068033382097150.tmp\core.a X:\TEMP\build1403068033382097150.tmp\Print.cpp.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build1403068033382097150.tmp\core.a X:\TEMP\build1403068033382097150.tmp\Stream.cpp.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build1403068033382097150.tmp\core.a X:\TEMP\build1403068033382097150.tmp\Tone.cpp.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build1403068033382097150.tmp\core.a X:\TEMP\build1403068033382097150.tmp\USBCore.cpp.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build1403068033382097150.tmp\core.a X:\TEMP\build1403068033382097150.tmp\WMath.cpp.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build1403068033382097150.tmp\core.a X:\TEMP\build1403068033382097150.tmp\WString.cpp.o
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-gcc -Os -Wl,--gc-sections -mmcu=atmega32u4 -o X:\TEMP\build1403068033382097150.tmp\sketch_oct18a .cpp.elf X:\TEMP\build1403068033382097150.tmp\sketch_oct18a .cpp.o X:\TEMP\build1403068033382097150.tmp\core.a -LX:\TEMP\build1403068033382097150.tmp -lm
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-objcopy -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 X:\TEMP\build1403068033382097150.tmp\sketch_oct18a .cpp.elf X:\TEMP\build1403068033382097150.tmp\sketch_oct18a .cpp.eep
E:\Ардуино\arduino-1.0.4\hardware\tools\avr\bin\avr-objcopy -O ihex -R .eeprom X:\TEMP\build1403068033382097150.tmp\sketch_oct18a .cpp.elf X:\TEMP\build1403068033382097150.tmp\sketch_oct18a .cpp.hex
Размер скетча в двоичном коде: 7*162 байт (из 28*672 байт максимум)
Насильно поменял сом порт на 3, перезагрузил, после этого загрузка прошла. Теперь светодиодик постоянно мигает. Правда я пока обвязку резисторами не делал.

Daniel 18.10.2014 23:02

Все делаю на arduino 1.0.5 R2. С 1.0.6 действительно какая-то лажа, надо библиотеки переписывать. Из обвязки там всего один резистор, без нее у меня почему-то не пошло.

И ты убери русские имена папок, слышал, вроде, что она их не любит.

Chubaka885 18.10.2014 23:02

Цитата:

Сообщение от ВладимирC (Сообщение 309069)
Вот что пишет после компиляции
Насильно поменял сом порт на 3, перезагрузил, после этого загрузка прошла. Теперь светодиодик постоянно мигает. Правда я пока обвязку резисторами не делал.

В 1.0.6 есть какие-то проблемы с компилированием ProMicro. У меня было тоже самое.

Daniel 19.10.2014 00:53

Цитата:

Сообщение от Chubaka885 (Сообщение 309075)
В 1.0.6 есть какие-то проблемы с компилированием ProMicro. У меня было тоже самое.

С Leonardo, если быть точным. ProMicro - это тоже Leonardo.

lti1 19.10.2014 01:00

Вложений: 1
Цитата:

Сообщение от ВладимирC (Сообщение 309069)
Теперь светодиодик постоянно мигает. Правда я пока обвязку резисторами не делал.

Добавьте в void setup() digitalWrite(analogPin, HIGH);, при этом кнопки через сопротивление должны коммутироваться на массу.

ВладимирC 19.10.2014 01:14

Цитата:

Сообщение от lti1 (Сообщение 309089)
Добавьте в void setup() digitalWrite(analogPin, HIGH);, при этом кнопки через сопротивление должны коммутироваться на массу.

т.е. Вот так?
void setup()
{digitalWrite(analogPin, HIGH);
Keyboard.begin();}


Я первый день с ардуино, буду изучать конечно, но пока могу только готовые скетчи заливать)..... да и то как выянилось, без подсказок не обошлось))
ЗЫ Русские названия убрал.

ВладимирC 19.10.2014 01:23

E:\Arduino\arduino-1.0.4\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega32u4 -DF_CPU=16000000L -MMD -DUSB_VID=0x2341 -DUSB_PID=0x8036 -DARDUINO=104 -IE:\Arduino\arduino-1.0.4\hardware\arduino\cores\arduino -IE:\Arduino\arduino-1.0.4\hardware\arduino\variants\leonardo X:\TEMP\build8376110162395595122.tmp\sketch_oct18a .cpp -o X:\TEMP\build8376110162395595122.tmp\sketch_oct18a .cpp.o
sketch_oct18a.ino: In function 'void loop()':
sketch_oct18a.ino:32: warning: suggest parentheses around && within ||
sketch_oct18a.ino:48: warning: suggest parentheses around && within ||
sketch_oct18a.ino:111: warning: suggest parentheses around && within ||
sketch_oct18a.ino:133: warning: suggest parentheses around && within ||
sketch_oct18a.ino:141: warning: suggest parentheses around && within ||
sketch_oct18a.ino:141: warning: suggest parentheses around && within ||
Using previously compiled: X:\TEMP\build8376110162395595122.tmp\malloc.c.o
Using previously compiled: X:\TEMP\build8376110162395595122.tmp\WInterrupts.c .o
Using previously compiled: X:\TEMP\build8376110162395595122.tmp\wiring.c.o
Using previously compiled: X:\TEMP\build8376110162395595122.tmp\wiring_analog .c.o
Using previously compiled: X:\TEMP\build8376110162395595122.tmp\wiring_digita l.c.o
Using previously compiled: X:\TEMP\build8376110162395595122.tmp\wiring_pulse. c.o
Using previously compiled: X:\TEMP\build8376110162395595122.tmp\wiring_shift. c.o
Using previously compiled: X:\TEMP\build8376110162395595122.tmp\CDC.cpp.o
Using previously compiled: X:\TEMP\build8376110162395595122.tmp\HardwareSeria l.cpp.o
Using previously compiled: X:\TEMP\build8376110162395595122.tmp\HID.cpp.o
Using previously compiled: X:\TEMP\build8376110162395595122.tmp\IPAddress.cpp .o
Using previously compiled: X:\TEMP\build8376110162395595122.tmp\main.cpp.o
Using previously compiled: X:\TEMP\build8376110162395595122.tmp\new.cpp.o
Using previously compiled: X:\TEMP\build8376110162395595122.tmp\Print.cpp.o
Using previously compiled: X:\TEMP\build8376110162395595122.tmp\Stream.cpp.o
Using previously compiled: X:\TEMP\build8376110162395595122.tmp\Tone.cpp.o
Using previously compiled: X:\TEMP\build8376110162395595122.tmp\USBCore.cpp.o
Using previously compiled: X:\TEMP\build8376110162395595122.tmp\WMath.cpp.o
Using previously compiled: X:\TEMP\build8376110162395595122.tmp\WString.cpp.o
E:\Arduino\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build8376110162395595122.tmp\core.a X:\TEMP\build8376110162395595122.tmp\malloc.c.o
E:\Arduino\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build8376110162395595122.tmp\core.a X:\TEMP\build8376110162395595122.tmp\WInterrupts.c .o
E:\Arduino\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build8376110162395595122.tmp\core.a X:\TEMP\build8376110162395595122.tmp\wiring.c.o
E:\Arduino\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build8376110162395595122.tmp\core.a X:\TEMP\build8376110162395595122.tmp\wiring_analog .c.o
E:\Arduino\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build8376110162395595122.tmp\core.a X:\TEMP\build8376110162395595122.tmp\wiring_digita l.c.o
E:\Arduino\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build8376110162395595122.tmp\core.a X:\TEMP\build8376110162395595122.tmp\wiring_pulse. c.o
E:\Arduino\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build8376110162395595122.tmp\core.a X:\TEMP\build8376110162395595122.tmp\wiring_shift. c.o
E:\Arduino\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build8376110162395595122.tmp\core.a X:\TEMP\build8376110162395595122.tmp\CDC.cpp.o
E:\Arduino\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build8376110162395595122.tmp\core.a X:\TEMP\build8376110162395595122.tmp\HardwareSeria l.cpp.o
E:\Arduino\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build8376110162395595122.tmp\core.a X:\TEMP\build8376110162395595122.tmp\HID.cpp.o
E:\Arduino\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build8376110162395595122.tmp\core.a X:\TEMP\build8376110162395595122.tmp\IPAddress.cpp .o
E:\Arduino\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build8376110162395595122.tmp\core.a X:\TEMP\build8376110162395595122.tmp\main.cpp.o
E:\Arduino\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build8376110162395595122.tmp\core.a X:\TEMP\build8376110162395595122.tmp\new.cpp.o
E:\Arduino\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build8376110162395595122.tmp\core.a X:\TEMP\build8376110162395595122.tmp\Print.cpp.o
E:\Arduino\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build8376110162395595122.tmp\core.a X:\TEMP\build8376110162395595122.tmp\Stream.cpp.o
E:\Arduino\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build8376110162395595122.tmp\core.a X:\TEMP\build8376110162395595122.tmp\Tone.cpp.o
E:\Arduino\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build8376110162395595122.tmp\core.a X:\TEMP\build8376110162395595122.tmp\USBCore.cpp.o
E:\Arduino\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build8376110162395595122.tmp\core.a X:\TEMP\build8376110162395595122.tmp\WMath.cpp.o
E:\Arduino\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs X:\TEMP\build8376110162395595122.tmp\core.a X:\TEMP\build8376110162395595122.tmp\WString.cpp.o
E:\Arduino\arduino-1.0.4\hardware\tools\avr\bin\avr-gcc -Os -Wl,--gc-sections -mmcu=atmega32u4 -o X:\TEMP\build8376110162395595122.tmp\sketch_oct18a .cpp.elf X:\TEMP\build8376110162395595122.tmp\sketch_oct18a .cpp.o X:\TEMP\build8376110162395595122.tmp\core.a -LX:\TEMP\build8376110162395595122.tmp -lm
E:\Arduino\arduino-1.0.4\hardware\tools\avr\bin\avr-objcopy -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 X:\TEMP\build8376110162395595122.tmp\sketch_oct18a .cpp.elf X:\TEMP\build8376110162395595122.tmp\sketch_oct18a .cpp.eep
E:\Arduino\arduino-1.0.4\hardware\tools\avr\bin\avr-objcopy -O ihex -R .eeprom X:\TEMP\build8376110162395595122.tmp\sketch_oct18a .cpp.elf X:\TEMP\build8376110162395595122.tmp\sketch_oct18a .cpp.hex
Размер скетча в двоичном коде: 7*430 байт (из 28*672 байт максимум)

lti1 19.10.2014 03:47

Цитата:

Сообщение от ВладимирC (Сообщение 309091)
т.е. Вот так?
void setup()
{
digitalWrite(analogPin, HIGH);
Keyboard.begin();
}

Да
Цитата:

Сообщение от ВладимирC (Сообщение 309091)
Я первый день с ардуино, буду изучать конечно, но пока могу только готовые скетчи заливать)..... да и то как выянилось, без подсказок не обошлось))

Для получения значений Ваших кнопок используйте такой скетч:
Код:

int analogPin=A0;
int data;

void setup()
{
Serial.begin(9600);
digitalWrite(analogPin, HIGH);
}

void loop()
{
data=analogRead(analogPin);
Serial.println(data);
delay(1000);
}

В мониторе порта увидите значения.
Выход резистивных кнопок подключите к A0 pro micro.
Если в дальнейшем скетч pro micro не захочет заливаться попробуйте так.

ВладимирC 19.10.2014 12:26

Спасибо огромное

ВладимирC 19.10.2014 18:21

А возможно объединить это в один скетч, чтобы не перезаливать их туда сюда, а сразу вычислить кнопки и испытать, и перекинув проводов от кнопок? И если возможно, то как их состыковать?

Chubaka885 19.10.2014 19:44

Цитата:

Сообщение от ВладимирC (Сообщение 309132)
А возможно объединить это в один скетч, чтобы не перезаливать их туда сюда, а сразу вычислить кнопки и испытать, и перекинув проводов от кнопок? И если возможно, то как их состыковать?

Можно. Вот так.
Код:

int analogPin=A0;    //пин для подключения кнопок
int data;
unsigned long flag = 0;
unsigned long eventTime = 0;
unsigned long pauseMillis = 0;

void setup()
{
Serial.begin(9600);
digitalWrite(analogPin, HIGH);
Keyboard.begin();
}

void loop()
{
data=analogRead(analogPin); //читаем значение нажатой кнопки
Serial.println(data);
delay(500);
 
//********************** Громкость ************************************

  if(data>=950 && flag == 0) // все кнопки отпущены
  {
    eventTime=millis();
  }

  if(millis()-eventTime>10 && millis()-eventTime<499 && data>=210 && data<=230 && flag == 0) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
  {
    Remote.increase();
    flag = 5;
    delay(10);
    Remote.clear();
  }

  if(millis()-eventTime>500 && data>=210 && data<=230 && flag == 5 || data>=210 && data<=230 && flag == 3) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
  {
    Remote.increase(); // действие после удержание кнопки, Увеличить громкость каждые 0,1 секунды
    flag = 3;
    Remote.clear();
    delay(100);
  }

  if(millis()-eventTime>10 && millis()-eventTime<499 && data>=457 && data<=477 && flag == 0) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
  {
    Remote.decrease();
    flag = 6;
    delay(10);
    Remote.clear();
  }

  if(millis()-eventTime>500 && data>=457 && data<=477 && flag == 6 || data>=457 && data<=477 && flag == 3) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
  {
    Remote.decrease(); // действие после удержание кнопки, Уменьшить громкость каждые 0,1 секунды
    flag = 3;
    Remote.clear();
    delay(100);
  }
 
//********************** AltTab + Play/pause ************************************   

if(millis()-eventTime>10 && millis()-eventTime<499 && data>=567 && data<=587) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
  {
    flag = 1;
  }

  if(data>=950 && flag == 1 && pauseMillis == 0) // действие после короткого нажатия кнопки, Alt+Tab
  {
    Keyboard.press(KEY_LEFT_ALT);
    Keyboard.press(KEY_TAB);
    Keyboard.release(KEY_TAB);
    Keyboard.press(KEY_TAB);
    Keyboard.release(KEY_TAB);
    flag = 0;
    pauseMillis = millis();
  }
 
  if(data>=950 && flag == 1 && pauseMillis != 0) // действие после короткого повторного нажатия кнопки, Alt+Tab
  {
    Keyboard.press(KEY_TAB);
    Keyboard.release(KEY_TAB);
    flag = 0;
    pauseMillis = millis();
  }
 
  if(pauseMillis && millis()-pauseMillis >= 800 && data>=950) // && flag == 7 && data>=950)
  {
    flag = 0;
    pauseMillis = 0;
    Keyboard.releaseAll();
  }
 
  if(millis()-eventTime>500 && data>=567 && data<=587 && flag == 1) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
  {
    Remote.play_pause(); // действие после удержание кнопки, воспроизведение / пауза
    flag = 0;
    delay(10);
    Remote.clear();
  }
//********************** Next и Fast Forward ************************************   
   
  if(millis()-eventTime>10 && millis()-eventTime<499 && data>=0 && data<=10) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
  {
    flag = 2;
  }
 
  if(data>=950 && flag == 2) // действие после короткого нажатия кнопки, Next
  {
    Remote.next();
    flag = 0;
    delay(10);
    Remote.clear();
  }

  if(millis()-eventTime>500 && data>=0 && data<=10 && flag == 2 || data>=0 && data<=10 && flag == 3) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
  {
    Remote.forward(); // действие после удержание кнопки, Fast Forward
    flag = 3;
    Remote.clear();
    delay(100);
  }
//********************** Previous и Rewind ************************************   
   
  if(millis()-eventTime>10 && millis()-eventTime<499 && data>=74 && data<=94) // короткое нажатие кнопки от 10 до 499 миллисекунд (изменяется здесь millis()-eventTime>10 && millis()-eventTime<499)
  {
    flag = 4;
  }
 
  if(data>=950 && flag == 4) // действие после короткого нажатия кнопки, Previous
  {
    Remote.previous();
    flag = 0;
    delay(10);
    Remote.clear();
  }

  if(millis()-eventTime>500 && data>=74 && data<=94 && flag == 4 || data>=74 && data<=94 && flag == 3) // удержание кнопки от 500 до ? миллисекунд (изменяется здесь millis()-eventTime>500)
  {
    Remote.rewind(); // действие после удержание кнопки, Rewind
    flag = 3;
    Remote.clear();
    delay(100);
  }
 
  if(data>=950 && flag == 3 || data>=950 && flag == 5 || data>=950 && flag == 6) // действие после отпускания кнопки
  {
    flag = 0;
  } 
}


lti1 19.10.2014 20:40

Цитата:

Сообщение от ВладимирC (Сообщение 309132)
А возможно объединить это в один скетч, чтобы не перезаливать их туда сюда, а сразу вычислить кнопки и испытать, и перекинув проводов от кнопок? И если возможно, то как их состыковать?

Зачем? Это два разных скетча, малым Вы вычисляете значения своих резистивных кнопок и подставляете эти значения в большой скетч, а уже потом его заливаете и тестируете. Например у вас значение для Play/Pause 455, в данном скетче это значение 577, значит Вам необходимо заменить data>=567 && data<=587 на data>=445 && data<=465. И еще если объединить, то в Serial будут литься данные, а об delay(500); будет спотыкаться, не давая нормально работать кнопкам.

ВладимирC 19.10.2014 21:03

Цитата:

Сообщение от lti1 (Сообщение 309145)
Зачем? Это два разных скетча, малым Вы вычисляете значения своих резистивных кнопок и подставляете эти значения в большой скетч, а уже потом его заливаете и тестируете. Например у вас значение для Play/Pause 455, в данном скетче это значение 577, значит Вам необходимо заменить data>=567 && data<=587 на data>=445 && data<=465. И еще если объединить, то в Serial будут литься данные, а об delay(500); будет спотыкаться, не давая нормально работать кнопкам.

Для чего второй скетч, я прекрасно понял. А спросил, потому, что хотел не отходя от кассы попробовать. Потом понял, что чтобы значения изменить, все равно перезаливать надо)).

ВладимирC 20.10.2014 02:40

Еще вопрос, в основном скетче импользуется вход 6, в проверочном А0, почему? Если я ставлю резистор, не проще на одном порту и проверять и работать?
А, раз мы подтянули вход, то резистор не нужен, как я понимаю? Залил считывающий тест, пробовал резисторы разные подсовывать ( имитируя кнопки), вроде работает, на разные сопротивления, дает разные коды, без них шлет код 1022

lti1 20.10.2014 15:06

Цитата:

Сообщение от ВладимирC (Сообщение 309167)
Еще вопрос, в основном скетче импользуется вход 6, в проверочном А0, почему? Если я ставлю резистор, не проще на одном порту и проверять и работать?

Почему в основном скетче используется вход 6 не помню, возможно пожелание Chubaka885, вообще должен использоваться любой из аналоговых входов A0-A3 (Pro micro).
Цитата:

Сообщение от ВладимирC (Сообщение 309167)
А, раз мы подтянули вход, то резистор не нужен, как я понимаю?

Резистор не нужен, я предоставлял Вам примерную схему подключения.
Цитата:

Сообщение от ВладимирC (Сообщение 309167)
Залил считывающий тест, пробовал резисторы разные подсовывать ( имитируя кнопки), вроде работает, на разные сопротивления, дает разные коды, без них шлет код 1022

0 вольт - 0, 5 вольт - 1023
Аналого-цифровой преобразователь
Цитата:

Микроконтроллеры Atmega, используемые в Arduino, содержат шестиканальный аналого-цифровой преобразователь (АЦП). Разрешение преобразователя составляет 10 бит, что позволяет на выходе получать значения от 0 до 1023. Основным применением аналоговых входов большинства платформ Arduino является чтение аналоговых датчиком, но в тоже время они имеют функциональность вводов/выводов широкого применения (GPIO) (то же, что и цифровые порты ввода/вывода 0 - 13).

Stray 23.10.2014 23:45

Уважаемые!
А что нужно отправить из Leonardo используя HID Keyboard для имитации кнопки выключения (гашения экрана)?
Перелопатил кучу инфы, ответ так и не найден.


Часовой пояс GMT +4, время: 14:36.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot