#1 Re: Програмування Arduino » Функция tone() » 2019-12-07 10:36:27

MikeM пише:

"То ли лыжи не едут, то ли я ..." делаю что-то не так?

А я склоняюсь к первому.Все же перед тем как садится за работу с ардуину лыжи желательно снять. Ардуина все же не женщина, требует к себе немного уважения.

#2 Re: Програмування Arduino » Мусор в буфере » 2019-11-30 14:06:18

Nemoj, а если есть ситуация что буфер и не пустой и не полный. Ну не накапало все.Надо время что бы все налилось. Сначала выпили первую половину, а потом вторую. А целиком не получилось. И теперь жалуетесь что вам по полной не налили.

#3 Re: Програмування Arduino » Помогите с нажатием на кнопку (удержание) » 2019-11-05 01:34:00

негласные правила это такие правила которые сам решил для себя. Но это не исключает вероятности что кто-то решил строго наоборот. Одни едут по одной стороне, а другие по другой. И все это стало ГЛАСНЫМ негласным правилом. Не хочу сказать что негласные правила это плохо.Так можно сэкономить время на решение не важной проблемы. Но в суд другого не потащишь за нарушение негласных правил, конечно кроме негласного правила что у сильного слабый виноват. Но это скорее негласное правило природы.

#4 Re: Програмування Arduino » Multi function shield, 2 кнопки для светодиодов на плате вкл/выкл » 2019-09-24 17:52:16

решается как классический цифровой автомат.Но скетча я Вам точно не дам, потому что это сразу написать что скетч вами честно спизжен.

#5 Re: Програмування Arduino » Как подключить 2 реле и задать им разное время включения? » 2019-09-14 16:09:26

/**/
class cl_aaa {
  protected:
    byte pin;
    static const byte sON = 0; // состояние вкл
    static const byte sOFF = 1; // состояние выкл
    unsigned long time1, time, past;
    byte state;
    void set(byte s) {
      past = millis();
      state = s;
      if (state == sON) digitalWrite(pin, HIGH);
      else digitalWrite(pin, LOW);
    }
  public:
    cl_aaa(byte p, unsigned long t1, unsigned long t): pin(p), time1(t1), time(t) {}
    void init() {
      pinMode(pin, OUTPUT);
      set(sON);
    }
    void run() {
      if (state == sON && millis() - past >= time1)set(sOFF);
      if (state == sOFF && millis() - past >= (time - time1))set(sON);
    }
};

cl_aaa aaa1(/*пин*/13,/*время вкл*/(unsigned long )500,/*время цикла*/(unsigned long )1000);
cl_aaa aaa2(/*пин*/12,/*время вкл*/(unsigned long )1000,/*время цикла*/(unsigned long )2000);
//----------------------------------------------------
void setup() {
  aaa1.init();
  aaa2.init();
}
void loop() {
  aaa1.run();
  aaa2.run();
}

#6 Re: Програмування Arduino » Помогите написать код » 2019-03-22 19:12:28

/**/
const byte Rpin =/*пин*/A0;
const byte Led1Pin =/*пин*/8;
const byte Led2Pin =/*пин*/9;
const byte Led3Pin =/*пин*/10;
const byte st1 = 0; // горит 1-й
const byte st2 = 1; // горит 2-й
const byte st3 = 2; // горит 3-й
byte state;
unsigned long past,time;
void set(byte s) {
  state = s;
  time=analogRead(Rpin)+100;
  past = millis();
  switch (s) {
    case st1:
      digitalWrite(Led1Pin, HIGH);
      digitalWrite(Led2Pin, LOW);
      digitalWrite(Led3Pin, LOW);
      break;
    case st2:
      digitalWrite(Led1Pin, LOW);
      digitalWrite(Led2Pin, HIGH);
      digitalWrite(Led3Pin, LOW);
      break;
    case st3:
      digitalWrite(Led1Pin, LOW);
      digitalWrite(Led2Pin, LOW);
      digitalWrite(Led3Pin, HIGH);
      break;
  }
}
void _init() {
  pinMode(Led1Pin, OUTPUT);
  pinMode(Led2Pin, OUTPUT);
  pinMode(Led3Pin, OUTPUT);
  set(st1);
}
void _run() {
  if (state == st1 && millis() - past >= time) set(st2);
  if (state == st2 && millis() - past >= time) set(st3);
  if (state == st3 && millis() - past >= time) set(st1);
}
//-----------main------------------------
void setup() {
  _init();
}
void loop() {
  _run();
}
/**/

#7 Re: Програмування Arduino » помогите поправить код ibutton+ардуино » 2019-02-25 21:58:59

Хороших то и нету. Посредственных море. А конечные автоматы с лямда функцией это моя личная наработка. Ну так по мелочам http://arduino.ru/forum/programmirovanie/tsifrovye-avtomaty-v-klassakh-po-qwone#comment-431698

#8 Re: Програмування Arduino » помогите поправить код ibutton+ардуино » 2019-02-22 21:35:03

Вы же просили поднесли карточку дверь открылась . Еще раз дверь закрылась. Конечно это нужно делать с паузой в 1 секунду. А то дверь отрылась-закрылась будет меняться каждую секунду без отъема карточки.

#9 Re: Програмування Arduino » помогите поправить код ibutton+ардуино » 2019-02-22 19:12:12

Не проверял работу

//-----замок-----------------------
typedef void(*pDo)();
pDo Do = [] {};
#include <OneWire.h>
OneWire ds(/*пин*/10);
const byte num = 2; // 2 кода
const byte base[num][8] = {
  {0x01, 0x11, 0xF7, 0x43, 0x01, 0x00, 0x00, 0x65},// 1-й код
  {0xEB, 0x00, 0x00, 0x01, 0xB6, 0x7A, 0x12, 0x01} // 2-й код
};
void runLock() {
  byte tmp[8];
  bool ok = false;
  if (ds.search(tmp)) {
    for (int i = 0; i < num; i++) {
      if (base[i][0] == tmp[0] && base[i][1] == tmp[1] &&
          base[i][2] == tmp[2] && base[i][3] == tmp[3] &&
          base[i][4] == tmp[4] && base[i][5] == tmp[5] &&
          base[i][6] == tmp[6] && base[i][7] == tmp[7] ) ok = true;
    }
    for (int i = 7; i > -1; i--) {
      Serial.print(tmp[i], HEX); Serial.print(" ");
    }
    Serial.println();
    if (ok)Do();
    ds.reset_search();
  }
}
//---------автомат-----------------------------
const byte ledPin =/*пин*/13;
// состояния автомата
const byte s0 = 0;// считываем что бы открыть
const byte s1 = 1;// пауза что бы убрать ключ
const byte s2 = 2;// считываем что бы закрыть
const byte s3 = 3;// пауза что бы убрать ключ
pDo run = [] {};
const unsigned long time1s = 1000; // 1 секунда на убрать ключ
unsigned long past;
void set(byte s) {
  past = millis();
  switch (s) {
    case s0:
      digitalWrite(ledPin, LOW);
      Do = [] {set(s1);};
      run = [] {};
      break;
    case s1:
      digitalWrite(ledPin, HIGH);
      Do = [] {};
      run = [] {
        if (millis() - past > time1s)
          set(s2);
      };
      break;
    case s2:
      Do = [] {set(s3);};
      run = [] {};
      break;
    case s3:
      digitalWrite(ledPin, LOW);
      Do = [] {};
      run = [] {
        if (millis() - past > time1s)
          set(s0);
      };
      break;
  }
}
//-------------------------------------------------
void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
  set(s0);
}

void loop() {
  runLock();
  run();
}

#10 Re: Програмування Arduino » помогите написать программу » 2019-02-16 17:05:20

Ну вот - нажал на кнопку повернулось на 3 секунды

/**/
const byte btnPin = 2; // кнопка
const byte servoPin = 12; //серва
const byte ledPin = 13; //светодиод
//---------------------------
#include <Servo.h>
Servo servo;
//----автомат-------------------
typedef void (*pDo)();
pDo run = [] {};
// состояния
const byte sCLOSE = 0; // открыто
const byte sOPEN = 1 ; // закрыто
bool state;
const unsigned long time3s=3000;// константа 3 секунды
void set(bool s) {
  static unsigned long past;
  past = millis();
  state = s;
  switch (s) {
    case sCLOSE:
      digitalWrite(ledPin, LOW);
      servo.write(90);
      run = [] {};
      break;
    case sOPEN:
      digitalWrite(ledPin, HIGH);
      servo.write(0);
      run = [] {
        if (millis() - past >= time3s) set(sCLOSE);
      };
      break;
  }
}
//--------кнопка-----------------------------------
pDo runBtn = [] {};
bool btn;
void setBtn(bool b) {
  static unsigned long past;
  btn = b;
  past = millis();
  switch (b) {
    case false:
      set(sOPEN);
      runBtn = [] {
        if (!digitalRead(btn) && millis() - past >= 100)  setBtn(true);
      };
      break;
    case true:
      runBtn = [] {
        if (digitalRead(btn) && millis() - past >= 100)  setBtn(false);
      };
      break;
  }
}
//--------------------------------------------
void setup() {
  servo.attach(servoPin);
  pinMode(btnPin, INPUT_PULLUP);
  setBtn(false);
  pinMode(ledPin, OUTPUT);
  set(sCLOSE);
}

void loop() {
  runBtn();
  run();
}

#13 Re: Програмування Arduino » Нужна помощь: Кнопка, тайминг, реле » 2019-01-06 18:47:07

/**/
//#1
const byte ledPin = 13;
enum state1_t {sLedOFF, sLedON} state1;
unsigned long past1;
unsigned long time2s = 2000;
void stand1(state1_t s) {
  state1 = s;
  past1 = millis();
  switch (state1) {
    case sLedOFF:
      digitalWrite(ledPin, LOW);
      break;
    case sLedON:
      digitalWrite(ledPin, HIGH);
      break;
  }
}
//#2
const byte btnPin = 2;
enum state2_t {sBtnOFF, sBtnON} state2;
//---------main()-------------------------
void setup() {
  //#1
  pinMode(ledPin, OUTPUT);
  stand1(sLedOFF);
  //#2
  pinMode(btnPin, INPUT_PULLUP);
  state2 = sBtnOFF;
}
void loop() {
  //#1
  switch (state1) {
    case sLedOFF:
      break;
    case sLedON:
      if (millis() - past1 >= time2s) stand1(sLedOFF);
      break;
  }
  //#2
  bool tmp = digitalRead(btnPin);
  switch (state2) {
    case sBtnOFF:
      if (!tmp) {
        state2 = sBtnON;
        stand1(sLedON);
        delay(50);
      }
      break;
    case sBtnON:
      if (tmp) {
        state2 = sBtnOFF;
        stand1(sLedON);
        delay(50);
      }
      break;
  }
}

#14 Re: Проекти » Робототехнический стартап (Украина) » 2018-11-12 19:14:37

Dynamic_Div пише:

Задачи сложные но интересные. Не хватает рук.
Всем у кого есть время, желание, тяга к развитию в области роботостроения - будет интересно, не скучно и с профитом.

При чем тут руки. Вы же не грузчиков нанимаете. Нужны головы и станки. Или опять же все в Китае закупать.
Ну и так для общего развития. https://youtu.be/zJSSlkEHXBQ?t=343
И на чем вы будете детали делать для таких роботах. Что опять как в средневековье ручками.

#15 Re: Програмування Arduino » Не работает антидребезг » 2018-10-13 21:53:26

Вы сами и ответили. Учитесь писать вменяемые программы.

#16 Re: Програмування Arduino » Сделай свой HMI с единственной кнопкой » 2018-06-08 12:36:17

Неплохо все организовано.

#include "Arduino.h"
#include "Buttonkey.hpp"
#include "SuperButton.hpp"

SuperButton button(5,69,1000,1000);

void setup(void)
{
        Serial.begin(9600);
        pinMode(2,INPUT_PULLUP);
}

void loop(void)
{        
        switch (button.pressed())
        {
                case SuperButton::Press::SINGLE: Serial.println("single pressed"); break;
                case SuperButton::Press::DOUBLE: Serial.println("double pressed"); break;
                case SuperButton::Press::LONGER: Serial.println("longer pressed"); break;
                default:;
        }
}

Можно SuperButton::Press::SINGLE  в define спрятать (для любителей)

#18 Re: Програмування Arduino » Помогите амбициозному новичку! » 2018-03-09 20:13:49

Olej пише:

Очень трудно понять о чём здесь хотелось сказать ... если вообще хотелось. big_smile

Начнем ну очень из далека. Почему Наполеон нагибал Европу. Гений может быть. Но французкие генералы тоже были ничего. А произошла Великая Французкая революция и вместе со свободой сделали всеобщую воинскую повиность. И откосить от нее не возможно. Хоть ты поп дворянин, рабочий или ну очень королевской крови. То есть в отличие от королевской Франции , где много могло откосить, хотя бы из-за недостаточной оплаты. Дальше. При Королевской франции абсолютный монарх нуждался в деньгах и многие богачи могли ссудить под большой процент !!! Видно желающих пожертвовать на нужды Франции маловато было.  В Революционной Франции все кто не бодро откликались на лозунг "Революция в опасности" проходили по конфискации и знакомству с Гильотиной.  Вывод : вот и приходим к выводу что при Наполеновской Франции мобилизациный ресурс Франции увеличился. Такая же песня и при Кромвеле.  Посмотрим на фашискую Германию и СССР. Как мог СССР победить "объединенную Европу"? Ответ социалистический СССР смог больше мобилизовать ресурсов чем капиталистическая Европа. И да правда , после этого СССР сильно "обнищал", лет 5-10 пришлось потом наращивать жирок.

#19 Re: Програмування Arduino » Помогите амбициозному новичку! » 2018-03-09 19:54:17

Во-во. Как выйду на улицу , как гляну на цены. И истина на ценах и проявляется. А если кому не нравится эта истина, так можно походить по рынку в поисках справедливой истины. Особенно если в кармане своей истины маловато.

#20 Re: Програмування Arduino » Помогите амбициозному новичку! » 2018-03-09 19:38:18

какие люди , куда бегут. Если вы о заробитчанах , то это потому что Украина стала территорией а не страной. Ну бедствие у нас, рукотворное. Мобилизационый ресурс и количество народа на территории это разные вещи. Если с территории получить 100 пращников или с 100 лучников или 100 автоматчиков или 100 робототизированих комплесов, то это разные в мобилизационом смысле области. Но это только технологическое  развитие. А если еще и социальное включить.

#21 Re: Програмування Arduino » Помогите амбициозному новичку! » 2018-03-09 19:05:00

Проблема не в Брежневе или коммунистах,... в строе. А точнее различных мобилизационных возможностях строя. Что ограничивало развиваться феодализму-интересы дворянства , при капитализме - интересы олигархов . при социализме - интересы коммунистической блин элиты. Но при этом мобилизациные возможности капитализма выше чем феодализма, а социализма выше чем капитализма. Но я не об этом. Большие проекты это прежде всего большие расходы и социализм просто позволяет мобилизовать больше. Что важнее благостостояние "технической блин элиты" или реализованые и приносящую пользу народу проекты.  Вот эту мысль и пытаются скрыть от всех при помощи  либеральной галиматьи.

#22 Re: Програмування Arduino » Atmega 328p. PortB-6, PortB-7 » 2018-03-07 20:17:18

Похоже здесь только к опыту Крылова обращаться

МАРТЫШКА И ОЧКИ
Мартышка к старости слаба глазами стала;
А у людей она слыхала,
Что это зло еще не так большой руки:
Лишь стоит завести Очки.
Очков с полдюжины себе она достала;
Вертит Очками так и сяк:
То к темю их прижмет, то их на хвост нанижет,
То их понюхает, то их полижет;
Очки не действуют никак.
«Тьфу пропасть!» говорит она: «и тот дурак,
Кто слушает людских всех врак:
Всё про Очки лишь мне налгали;
А проку на́-волос нет в них».
Мартышка тут с досады и с печали
О камень так хватила их,
Что только брызги засверкали.

ПС:http://myarduino.at.ua/index/biblioteka_cyberlib_arduino/0-11

#23 Re: Програмування Arduino » Помогите решить проблему » 2018-03-06 20:02:47

http://kind-evil.blogspot.com/2013/12/arduino-avrdude-stk500recv-programmer.html
Поисковик в помощь

#24 Re: Програмування Arduino » Помогите амбициозному новичку! » 2018-03-06 18:49:27

Arduino Junior пише:

Это просто на кастовую систему в солнечной Индии похоже. Если ты не выучился на схемотехника, то не трожь это "чужое" , не по твоему уму дело.Господа профессионалы не задумывались почему появился Ардуино как вид? Я думаю что одной из причин было желание изготовителей сделать порог вхождения менее болезненным, дать возможность людям с идеями воплощать их, разбираться самостоятельно. Мне абсолютно понятны коммерчиские намерения некоторых участников форума, деньги инструмент выживания. Зачем топтать надежды молодых и неопытных? вы бы сами такого учения желали в начале своего профессионального пути? почему не рассматривать неопытного но амбициозного как единомышленника,а не как глупца который полез не в свое дело?

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

#25 Re: Програмування Arduino » Помогите амбициозному новичку! » 2018-03-03 17:35:42

Во "амбициозный новичек" а там на фирме он вешал лапшу что он эффективный менеджер программист. Но ему не вдомек, что программист не пишет раз и забыл. Ему надо регуляно в нее что-то добавлять, что-то меня. И самое главное , что программы пишется не на русском или мовi , блин. а) на языке Си который надо знать, б) уметь работать с алгоритмами в) писать код который надо усовершенствовать. г) и "железо" надо знать. так как без "железа" код почему-то не работает.
  А код скинуть смогу, но потом еще постов в 10 надо объяснять что и как. И главное это так за "идею".

Підвал форуму