класс титановый велосипед для тактовой кнопки.

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

Гриша пишет:

Уважаемый строка 35, случаем не ошибка???????????????????????????

digitalWrite(_pb, 1);

ну, как бы это digitalWrite(pin, HIGH);       // включить подтягивающий резистор

karl2233
Offline
Зарегистрирован: 05.07.2015

Клапауций999, спасибо за труд!

вопрос - что такое в строке 5 сообщения 257?

нашел вот такое, это оно?

если правильно понимаю, то инструкция из сообщения 256 относится к строкам 7-82 сообщения 257.

верно?

и ещё, создать файл ".h" как? скопировать текст из сообщения 257(строки 7-82) в текстовый, и заменить расширение "тхт" на "h" ?

sirota
Offline
Зарегистрирован: 18.08.2015

karl2233 пишет:

нашел вот такое, это оно?

Это стандартный класс ардуинки который описывает ее методы. При подключении внешней библиотеки использующей методы чисто дуньке линковщик не докидывает автоматом в нее arduino.h, в то время как в оснвоной *.ino он пишется при компиляции по дефолту.

Так что просто компилируем и не мучаемся.

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

karl2233 пишет:

вопрос - что такое в строке 5 сообщения 257?

нашел вот такое, это оно?

#186

karl2233 пишет:

если правильно понимаю, то инструкция из сообщения 256 относится к строкам 7-82 сообщения 257.

верно?

не верно - к строкам 1-82 сообщения 257.

karl2233 пишет:

и ещё, создать файл ".h" как? скопировать текст из сообщения 257(строки 7-82) в текстовый, и заменить расширение "тхт" на "h" ?

навести курсор мыши на верхний правый угол текста кода - всплывут иконки "код", "скопировать", "принтер", нажать иконку "скопировать", открыть текстовый редактор, вставить текст в окно редактора комбинацией клавиш Ctrl+V, сохранить в кодировке UTF-8 в файл class_BUTTON.h

у кого совсем не получается, то https://dl.dropboxusercontent.com/u/3671035/class_BUTTON/class_BUTTON.h

ПКМ "сохранить ссылку как..."

ivanchekalov
Offline
Зарегистрирован: 25.08.2016

Спасибо большое за проделанную работу, но было бы лучше если бы вы запаковали всё это в zip архив, и добавили туда скетч-пример

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

ivanchekalov пишет:

Спасибо большое за проделанную работу, но было бы лучше если бы вы запаковали всё это в zip архив, и добавили туда скетч-пример

ок. кому и зачем это было бы лучше?

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ivanchekalov пишет:

Спасибо большое за проделанную работу, но было бы лучше если бы вы запаковали всё это в zip архив, и добавили туда скетч-пример

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

Megawollt
Offline
Зарегистрирован: 06.12.2015

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

Retention отрабатывает только определенный промежуток времени

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

Megawollt пишет:

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

Retention отрабатывает только определенный промежуток времени

#257

boolean s;           // программное состояние кнопки.

if (!BUTTON_01.s) {что-то делаем при нажатой кнопке}

=========================

#255

Клапауций 232 пишет:

так же класс хранит значения переменных-состояний своей работы:
p // состояние пина кнопки.
s // программное состояние кнопки.
t // состояние таймера неактивности.
r // состояние таймера нажатия и удержания.

nik182
Offline
Зарегистрирован: 04.05.2015

А теперь массив BUTTONs во внутрь millis() и имеем системый readkey() ?

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

nik182 пишет:

А теперь массив BUTTONs во внутрь millis() и имеем системый readkey() ?

если это не запрещено УК страны твоей дислокации.

ivanchekalov
Offline
Зарегистрирован: 25.08.2016

Я так сделал

while (BUTTON_02.retention) { 
    maximum1 = maximum1 + 1;  // При нажатии кнопки верхний предел температуры на DHT22(1) увеличиваеться на 1 градус
    myGLCD.setBackColor(0, 0, 255);  // Выбираем цвет заливки фона
    myGLCD.setFont(BigFont);  // Выбираем большой шрифт
    myGLCD.setColor(255,255,0);  // Выбираем цвет шрифта
    myGLCD.printNumI(maximum1, 435, 33);  // Пишем значение maximum1 на экран
    delay(400);  // Меняя задержку регулируем скорость увеличения
    if (digitalRead(12) == HIGH){
      break;
    }
  }

 

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

 while, delay(400); digitalRead(12) - бред.

зачем бы я в коде класса делал всё делаев, вытащил все переменные в публичные и с обработкой всего и вся за один цикл, что бы пришёл кто-то и налепил сверху класса цикл с делаями да ещё и с digitalRead пина кнопки?

*взять, что ли, для таких написать велосипед с делаями и циклами? - пусть трахаются и рассказывают мне, что так делать нельзя.

 

ivanchekalov
Offline
Зарегистрирован: 25.08.2016

Мне главное что это работает без тормозов

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

ivanchekalov пишет:

Мне главное что это работает без тормозов

как это может работать без тормозов, если во время delay(400); в течении 0,4 секунды не работает ничего?

ivanchekalov
Offline
Зарегистрирован: 25.08.2016

В моем проекте в этот момент разве что время на дисплее не тикает

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

ivanchekalov пишет:

В моем проекте в этот момент разве что время на дисплее не тикает

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

класс титановый велосипед для delay без delay().

ardus
Offline
Зарегистрирован: 17.09.2016

nik182 пишет:

А теперь массив BUTTONs во внутрь millis() и имеем системый readkey() ?

Битый час бьюсь, почему-то массив BUTTONs пустой приходит в фукнкцию

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

ardus пишет:

nik182 пишет:

А теперь массив BUTTONs во внутрь millis() и имеем системый readkey() ?

Битый час бьюсь, почему-то массив BUTTONs пустой приходит в фукнкцию

кто тут?

Megawollt
Offline
Зарегистрирован: 06.12.2015

Я тут. Понимаю, что если использовать s и держать, то fetention уже работать не будет?
Как эффективнее всего написать команду для двух одновременно нажатых click.down и двух кнопок retention? (отдельно друг от друга разумеется)

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

Megawollt пишет:
Я тут. Понимаю, что если использовать s и держать, то fetention уже работать не будет? Как эффективнее всего написать команду для двух одновременно нажатых click.down и двух кнопок retention? (отдельно друг от друга разумеется)

описалово класса здесь #255

код класса здесь #257

примеры ползания класса здесь #4

перечитать, написать свой код, если не работает - спросить.

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

fershteyn?

"как эффективно что-то писать", спрашиваем здесь Ищу исполнителя - там тебя эффективно научат составлять техзадание за твои же деньги.

 

Megawollt
Offline
Зарегистрирован: 06.12.2015

Это я понимаю.
В моем проекте предусматривается одновременное нажатие кнопок и вот тут получается ересь. В теме я не заметил варианта с одновременным нажатием кнопок

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

Megawollt пишет:
Это я понимаю. В моем проекте предусматривается одновременное нажатие кнопок и вот тут получается ересь. В теме я не заметил варианта с одновременным нажатием кнопок

пока не дойдёт #279 - не возвращайся сюда.

Mr.Privet
Mr.Privet аватар
Offline
Зарегистрирован: 17.11.2015

Видимо зачеркнутый мат тоже считается матом, в следующий раз отправляй всех на йух

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

Mr.Privet пишет:
Видимо зачеркнутый мат тоже считается матом, в следующий раз отправляй всех на йух

найух - некошерно.

ок. а, ты понимаешь, что желает у меня спросить Megawollt ?

*я примерно догадываюсь, но какой смысл амортизировать свои хрустальные шары?

Mr.Privet
Mr.Privet аватар
Offline
Зарегистрирован: 17.11.2015

Клапауций 232 пишет:

ок. а, ты понимаешь, что желает у меня спросить Megawollt ?

Я так понимаю что наш общий знакомый либо либо потерял окончательно память и способность писать скетчики после удара мегавольнтым разрядом либо прожженый новичек и не знает как сделать 2 экземпляра класса в отдельно взятом скетче, объединить два условия оператором && и организовать .update() пока там у него нажаты кнопки.
P.s. я как то понимаю на форуме "чего хотят новички" так как сам от них не далеко ушел. Когда человек совсем плохо выражает свои мысли я полагаю что это дети 8-10 лет. Так что нужно им всячески помогать чтобы следующие покаления были столь же пытливыми и смогли таки создвть роботов которые убъют всех человеков

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

Mr.Privet пишет:
объединить два условия оператором && и организовать .update() пока там у него нажаты кнопки.

думаю, что может, но не понимает, почему теоретически нижеследующий код работает, а практически - нет

if (BUTTON_01.click_down && BUTTON_02.click_down) {}
// или
if (BUTTON_01.retention && BUTTON_02.retention) {}
// или иные комбинации 
if (событие && событие) {}

 

Megawollt
Offline
Зарегистрирован: 06.12.2015

Именно так.
Я конечно понимаю, что всегда хочется потроллить, но я правда не знаю что написано в #284.
Почитаю то, что вы скинули.

Mr.Privet
Mr.Privet аватар
Offline
Зарегистрирован: 17.11.2015

Megawollt пишет:
я правда не знаю что написано в #284. Почитаю то, что вы скинули.

И приз "Хрустальный шар года" достается...... Мr.Privet`у!!!!

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

Mr.Privet пишет:

Megawollt пишет:
я правда не знаю что написано в #284. Почитаю то, что вы скинули.

И приз "Хрустальный шар года" достается...... Мr.Privet`у!!!!

как ты это определил - хустальный шар показал?

Mr.Privet
Mr.Privet аватар
Offline
Зарегистрирован: 17.11.2015

Megawollt пишет:
Именно так. Я конечно понимаю, что всегда хочется потроллить, но я правда не знаю что написано в #284. Почитаю то, что вы скинули.

кнопки на пинах 5 и 6, полсе класса кнопки пишем

BUTTON B_1(5);
BUTTON B_2(6);

void setup() 
{
Serial.begin(9600);
}  
void loop() 
{
  B_1.read();
  B_2.read();
  if(B_1.click_down)Serial.println("BUTTON 1 PRESSED");
  if(B_2.click_down)Serial.println("BUTTON 2 PRESSED");
  if(!B_1.s&&!B_2.s)Serial.println("BOUTH BUTTONS PRESSED");
  else Serial.println("...");
}

у меня работает. если у Вас работать не будет то что вы задумали тогда опишите то что задумали. А то лицензия на хрустальный шар закончилась и остался только демо режим "пошлет ли Клапауций очередного...."

 

Megawollt
Offline
Зарегистрирован: 06.12.2015

Благодарю. Послать каждый может.

А почему инвертированное состояние кнопки(!)?

Mr.Privet
Mr.Privet аватар
Offline
Зарегистрирован: 17.11.2015

Megawollt пишет:

Благодарю. Послать каждый может.

А почему инвертированное состояние кнопки(!)?

ну это кнопки, они работают так как подключишь. можно либо к ногу и 5V соединять, но тогда нужен внешний подтягивающий резистор. можно на пины "подать напряжение" как это делается в классе при иницыации и это напряжение "уводить" в землю при нажимании кнопки. При этом при ненажатой кнопке на пине будет 1 так как мы его тода установили, при нажатии кнопки этот 1 будет "утекать" в землю и становиться 0. как то так

Megawollt
Offline
Зарегистрирован: 06.12.2015

Спасибо

Megawollt
Offline
Зарегистрирован: 06.12.2015

А можно ли использовать класс, если подключены две кнопки к одному ADC?

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

Megawollt пишет:

А можно ли использовать класс, если подключены две кнопки к одному ADC?

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

cemenov101
Offline
Зарегистрирован: 29.10.2016

#195

Спасибо, DIYMan!!

прекрасный и простой велосипед.

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

Можно ли вместо кнопки использовать условие(пример:условие выполняется, кнопка нажата, прекратило выполнятся отжата)?

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

cemenov101 пишет:

#195

Спасибо, DIYMan!!

почитай мои комментарии к этому коду #202 и ознакомься с последней версией велосипеда, где всё как и должно быть

cemenov101 пишет:

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

Можно ли вместо кнопки использовать условие(пример:условие выполняется, кнопка нажата, прекратило выполнятся отжата)?

"привязывать свои данные и обработчики событий" привязать к чему? - аппаратному состоянию пина кнопки?

не вижу такой необходимости - брось провод на пин кнопки с другого пина и рули кнопкой программно

cemenov101
Offline
Зарегистрирован: 29.10.2016

вот в этом и есть необходимость, все пины заняты(кроме A3-A5)

поэтому и пытаюсь найти способ "рулить" програмно.

через boll неудается, буду искать...

 

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

cemenov101 пишет:

вот в этом и есть необходимость, все пины заняты(кроме A3-A5)

поэтому и пытаюсь найти способ "рулить" програмно.

через boll неудается, буду искать...

ну, ок. у тебя нет аппаратной кнопки и ты желаешь, какие функции реализовать по состоянию, допустим переменной boolean BUTTON ?

cemenov101
Offline
Зарегистрирован: 29.10.2016

да, именно, через переменную, но компилятор ругается...

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

cemenov101 пишет:

да, именно, через переменную, но компилятор ругается...

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

*дребезг переменной отбрасываем или оставляем?
*двойной клик переменной - это как?
*неактивность переменной - странное, но допустим, нужное.
*удержание - типо, состояние в 1 заданное время?
 
ты точно читал мои комментарии, что аналоговые пины можно юзать как цифровые? #200

 

cemenov101
Offline
Зарегистрирован: 29.10.2016

дребезг точно будет, считывание с датчика происходит

интересует только:

отжатие(чтобы немешалось в случае удержания.)

и само удержание.

хотел именно програмно(оставить пины, если еще что то потребуется "привинтить")

На крайний случай кину провод.

______________

кинул провод, так проще. 

Клапауций 234, спасибо за помощь.

 

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

cemenov101 пишет:

кинул провод, так проще. 

Клапауций 234, спасибо за помощь.

мелкий хак по просьбам трудящихся - рулим пином кнопки программно

можно переинициализировать пин кнопки в OUTPUT и рулить им программно.

#include <class_BUTTON.h>

BUTTON BUTTON_01(14);

void setup() {
pinMode(14, OUTPUT); // LED_01 возможно, светодиод - не кнопка!!!
digitalWrite(14, 1);
}

void loop() {

BUTTON_01.read();
if () {digitalWrite(14, 1);} // кнопка отпущена
if () {digitalWrite(14, 0);} // кнопка нажата
}

!!!надеюсь, понятно, что кнопку к этому пину подключать нельзя - только светодиод через токоограничивающий резистор.

Гриша
Offline
Зарегистрирован: 27.04.2014

cemenov101 пишет:

и само удержание.

хотел именно програмно(оставить пины, если еще что то потребуется "привинтить")

а типа:

if (BUTTON_01.retention || fiction_button_retention == TRUE) {что-то делаем при нажатии или программное условное нажатие}

ну и задавать соответственно програмно переменную (если кнопка одна :))

fiction_button_retention
Mr.Privet
Mr.Privet аватар
Offline
Зарегистрирован: 17.11.2015

Вот ведь у дураков мысли сходятся, я как раз думал о некой "виртуальной кнопке" которую могут функуии нажимать либо отпускать. В моем случае на пример чтобы с пульта ir щелкать как кнопкой. Думаю в этом случае нужно пин задать какой нибудь нереальный скажем 100 и при этом читать не кнопку а переменную. Сейчас времени нет, будет напишу...

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

Mr.Privet пишет:
Вот ведь у дураков мысли сходятся, я как раз думал о некой "виртуальной кнопке" которую могут функуии нажимать либо отпускать. В моем случае на пример чтобы с пульта ir щелкать как кнопкой. Думаю в этом случае нужно пин задать какой нибудь нереальный скажем 100 и при этом читать не кнопку а переменную. Сейчас времени нет, будет напишу...

что тебе запрещает на ифах сделать события по получению ир-кода?

Mr.Privet
Mr.Privet аватар
Offline
Зарегистрирован: 17.11.2015

Клапауций 234 пишет:

что тебе запрещает на ифах сделать события по получению ир-кода?


Да ничего не мешает, просто если скетч написан под кнопки, а нужно перенхать на ir можно немного попилить класс нежели пилить скетч. Я сам еще толком не понял что сказал, буду пробывать и отпишусь.

Клапауций 234
Offline
Зарегистрирован: 24.10.2016

Mr.Privet пишет:
Да ничего не мешает, просто если скетч написан под кнопки, а нужно перенхать на ir можно немного попилить класс нежели пилить скетч. Я сам еще толком не понял что сказал, буду пробывать и отпишусь.

подумай что от класса останется... ничего не останется

смысла в классе не будет - одна переменная кода, а не десятки переменных кнопок и код причёсывающий аппаратную часть кнопки и реализующий классические функции кнопок.

Гриша
Offline
Зарегистрирован: 27.04.2014

Mr.Privet пишет:
...я как раз думал о некой "виртуальной кнопке" которую могут функуии нажимать либо отпускать. В моем случае на пример чтобы с пульта ir щелкать как кнопкой. Думаю в этом случае нужно пин задать какой нибудь нереальный скажем 100 и при этом читать не кнопку а переменную...

похоже что кто-то попутал физический и логический уравни :) . на физическом уравне у кнопок есть дребезг, длительность нажатия (удержание)и еще много всего. На логическом уравне этого НЕТ, там есть переменные, которые принимают определнное значение.