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

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

Lexx09 25.11.2015 10:35

Разберись со скобками в блоке кода с 20-й по 32-ю строку. В строке 24 у тебя открывается скобка просто так, это неправильно. Вероятно, лишние скобки в строках 23 и 24, но тогда непонятки с переменной flag.

ali_vlad 25.11.2015 11:41

Не хватает одной закрывающейся скобки в конце. Кстати про скобки: если курсор поместить на любую скобку то ответеая подсвеч вается. Самый простой способ проверки открытых и закрытых скобок.

TransF 25.11.2015 19:50

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

sketch_nov25a.ino: In function 'void loop()':
при этом выделяется строка ISR (PCINT0_vect)

как я понял нет действия в loop
но ведь оно есть в setup как и в правом регуляторе громкости :be::be::be: и там всё работает

TransF 26.11.2015 01:06

Почти вторая часть моего руля
Код HTML:

int analogPin=0;
int data;
unsigned long flag = 0;
unsigned long pauseMillis = 0;
void setup() {           
PCICR=1<<PCIE0;
PCMSK0=(1<<PCINT5)|(1<<PCINT4);
pinMode (8,INPUT);
pinMode (9,INPUT);
Keyboard.begin();
Serial.begin(9600);
}
void loop() {
 data=analogRead(analogPin); //читаем значение нажатой кнопки
  Serial.println(data); //для определения кодов нажатых кнопок на мониторе порта
  if (data>
=28 && data<=35)  // ALT+TAB
    {
Keyboard.press(KEY_LEFT_ALT); 
Keyboard.press(KEY_TAB); 
Keyboard.release(KEY_TAB);
flag = 0;
pauseMillis = millis();
    }
  if (data>
=28 && data<=35)  // ALT+TAB
  {
Keyboard.press(KEY_TAB); 
Keyboard.release(KEY_TAB); 
flag = 0; 
pauseMillis = millis(); 
delay(1800);
Keyboard.releaseAll();
  }
  if (data>
=58 && data<=65)  // домой
    {
Keyboard.press(KEY_ESC);
Keyboard.release(KEY_ESC);
    }
  delay(180);
}
 
ISR (PCINT0_vect){
static byte old_n=PINB&B00110000;
byte new_n=PINB&B00110000;
if (old_n==32&&new_n==48||old_n==16&&new_n==0) {
        Remote.next(); 
        delay(10); 
        Remote.clear();}
if (old_n==16&&new_n==48||old_n==32&&new_n==0) {
        Remote.forward();
        delay(100); 
        Remote.clear();}
old_n= new_n;
}

Альт+таб к сожалению пока не стабилен но уже работает :big:
почему-то приложения не все подряд перелистывает а ровно через одно.
После еще придется объединить скетчи, это я думаю осилю)

Lexx09 26.11.2015 11:33

Вот этот кусок кода странный. Зачем два раза проверять одно и то же условие? Объедини.
Код:

if (data>=28 && data<=35)  // ALT+TAB
{
        Keyboard.press(KEY_LEFT_ALT); 
        Keyboard.press(KEY_TAB); 
        Keyboard.release(KEY_TAB);
        flag = 0;
        pauseMillis = millis();
}
if (data>=28 && data<=35)  // ALT+TAB
{
        Keyboard.press(KEY_TAB); 
        Keyboard.release(KEY_TAB); 
        flag = 0; 
        pauseMillis = millis(); 
        delay(1800);
        Keyboard.releaseAll();
}

Да, и сделай нормальные отступы...

TransF 26.11.2015 15:03

Если я обьеденяю их, то происходит:
1) нажание АЛЬТ,
2) нажатие ТАБ
3) отпуск ТАБ
4) нажатие ТАБ
5)отпуск ТАБ
6) ожидание 3 секунды
7) отпуск всего
В связи с этим: 1 - происходит перескакивание таба на 2 приложения и 2 - пока не пройдёт 3 секунды на кнопку не реагирует.

Цитата:

Сообщение от Lexx09 (Сообщение 344750)
Да, и сделай нормальные отступы...

Что значит нормальные отступы? (прошу прощения за тупость я гуманитарий и для меня нормальный отступ 1,25 в начале абзаца)
тут делал так просто для того чтобы себе понятнее было

TransF 29.11.2015 01:13

Закончил с пайкой, и теперь у меня 2 половинки управления моим мультирулём.

скомпоновал скетч, всё кроме второго энкодера для переключения треков
ни как не получается ничего(((

подскажите что как дописать вот в этот рабочий скетч для второго энкодера?

Код HTML:

int analogPin=0;
int data;
void setup() {           
PCICR=1<<PCIE0;
PCMSK0=(1<<PCINT5)|(1<<PCINT4);
pinMode (8,INPUT);
pinMode (9,INPUT);
Keyboard.begin();
Serial.begin(9600);
}
void loop() {
 data=analogRead(analogPin); //читаем значение нажатой кнопки
  Serial.println(data); //для определения кодов нажатых кнопок на мониторе порта
  /*поддерживаемые коды управляющих клавиш
  [url]http://arduino.cc/en/Reference/KeyboardModifiers*/[/url]
  if (data>
=28 && data<=35)  // приглушение звука
    {
      Remote.mute();
      Remote.clear();
    }
  if (data>
=58 && data<=65)  // воспроизведение / пауза
    {
      Remote.play_pause();
      Remote.clear();
    }
  if (data>
=140 && data<=150)  // домой
    {
Keyboard.press(KEY_ESC);
Keyboard.release(KEY_ESC);
    }
    if (data>
=88 && data<=95)  // ALT+TAB
    {
Keyboard.press(KEY_LEFT_ALT); 
Keyboard.press(KEY_TAB); 
Keyboard.release(KEY_TAB); 
Keyboard.press(KEY_TAB); 
Keyboard.releaseAll();
}
  delay(180);
}
 
ISR (PCINT0_vect){
static byte old_n=PINB&B00110000;
byte new_n=PINB&B00110000;
if (old_n==32&&new_n==48||old_n==16&&new_n==0) {
        Remote.increase(); 
        delay(10); 
        Remote.clear();}
if (old_n==16&&new_n==48||old_n==32&&new_n==0) {
        Remote.decrease();
        delay(100); 
        Remote.clear();}
old_n= new_n;
}

второй энкодер использую на 6 и 7 ногах ардуины

ali_vlad 29.11.2015 12:28

Дребезг контактов надо подавлять. Или аппаратно или программно. На мой взгляд самый простой способ - использование библиотеки bounce. А иначе глюки будут всегда.
Так же не забыаайте про "подтяжку" кнопок по питанию. Или к плюсу или к земле. На столе может работать идеально, а в машине может глючить.

TransF 29.11.2015 12:31

Цитата:

Сообщение от ali_vlad (Сообщение 344952)
Дребезг контактов надо подавлять. Или аппаратно или программно. На мой взгляд самый простой способ - использование библиотеки bounce. А иначе глюки будут всегда.
Так же не забыаайте про "подтяжку" кнопок по питанию. Или к плюсу или к земле. На столе может работать идеально, а в машине может глючить.

(С дребезгом всё норм, по крайней мере на столе. аппаратно он заглушен 104 конденсаторам. Глюков НЕТ.) всё изменилось((

не смог реализовать переключения треков, нашел скетч, вот отсюда https://www.drive2.ru/c/2347322/
он к сожалению далек от идеала, и появился бешенный зребезг

поскажите пожалуйста как в этом скетче реализовать подавление дребезга библиотекой bounce
Код HTML:

int analogPin=0;
int data;
unsigned long currentTime;
unsigned long loopTime;
const int pin_enc_A = 8; /// звук
const int pin_enc_B = 9; /// звук
const int pin_enc_C = 5; /// переключение
const int pin_enc_D = 4; /// переключение

unsigned char encoder_A;
unsigned char encoder_B;
unsigned char encoder_A_prev=0;
unsigned char encoder_C;
unsigned char encoder_D;
unsigned char encoder_C_prev=0;
void setup() {           

Keyboard.begin();
Serial.begin(9600);
pinMode(pin_enc_A, INPUT_PULLUP); // encoder 1
pinMode(pin_enc_B, INPUT_PULLUP); // encoder 2
pinMode(pin_enc_C, INPUT_PULLUP); // encoder 1
pinMode(pin_enc_D, INPUT_PULLUP); // encoder 2
currentTime = millis();
loopTime = currentTime;
///attachInterrupt(4, key_mute, FALLING);

}
void loop() {
 currentTime = millis();
 if(currentTime >= (loopTime + 5)){ // проверяем каждые 5мс (200 Гц)
encoder_C = digitalRead(pin_enc_C); // считываем состояние выхода А энкодера
encoder_D = digitalRead(pin_enc_D); // считываем состояние выхода А энкодера
if((!encoder_C) && (encoder_C_prev)){ // если состояние изменилось с положительного к нулю
if(encoder_D)
{
// выход В в полож. сост., значит вращение по часовой стрелке
Remote.next();
delay(10);
Remote.clear();
}
else {
Remote.previous();
delay(10);
Remote.clear();
}
} encoder_C_prev = encoder_C;

}

////энкодер 2

currentTime = millis();
if(currentTime >= (loopTime + 5)){ // проверяем каждые 5мс (200 Гц)
encoder_A = digitalRead(pin_enc_A); // считываем состояние выхода А энкодера
encoder_B = digitalRead(pin_enc_B); // считываем состояние выхода А энкодера
if((!encoder_A) && (encoder_A_prev)){ // если состояние изменилось с положительного к нулю
if(encoder_B)
{
// выход В в полож. сост., значит вращение по часовой стрелке
Remote.increase();
delay(5);
Remote.clear();
}
else {
Remote.decrease();
delay(5);
Remote.clear();
}
}
encoder_A_prev = encoder_A; // сохраняем значение А для следующего цикла

loopTime = currentTime;
}

 data=analogRead(analogPin); //читаем значение нажатой кнопки
  Serial.println(data); //для определения кодов нажатых кнопок на мониторе порта
  /*поддерживаемые коды управляющих клавиш
  http://arduino.cc/en/Reference/KeyboardModifiers*/
  if (data>=28 && data<=35)  // приглушение звука
    {
      Remote.mute();
      Remote.clear();
    }
  if (data>
=58 && data<=65)  // воспроизведение / пауза
    {
      Remote.play_pause();
      Remote.clear();
    }
  if (data>
=140 && data<=150)  // домой
    {
Keyboard.press(KEY_ESC);
Keyboard.release(KEY_ESC);
    }
    if (data>
=88 && data<=95)  // ALT+TAB
    {
Keyboard.press(KEY_LEFT_ALT); 
Keyboard.press(KEY_TAB); 
Keyboard.release(KEY_TAB); 
Keyboard.press(KEY_TAB); 
Keyboard.releaseAll();
}
  delay(180);
}


TransF 02.12.2015 23:08

Посидел покрутил в руках то что нашёл для энкодеров в инете, и пришел к выводу что скетча лучше чем от lti1 просто не найти, дополнил его кнопками.

Код HTML:

int analogPin=0;
int data;
void setup() {           
PCICR=1<<PCIE0;
PCMSK0=(1<<PCINT5)|(1<<PCINT4);
pinMode (9,INPUT);
pinMode (8,INPUT);
Keyboard.begin();
Serial.begin(9600);
}
void loop() {
 data=analogRead(analogPin); //читаем значение нажатой кнопки
  Serial.println(data); //для определения кодов нажатых кнопок на мониторе порта
  if (data>
=28 && data<=35)  // приглушение звука
    {
      Remote.mute();
      Remote.clear();
    }
  if (data>
=58 && data<=65)  // воспроизведение / пауза
    {
      Remote.play_pause();
      Remote.clear();
    }
  delay(180);
  if (data>
=88 && data<=95)  // ALT+TAB
    {
      Keyboard.press(KEY_LEFT_ALT); 
      Keyboard.press(KEY_TAB); 
      Keyboard.release(KEY_TAB); 
      Keyboard.press(KEY_TAB); 
      Keyboard.releaseAll();
}
  delay(180);
    if (data>
=140 && data<=150)  // домой
    {
Keyboard.press(KEY_ESC);
Keyboard.release(KEY_ESC);
    }
}

ISR (PCINT0_vect){
static byte old_n=PINB&B00110000;
byte new_n=PINB&B00110000;
if (old_n==32&&new_n==48||old_n==16&&new_n==0) {
        Remote.increase(); 
        delay(10); 
        Remote.clear();}
if (old_n==16&&new_n==48||old_n==32&&new_n==0) {
        Remote.decrease();
        delay(100); 
        Remote.clear();}
old_n= new_n;
}

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

lti1 03.12.2015 01:26

Цитата:

Сообщение от TransF (Сообщение 345332)
Помогите пожалуйста, дописать кусок скетча для переключения треков.

Второй энкодер подключается к D10 и D16, так же с резисторами и конденсаторами:
PHP код:

void setup() {             
PCICR=1<<PCIE0
PCMSK0=(1<<PCINT5)|(1<<PCINT4)|(1<<PCINT2)|(1<<PCINT6); 
pinMode (9,INPUT); 
pinMode (8,INPUT);
pinMode (16,INPUT);
pinMode (10,INPUT);
Keyboard.begin(); 

void loop() {


ISR (PCINT0_vect){ 
static 
byte old_n=PINB&B01110100
byte new_n=PINB&B01110100

if ((
old_n B00110000) == 32 && (new_n B00110000) == 48 || (old_n B00110000) == 16 && (new_n B00110000) == 0) { 
        
Remote.increase();    
        
Remote.clear();
      } 
if ((
old_n B00110000) == 16 && (new_n B00110000) == 48 || (old_n B00110000) == 32 && (new_n B00110000) == 0) { 
        
Remote.decrease();   
        
Remote.clear();
      } 
        
if ((
old_n B01000100) == 64 && (new_n B01000100) == 68 || (old_n B01000100) == && (new_n B01000100) == 0) { 
        
Remote.next();   
        
Remote.clear();
      } 
if ((
old_n B01000100) == && (new_n B01000100) == 68 || (old_n B01000100) == 64 && (new_n B01000100) == 0) { 
        
Remote.previous();  
        
Remote.clear();
      }
        
old_nnew_n



TransF 05.12.2015 15:45

Цитата:

Сообщение от lti1 (Сообщение 345338)
Второй энкодер подключается к D10 и D16, так же с резисторами и конденсаторами:
PHP код:

int analogPin=0;
int data;

void setup() {             
PCICR=1<<PCIE0
PCMSK0=(1<<PCINT5)|(1<<PCINT4)|(1<<PCINT2)|(1<<PCINT6); 
pinMode (9,INPUT); 
pinMode (8,INPUT);
pinMode (16,INPUT);
pinMode (10,INPUT);
Keyboard.begin(); 

void loop() {


ISR (PCINT0_vect){ 
static 
byte old_n=PINB&B01110100
byte new_n=PINB&B01110100

if ((
old_n B00110000) == 32 && (new_n B00110000) == 48 || (old_n B00110000) == 16 && (new_n B00110000) == 0) { 
        
Remote.increase();    
        
Remote.clear();
      } 
if ((
old_n B00110000) == 16 && (new_n B00110000) == 48 || (old_n B00110000) == 32 && (new_n B00110000) == 0) { 
        
Remote.decrease();   
        
Remote.clear();
      } 
        
if ((
old_n B01000100) == 64 && (new_n B01000100) == 68 || (old_n B01000100) == && (new_n B01000100) == 0) { 
        
Remote.next();   
        
Remote.clear();
      } 
if ((
old_n B01000100) == && (new_n B01000100) == 68 || (old_n B01000100) == 64 && (new_n B01000100) == 0) { 
        
Remote.previous();  
        
Remote.clear();
      }
        
old_nnew_n



Спасибо огромнейшее, теперь всё ровно и четко.

А не подскажете принцип вот этой строчки
if ((old_n & B01000100) == 4 && (new_n & B01000100) == 68 || (old_n & B01000100) == 64 && (new_n & B01000100) == 0) {
для собственного понимания?

TransF 05.12.2015 16:03

Закончил, на компе всё работает, на телефоне тоже.
иду проверять на планшете в машине)
Последняя версия скетча:blush:

Код HTML:

int analogPin=0;
int data;
void setup() {           
PCICR=1<<PCIE0;
PCMSK0=(1<<PCINT5)|(1<<PCINT4)|(1<<PCINT2)|(1<<PCINT6);
pinMode (9,INPUT);
pinMode (8,INPUT);
pinMode (16,INPUT);
pinMode (10,INPUT);
Keyboard.begin();
Serial.begin(9600);
}
void loop() {
    data=analogRead(analogPin); //читаем значение нажатой кнопки
    Serial.println(data); //для определения кодов нажатых кнопок на мониторе порта
if (data>
=28 && data<=35)  // приглушение звука
    {
      Remote.play_pause();
      Remote.clear();
    }
if (data>
=58 && data<=65)  // воспроизведение / пауза
    {
      Remote.mute();
      Remote.clear();
    }
  delay(100);
if (data>
=88 && data<=95)  // ALT+TAB
    {
      Keyboard.press(KEY_LEFT_ALT); 
      Keyboard.press(KEY_TAB); 
      Keyboard.release(KEY_TAB); 
      Keyboard.press(KEY_TAB); 
      Keyboard.releaseAll();
}
  delay(180);
if (data>
=140 && data<=150)  // спать
    {
      Remote.power();
      Remote.clear();
    }
}
ISR (PCINT0_vect){
static byte old_n=PINB&B01110100;
byte new_n=PINB&B01110100;

if ((old_n & B00110000) == 32 && (new_n & B00110000) == 48 || (old_n & B00110000) == 16 && (new_n & B00110000) == 0) {
        Remote.increase();   
        Remote.clear();
      }
if ((old_n & B00110000) == 16 && (new_n & B00110000) == 48 || (old_n & B00110000) == 32 && (new_n & B00110000) == 0) {
        Remote.decrease(); 
        Remote.clear();
      }
       
if ((old_n & B01000100) == 64 && (new_n & B01000100) == 68 || (old_n & B01000100) == 4 && (new_n & B01000100) == 0) {
        Remote.previous(); 
        Remote.clear();
      }
if ((old_n & B01000100) == 4 && (new_n & B01000100) == 68 || (old_n & B01000100) == 64 && (new_n & B01000100) == 0) {
        Remote.next(); 
        Remote.clear();
      }
       
old_n= new_n;
}

ОГРОМНОЕ спасибо всем кто помог мне в этой совсем не простой (для меня) задаче)

lti1 05.12.2015 16:15

Цитата:

Сообщение от TransF (Сообщение 345479)
Спасибо огромнейшее, теперь всё ровно и четко.

А не подскажете принцип вот этой строчки
if ((old_n & B01000100) == 4 && (new_n & B01000100) == 68 || (old_n & B01000100) == 64 && (new_n & B01000100) == 0) {
для собственного понимания?

Так как оба энкодера пишутся в одну переменную, сравнение производится с применением битовой маски. Нагляднее будет так:
PHP код:

if ((old_n B01000100) == B00000100 && (new_n B01000100) == B01000100 || 
    (
old_n B01000100) == B01000000 && (new_n B01000100) == B00000000


TransF 05.12.2015 16:22

Проверяю на nexus-e,
Альт\таб - переключает между собой только последние 2 приложения
Мьют - вообще не работает( планшет думает что мьют включают на входящие звонки, во время воспроизведения звук не глушит как на компьютере (((
Рано радоваться(((
Цитата:

Сообщение от lti1 (Сообщение 345483)
Так как оба энкодера пишутся в одну переменную, сравнение производится с применением битовой маски. Нагляднее будет так:
PHP код:

if ((old_n B01000100) == B00000100 && (new_n B01000100) == B01000100 || 
    (
old_n B01000100) == B01000000 && (new_n B01000100) == B00000000


Спасибо за информацию. Чесно говоря ничего не понял.

lti1 05.12.2015 16:39

Цитата:

Сообщение от TransF (Сообщение 345484)
Проверяю на nexus-e,
Альт\таб - переключает между собой только последние 2 приложения
Мьют - вообще не работает( планшет думает что мьют включают на входящие звонки, во время воспроизведения звук не глушит как на компьютере (((
Рано радоваться(((

Спасибо за информацию. Чесно говоря ничего не понял.

Про Alt+Tab я же вам в личку писал, то что Вы сделали нормально работать не будет.

~aviator~ 26.02.2016 16:27

темка еще жива?
на панели компа есть энкодер с кнопкой и еще 2 кнопки
поможет ли мне этот скетч и схема в реализации задачи по регулирвки громкости например+ выкл/вкл звука и еще 2 кнопки например по переходу трека вперед/назад

TransF 27.02.2016 10:05

Цитата:

Сообщение от ~aviator~ (Сообщение 352915)
темка еще жива?
на панели компа есть энкодер с кнопкой и еще 2 кнопки
поможет ли мне этот скетч и схема в реализации задачи по регулирвки громкости например+ выкл/вкл звука и еще 2 кнопки например по переходу трека вперед/назад

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

~aviator~ 28.02.2016 00:25

есть но дорого для меня пока

TransF 28.02.2016 00:27

Цитата:

Сообщение от ~aviator~ (Сообщение 353043)
есть но дорого для меня пока

Если устройство уже есть, ведь энкодер есть, значит просто нужно заставить работать.

defed 28.02.2016 12:25

Всем привет! А кто нибудь пытался на pro micro сделать Энкодер + матричная клавиатура 4*4, 3*4 ? Сделал Энкодер + резистивные кнопки, но не очень нравится их работа. Есть ошибки при срабатывании... хотя висят и резисторы и конденсаторы, подальше разнёс значения кнопок и питание дополнительно стабилизировано.. Нашел пример кода для матричной клавиатуры 3*4 но пока не могу добиться срабатывания всех кнопок. Может есть у кого опыт?

lti1 28.02.2016 14:23

Цитата:

Сообщение от defed (Сообщение 353078)
Всем привет! А кто нибудь пытался на pro micro сделать Энкодер + матричная клавиатура 4*4, 3*4 ? Сделал Энкодер + резистивные кнопки, но не очень нравится их работа. Есть ошибки при срабатывании... хотя висят и резисторы и конденсаторы, подальше разнёс значения кнопок и питание дополнительно стабилизировано.. Нашел пример кода для матричной клавиатуры 3*4 но пока не могу добиться срабатывания всех кнопок. Может есть у кого опыт?

http://arduino.ru/forum/programmirov...lioteki-keypad

defed 28.02.2016 19:13

Цитата:

Сообщение от lti1 (Сообщение 353081)

Спасибо за направление. Подскажите а как прикрепить сюда нажатие на F1 ? в порт посылает четко .Можно пример если не трудно. Спасибо огромное заранее!

/* @file CustomKeypad.pde
|| @version 1.0
|| @author Alexander Brevig
|| @contact alexanderbrevig@gmail.com
||
|| @description
|| | Demonstrates changing the keypad size and key values.
|| #
*/
#include

const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {9,8,7,6}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {5,4,3,2}; //connect to the column pinouts of the keypad

//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

void setup(){
Serial.begin(9600);
}

void loop(){
char customKey = customKeypad.getKey();

if (customKey){
Serial.println(customKey);
}
}

lti1 28.02.2016 20:41

Цитата:

Сообщение от defed (Сообщение 353118)
Спасибо за направление. Подскажите а как прикрепить сюда нажатие на F1 ? в порт посылает четко .Можно пример если не трудно. Спасибо огромное заранее!

/* @file CustomKeypad.pde
|| @version 1.0
|| @author Alexander Brevig
|| @contact alexanderbrevig@gmail.com
||
|| @description
|| | Demonstrates changing the keypad size and key values.
|| #
*/
#include

const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {9,8,7,6}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {5,4,3,2}; //connect to the column pinouts of the keypad

//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

void setup(){
Serial.begin(9600);
}

void loop(){
char customKey = customKeypad.getKey();

if (customKey){
Serial.println(customKey);
}
}

Keyboard.press(KEY_F1);
https://www.arduino.cc/en/Reference/KeyboardModifiers
https://www.arduino.cc/en/Reference/KeyboardBegin

~aviator~ 29.02.2016 11:11

подскажите скачал IDE 1.0.5v2
заменил файлы как сказано, а он не хочет компилиться, говорит, только с леонардо будет работать

TransF 29.02.2016 14:00

Цитата:

Сообщение от ~aviator~ (Сообщение 353158)
подскажите скачал IDE 1.0.5v2
заменил файлы как сказано, а он не хочет компилиться, говорит, только с леонардо будет работать

Так и есть ПРО МИКРО это и есть ЛЕОНАРДО

~aviator~ 29.02.2016 14:17

Цитата:

Сообщение от TransF (Сообщение 353172)
Так и есть ПРО МИКРО это и есть ЛЕОНАРДО

я уже понял, буду заказывать

~aviator~ 02.03.2016 16:57

Еще такой вопрос, а как происходит назначение клавиш?
как на них повесить, то что необходимо

kazanova 09.03.2016 14:04

Всем привет!

А ни у кого не было проблем с засыпанием леонардо? У меня планшет при подключенной ардуино про микро (леонардо) некорректно уходит в гибернацию (не восстанавливается и сообщает о произошедшей ошибке). При этом на домашнем ноуте все нормально. Куда копать - ума не приложу?

TransF 01.06.2016 17:12

Доброго времени суток одноклубням!
Подскажите как прикрутить к уже рабочей схеме АРДУИНО-МУЛЬТИМЕДИА-КЛАВИАТУРЕ блютуз передатчик?

avaRi 31.10.2016 20:48

Всем привет! Подскажите нормальный скейч для Двух энкодеров с кнопками
https://www.youtube.com/watch?v=Mo5p6z5B27k вот здесь все работает но не могу найти исходники! Может у кого сохранилось?

TransF 31.10.2016 21:21

http://www.pccar.ru/showthread.php?t=23202&page=6
Самое верхнее сообщение.

Там же мой скетч с добавленными кнопками.

https://youtu.be/J7EMfMGWc9Y
Работает вот так.

avaRi 31.10.2016 23:06

Цитата:

Сообщение от TransF (Сообщение 373220)
http://www.pccar.ru/showthread.php?t=23202&page=6
Самое верхнее сообщение.

Там же мой скетч с добавленными кнопками.

https://youtu.be/J7EMfMGWc9Y
Работает вот так.

Там в ВИдео управление именно кнопками на энкодере они простые не резестивные. Энкодер именно ардуиновский. МУте получается а вот альт таб не хочет

TransF 31.10.2016 23:17

Цитата:

Сообщение от avaRi (Сообщение 373228)
Там в ВИдео управление именно кнопками на энкодере они простые не резестивные. Энкодер именно ардуиновский. МУте получается а вот альт таб не хочет

Энкодер он по определению энкодер принцип действия всех их одинаков.
Что значит простые не резистивный? Кнопка она либо замыкает либо размыкает неважно, вешаешь с нею последовательно резистор и она становится резистивный.

Альт таб реализован и работает что четко видно из моего видео. Скетч там же ниже написан, оъединение нескольких скетчей.

avaRi 31.10.2016 23:44

Спасибо да реально затупил, у нас уже утро. Подскажите какое сопротивление ставили на кнопки? Вернее схему!

TransF 31.10.2016 23:52

Цитата:

Сообщение от avaRi (Сообщение 373230)
Спасибо да реально затупил, у нас уже утро. Подскажите какое сопротивление ставили на кнопки?

Уже давно не помню своих значений.
Хотя они вам не помогут. Ваше железо даст свои показатели. Считывание их и потом вводите в конечный скетч.

avaRi 01.11.2016 00:09

У меня показывает нули с 10 кОм может нужно меньше.
http://www.pccar.ru/attachment.php?a...6&d=1445200047
ПО этой схеме подключали?

TransF 01.11.2016 00:18

Цитата:

Сообщение от avaRi (Сообщение 373232)
У меня показывает нули с 10 кОм может нужно меньше.
http://www.pccar.ru/attachment.php?a...6&d=1445200047
ПО этой схеме подключали?

Нет. Сейчас с телефона не смогу найти тему. Тут на форуме есть общая тема по рулевым резистивный кнопкам. Там есть всё. Только там 50 страниц, было последний раз. Где то на первом десятке есть все ответы. Всё остальное в большей мере флуд.
Изучить эту тему как минимум все равно придется.

uncann 09.01.2017 23:59

Скетч поставил - все работает, вот только кроме одной кнопки "Power", пока без нее :)
В чем проблема? библиотеку какую то походу надо?

sketch_jan10a:38: error: 'class Remote_' has no member named 'power'
'class Remote_' has no member named 'power'

TransF 10.01.2017 00:45

Цитата:

Сообщение от uncann (Сообщение 379376)
Скетч поставил - все работает, вот только кроме одной кнопки "Power", пока без нее :)
В чем проблема? библиотеку какую то походу надо?

sketch_jan10a:38: error: 'class Remote_' has no member named 'power'
'class Remote_' has no member named 'power'

А кнопки повер в скетче и не было.
Я пользую 2 провода на кнопку основного энкодера.

Если нудно реализовать вкл. выкл. экрана то можно прописать слип, но выключения планшета не будет.


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

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