Видеоуроки по Arduino #2.2. Кнопки, PWM / ШИМ, функции

Sdílet
Vložit
  • čas přidán 13. 04. 2011
  • Следующий урок - • Видеоуроки по Arduino ...
    Джереми рассказывает о том как подключать кнопки к Arduino, зачем нужен breadboard, как использовать широтно-импульсную модуляцию сигналов (ШИМ или PWM) и о том как создавать собственные функции в среде программирования Arduino
    Начало - • Видеоуроки по Arduino ...
    Скетч для Arduino - jeremyblum.com/wp-content/uplo...
    Список деталей:
    • Arduino Uno - amperka.ru/product/arduino-uno...
    • USB-кабель - amperka.ru/product/usb-cable?u...
    • Breadboard - amperka.ru/collection/breadboa...
    • Светодиоды - amperka.ru/product/led-5mm?utm...
    • Резисторы - amperka.ru/product/resistor?ut...
    • Кнопка тактовая - amperka.ru/product/tactile-but...
    • Набор перемычек - amperka.ru/product/jumper-wire...
    • Мультиметр - amperka.ru/product/multimeter?...
    ПО для Arduino - arduino.cc/en/Main/Software
    Оригинал -
    • Tutorial 02 for Arduin...
    Автор - Jeremy Blum / @sciguy14
    Перевод - AmperkaRu / @amperkaruofficial
    Материалы переведены и опубликованы с разрешения автора
  • Věda a technologie

Komentáře • 252

  • @evgenijtitov2850
    @evgenijtitov2850 Před 8 lety +49

    Довольно сумбурно объясняет. Понятно, что ему всё это понятно (извините за тавтологию), но для тех, кто впервые увидел Ардуино это совсем непонятно. Хотя в первой серии он сказал, что эти уроки подойдут и таким людям. Но хорошо, что даёт толчок на более глубокое изучение написания программ.
    P.S. Амперка, спасибо вам за перевод и за вашу WIKI.

    • @evgenijtitov2850
      @evgenijtitov2850 Před 7 lety +2

      Можешь посоветовать какой-нибудь ресурс по Ардуино для новичка?

    • @sanyaaa111
      @sanyaaa111 Před 3 lety +1

      @Московцов Иван )))))) понятно ему....

    • @user-ek5dp8wt3p
      @user-ek5dp8wt3p Před 2 lety

      перевод-отстой. могли бы и переозвучить

  • @user-in5sq6lh6m
    @user-in5sq6lh6m Před 3 lety +5

    После данного видеоурока и главы 2.8 его книги, бооольшая часть людей начинающих изучение arduino - закончили изучение arduino!

  • @user-or9lo2pu1c
    @user-or9lo2pu1c Před 7 lety +52

    3 ролика и мозг закипел

    • @antondegtyarenko5861
      @antondegtyarenko5861 Před 7 lety +1

      2 :D

    • @sergeyivlev6534
      @sergeyivlev6534 Před 7 lety +1

      а я ещё огурчиком держусь, но думаю скоро к вам присоединюсь)

    • @TheSimpleTruthTeling
      @TheSimpleTruthTeling Před 7 lety +1

      Роман Леонидович Я начал читать его книгу, но она сложна и разбита на непонятно и что и как. Плохо объясняет.

    • @_GEEK
      @_GEEK Před 5 lety

      Тоже самое! 3 ролик и на этом хватит!

    • @Смотрящий_за_пивом
      @Смотрящий_за_пивом Před 4 lety

      значит хорошо. каша варится.

  • @user-sf4em7vw9y
    @user-sf4em7vw9y Před 8 lety +103

    очказавр просто выносит мозг множественными вводами буленов! Смотрел раз 15, но так и не понял что он там с чем сравнивает.

    • @TheSimpleTruthTeling
      @TheSimpleTruthTeling Před 7 lety +2

      Nikita Degterev согласен, слишком завидно для начинающих.

    • @ByteSmart
      @ByteSmart Před 6 lety +6

      Если разрабатываете сложный для Вас проект и нет понимания логики работы, то нарисуйте для себя блок-схему на бумаге. По началу это Вам поможет, без иронии и сарказма. Со временем логика работы скетча начнет приходить сразу при постановке задачи.

    • @Kuzmihek
      @Kuzmihek Před 5 lety +4

      @@ByteSmart к сожалению он сам себе в слух обьясняет, ничего не донес до меня я так и не понял что да где

    • @user-ud7rd8yp7v
      @user-ud7rd8yp7v Před 2 lety +2

      я уже 11 год смотрю и так и не понял

  • @MyIbor
    @MyIbor Před 10 lety +9

    я не понял логику автора видео, поэтому сделал по своему, всё работает чётко :)
    int ledpin = 13;
    int switchpin = 1;
    boolean kip = false;
    void setup()
    {
    pinMode(ledpin, OUTPUT);
    pinMode(switchpin, INPUT);
    }
    void loop()
    {
    if (digitalRead(switchpin) == HIGH)
    {
    delay(200);
    kip = !kip;
    }
    digitalWrite(ledpin, kip);
    }

    • @ISFedorov
      @ISFedorov Před 10 lety +1

      У вас, к сожалению, если нажатие кнопки продлится более 200 мс результат будет случайным

    • @proffzulus
      @proffzulus Před 9 lety +3

      ***** xD, "дикости" называются "функциональная парадигма программирования".
      И, да, у него вызов функции с проверкой и установкой значения. А loop вызывается всегда. Если подержать кнопочку, будет лажа, а именно раз в 0.2 секунды будет меняться состояние светодиода.

    • @clydewarrior2255
      @clydewarrior2255 Před 6 lety

      Так вот же идеальный вариант антидребезга
      if (digitalRead(swichPin) == HIGH && lastButton == 0)
      {
      delay(250);
      ledOn = !ledOn;
      }
      lastButton = digitalRead(swichPin);
      digitalWrite(ledPin, ledOn);
      }
      Тоже самое, только присутствует все тот же lastButton который при зажатой кнопке не дает переключать ledOn по кругу

    • @skylounge8421
      @skylounge8421 Před 6 lety +1

      int led1 = 4;
      int switch1 = 3;
      boolean lastButton = LOW;
      boolean ledOn = LOW;
      void setup()
      {
      pinMode(led1, OUTPUT);
      pinMode(switch1, INPUT);
      }
      void loop()
      {
      if (digitalRead(switch1) == HIGH && lastButton == LOW)
      {
      ledOn = !ledOn;
      lastButton = HIGH;
      }
      else
      {
      lastButton = digitalRead(switch1);
      }
      digitalWrite(led1, ledOn);
      delay(5);
      }
      а у меня так и все работает очень хорошо

    • @dmitry_rellek
      @dmitry_rellek Před 6 lety

      Да, я тоже. Согласен что так проще.

  • @gooomax
    @gooomax Před 11 lety +1

    После завершения видеоурока - решил сделать плавное разгорание и затухание во время нажатия кнопки)) Понравилось

  • @user-sp7qe4jy7x
    @user-sp7qe4jy7x Před 11 lety +1

    Очень сложно понять, потому что он старается уложить в каждый урок по максимуму материала. Вообще это и хорошо.

  • @kenromka
    @kenromka Před 10 lety

    Спасибоо! Благодаря Вам, разобрался в непонятных мне вопросах!

  • @nazar2690
    @nazar2690 Před 11 lety +1

    спасибо за перевод, очень хороший материал и все понятно)

  • @yhdrhjfyrhjfgdg
    @yhdrhjfyrhjfgdg Před 5 lety

    Я вскипел и опух от этого урока ...
    Пойду отдохну

  • @bubuino
    @bubuino Před 5 lety +2

    int switchPin=8;
    int ledPin=12;
    boolean lastButton = LOW; // последнее состояние кнопки
    boolean currentButton = LOW; // текущее состояние кнопки
    boolean ledOn = false; // состояние св.диода при включении false-true
    void setup()
    {
    pinMode(switchPin, INPUT); // пин подачи для управления св.диода
    pinMode(ledPin, OUTPUT); // выход на св.диод
    }
    boolean debounce(boolean last)
    {
    boolean current = digitalRead(switchPin);
    if (last != current) // если текущее и предыдущее состояния кнопки не совпадают
    {
    current = digitalRead(switchPin); // прочтать из switchPin и присвоить current
    }
    delay(1000); // задержка на дребезг контактов св.диода 1сек
    return current;
    }
    void loop()
    {
    currentButton = debounce(lastButton);
    if (lastButton == LOW && currentButton == HIGH)
    {
    ledOn = !ledOn;
    }
    lastButton = currentButton;
    digitalWrite(ledPin, ledOn);
    }

  • @slavikkrolov8090
    @slavikkrolov8090 Před 4 lety

    всё понятно

  • @AmperkaRuOfficial
    @AmperkaRuOfficial  Před 12 lety

    Джереми объясняет местами сумбурно, но на самом деле, в конечном итоге, новички материал понимают. По крайней мере становится понятно в какую сторону копать для более подробного изучения вопроса.
    Почему в переводе Пэ-Вэ-Эм, а не ШИМ - вопрос хороший. Ответ: так сложилось. На момент перевода это казалось хорошей идеей, т.к. большинство материалов типа «Arduino + что-то» было на английском и не хотелось вырывать человека из контекста.
    Переводили бы сейчас - наверное сделали б чуть иначе.

  • @Valek174
    @Valek174 Před 8 lety

    Как узнать какая частота ШИМ и при необходимости поменять?

  • @sputnic1436
    @sputnic1436 Před 3 lety

    Не как не могу понять зачем нужна строчка в конце - lastButton=currentButton ? И какое значение lastButton будет при втором прогоне программы после однократного нажатия кнопки (то что мы присвоили в конце программы или то что в начале программы прописано в глобальных переменных)?

  • @user-ql6hg9hq4o
    @user-ql6hg9hq4o Před 5 lety +1

    Что значит скормить функции last?

  • @Ge0graph
    @Ge0graph Před 7 lety

    Написал похожий пример на основе данного видео: Лампочка меняет состояние в момент отпускания кнопки.
    int button = 8;
    int led = 13;
    boolean buttonWasDown = false;
    boolean currentButton = false;
    void setup()
    {
    pinMode(led, OUTPUT);
    pinMode(button, INPUT);
    }
    void loop()
    {
    if (currentButton != digitalRead(button))
    {
    delay(5);
    currentButton = digitalRead(button);
    }
    if (currentButton == true) buttonWasDown = true;
    else
    {
    if (buttonWasDown == true)
    {
    digitalWrite(led, !digitalRead(led));
    buttonWasDown = false;
    }
    }
    }

  • @user-vf4oc2vx8x
    @user-vf4oc2vx8x Před 5 lety +4

    Надо 87 раз посмотреть, чтобы все было норм

  • @_GEEK
    @_GEEK Před 5 lety +2

    Смотрю 3 видео подряд! Ребята, Вы ничему тут не научитесь....

  • @kentforthable
    @kentforthable Před 8 lety

    в части, где автор расказывал про функцию boolean, стабилизация одной кнопки со светодиодом. А как сделать тоже самое для двух кнопок и двух светодиодов? я копировал и вставлял эти функции, но появилась ошибка redifinition of boolen, что можно с этим сделать?

    • @kurenchuksergey
      @kurenchuksergey Před 8 lety

      +kentforthable нельзя объявлять функцию повторно, её лишь можно повторно использовать. Здесь нужны навыки программирования

    • @berllancman2377
      @berllancman2377 Před 8 lety

      +Сергей Куренчук имя переменых не могут совподать

    • @MONAROL
      @MONAROL Před 7 lety

      +Berl Lancman к чему ты это?

  • @Jom1331
    @Jom1331 Před 8 lety

    А не проще для яркости использовать long byte? Или такого типа данных нет?

  • @Stroitel2012
    @Stroitel2012 Před 11 lety

    а где исходники можно найти?

  • @user-hd5ho2mo4g
    @user-hd5ho2mo4g Před 3 lety

    Я так понял debounce() всегда возвращает LOW?

  • @user-zx1iy8zj5h
    @user-zx1iy8zj5h Před 7 lety +2

    Первую часть (стабилизацию кнопки) я сделал без функций:
    void setup ()
    {
    pinMode(switchPin, INPUT); // пин switchPin (8) назначили на вход
    pinMode(LedPin, OUTPUT); // пин LedPin (13) назначили на выход
    }
    //--------------------------------------------------------------------------------
    void loop ()
    {
    currentButton = digitalRead(switchPin);
    if ( currentButton != lastButton)
    {
    delay (5);
    currentButton = digitalRead(switchPin);
    }
    if (currentButton == HIGH && lastButton == LOW)
    {
    ledOn = !ledOn;
    }
    lastButton = currentButton;
    digitalWrite (LedPin, ledOn);
    }
    все работает, мозг не закипает.

    • @user-sq2tn9mm2s
      @user-sq2tn9mm2s Před 7 lety

      твой код проще и нагляднее, спасибо

  • @benedictopacifico3983
    @benedictopacifico3983 Před 11 lety

    Исходники есть под оригинальным видео Джереми. Он ведь сам во время видео пальцем вниз показывает, когда говорит о них.

  • @AmperkaRuOfficial
    @AmperkaRuOfficial  Před 11 lety

    Исходники программ? Ссылка на них есть на странице вики: wiki.amperka.ru/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE%D1%83%D1%80%D0%BE%D0%BA%D0%B8:2-%D0%BA%D0%BD%D0%BE%D0%BF%D0%BA%D0%B8-pwm-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8

  • @kostyaburtsev4037
    @kostyaburtsev4037 Před 9 lety

    Я писал программу паралельно с Джереми вот какую ошибку выдает
    sketch_mar26a.ino: In function 'void loop()':
    sketch_mar26a:27: error: 'currentButton' was not declared in this scope

  • @user-zy5xz8jo4i
    @user-zy5xz8jo4i Před 9 lety +1

    По поводу последней части урока (когда загорается и тухнет постепенно) подключил все как на видео через резисторы сначала 10КОм, 220Ом, 1КОм. Спалил 10 лампочек, подключил напрямую - все работает. В чем может быть причина?

    • @videokolya
      @videokolya Před 8 lety

      +Сергей Иванов Та же херня, через резистор (какого сопротивления в ролике кстати не сказано, но обычно 220 Ом для светодиодов берут) не загорается лампочка.
      А еще у меня в выключенном состоянии кнопка == HIGH, а в нажатом наоборот == LOW. Где-то читал до этого, что кнопки бывают правильные, как в ролике и обратные, как у меня.

    • @videokolya
      @videokolya Před 8 lety +1

      +videokolya сорри ступил, у меня оказывается + и - были перепутаны которые от ардуины к бредборду идут :) Отсюда и состояния кнопки перепутаны и светодиод на бредборде не горел. Отсюда вывод: всегда применяйте проводы "правильных" цветов для +/-, а не как я за неимением других взял красный и коричневый и перепутал их.

  • @uneasy85
    @uneasy85 Před 7 lety +12

    Это пи*дец! - явно это не для новичков!
    Это то же самое если я начну объяснять обычному рядовому пользователю как проверить транзистор, конденсатор, и т.д. тому подобное....

    • @ByteSmart
      @ByteSmart Před 6 lety

      Прикольно, у меня обратная ситуация. Я его пониманию нормально, а с транзисторами, кондесаторами и тому подобным ни фига не понимаю...

    • @user-vo9kn3pp6p
      @user-vo9kn3pp6p Před 4 lety

      @@ByteSmart , просто Александры по схемотехнике, а ты по программированию.
      Он нормально объяснил.
      Но новичок это то же относительно. Для когото первый раз видеть, а для кого то первый раз для новой платформы/языка

  • @ThisIsZelGer
    @ThisIsZelGer Před 9 lety

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

    • @zubrizavr
      @zubrizavr Před 9 lety

      там нет дальномера =(
      покупай

    • @AmperkaRuOfficial
      @AmperkaRuOfficial  Před 9 lety +2

      ***** Вот неплохой ролик от Discovery о работе оптических лазерных мышей: czcams.com/video/HhJFpbDi6g4/video.html , там немного другой принцип используется. Проще всего, пожалуй, все-таки приобрести готовый модуль.

  • @andreymurachev3250
    @andreymurachev3250 Před 11 lety

    А Вы не могли бы свой код выложить ещё раз? Я разобрался, но хотелось бы увидеть более элегантное решение.

  • @electricfuture1295
    @electricfuture1295 Před 7 lety +3

    Тут есть нюанс того что все новички не знают того что когда функция берет значение переменной lastButton он просто копирует значение и никак не меняет изначальное значение, и в функции main в условии if lastButton будет == low, и обязательно сработает условие if а затем в переменную lastButton присвоится снова low потому что после дебаунсинга кнопка уже не нажата, и так по кругу сработает условие if так как lastButton == low при следующей итерации, ищите в гугле что такое итерация, и поймете, а переменная ledOn просто каждый раз инвертируется, то устанавливаясь в состояние true то в false.
    Если что, спрашивайте, чем смогу тем помогу, помогу понять, так как программисты об о многом умалчивают (типа ещё рано для таких познаний, нифига не рано, нужно всю информацию давать с полна, чтобы понятно было полностью, профессионально)чтобы программирование казалось чем-то непостижимым.

    • @user-kq3nf1on8n
      @user-kq3nf1on8n Před 5 lety

      Доброго времени . Поможите разобраться? Chervjk4@mail.ru

  • @user-qx1dy7ns2x
    @user-qx1dy7ns2x Před 6 lety +9

    Почему так сложно? Почему нельзя сделать так:
    if (digitalRead(switchPin) == HIGH){
    delay(10);
    if (digitalRead(switchPin) == HIGH){
    // пишем то, что должно произойти
    }
    }

    • @vasilyzhagrov829
      @vasilyzhagrov829 Před 5 lety +3

      Попробовал твой вариант. Две нововости: 1.работает. 2.но ху.во!.
      Делай выводы!

    • @Unikus777
      @Unikus777 Před 2 lety

      Не понял, два одинаковых выражения должны работать по разному ? 😲

  • @user-xy9qk1ty6s
    @user-xy9qk1ty6s Před 7 lety

    Здравствуйте!
    У нас прописаны переменные lastButton и currentButton.
    Почему в функции debounce прописываются переменные просто last и current без Button?
    Это некие правила упрощённого написания или это совсем другие переменные?

    • @rassuljenaliyev3021
      @rassuljenaliyev3021 Před 7 lety +1

      в функции loop существует строка:
      currentButton = debounce(lastButton);
      это значит что внутри функции debouce - last принимает значение lastButton-которая является глобальной переменной. Т.е когда в скобках после функции пишется какая-то переменная, она будет принимать значение которое будет заданно функции каждый раз когда будут вызывать эту функцию. Суть в том что функция многоразовая и может иметь каждый раз разные значения

  • @kombadt
    @kombadt Před 9 lety +1

    Неплохо, даже пример создания и работы функции сюда впихнул. Только вот не догнал: при написании функции debounce входной аргумент last. А он его нигде не объявлял... Хотя потом он использовал на входе lastButton, но из-за last почему он ошибку не выдал?

    • @Nikolthor
      @Nikolthor Před 9 lety +2

      kombadt так last это аргумент функции, его не нужно объявлять. Переменная last используется только внутри этой функции и содержит значение, которое передали этой функции

  • @andrewsaharov4508
    @andrewsaharov4508 Před 8 lety +11

    Джереми крутой чувак, но мне не всегда нравится как он пишет код, весь антидребезг можно реализовать этим минимумом простого и понятного кода.
    int inputPin = 5;
    int ledPin = 13;
    int ledValue = LOW;
    void setup()
    {
    pinMode(inputPin, INPUT);
    pinMode(ledPin, OUTPUT);
    }
    void loop()
    {
    if (digitalRead(inputPin) == HIGH)
    {
    ledValue = ! ledValue;
    digitalWrite(ledPin, ledValue);
    delay(500);
    }
    }

    • @Ge0graph
      @Ge0graph Před 7 lety

      Как раз его код учитывает всё, в отличие от твоего. На твоём коде при удержании кнопки нажатой лампочка будет постоянно включаться/выключаться.

    • @alexandrneshev7334
      @alexandrneshev7334 Před 7 lety

      Не знаю что учитывает код Джереми но явно не все. Точь в точь повторенный пример с кнопкой явно показывает что его код учитывает не все. Та же проблема что и у вас выше в комменте. Нажал кнопку при задержке в 1000 милисек. светодиод горит снова, отпускание он тухнет и снова горит. Думал может я чего гоню. Но результат на лицо, у него в коде где то есть проблема. А вот код от Никиты Варфоломеева как раз подошел и делает все то же что и на видео.

    • @andrewsaharov4508
      @andrewsaharov4508 Před 7 lety

      Geo graph, учи матчасть. Элементарно, пауза нужна, что-бы успеть отжать кнопку. Если ты ее не отжимаешь за 500 мс, то на входе остается +5V и условие срабатывает. Если отжимаешь, то на входе опять LOW и условие пропускается.
      Речь шла о вкл/вкл кнопки, а не о работе программы при удержании кнопки. Мой кусок кода делает это. Напиши свой лучший код.

    • @Ge0graph
      @Ge0graph Před 7 lety

      Andrew Saharov у тебя с самого начала неверное мышление, ты когда-нибудь видел заводское рабочее устройство, на котором нужно "успеть отжать" кнопку, иначе оно будет работать неверно? Твой код использует костыли

    • @andrewsaharov4508
      @andrewsaharov4508 Před 7 lety +2

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

  • @daykkin
    @daykkin Před 10 lety +19

    Новички не понимают...

    • @AmperkaRuOfficial
      @AmperkaRuOfficial  Před 10 lety

      Если есть вопросы, пишите в комментах, на форуме или в соц. сетях. Будем рады вам помочь!

    • @user-lb3wx5ku2b
      @user-lb3wx5ku2b Před 7 lety

      У меня так скейч и не запустился

  • @Hondrus01
    @Hondrus01 Před 12 lety

    Истину глаголите. Может быть я и полный нуб, но эту серию перескочил. Дебоунс, шмебоунс.

  • @Gameplayer55055
    @Gameplayer55055 Před 7 lety

    уже есть нано. 4 собрал и получился датчик, екранировал и все гуд

  • @vzo6951
    @vzo6951 Před 6 lety

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

  • @JAIL2K
    @JAIL2K Před 11 lety

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

  • @Proffiservices
    @Proffiservices Před 5 lety

    Подскажите как сделать, чтоб поднесли ключ - замок открылся, еще раз поднесли -= замок закрылся. Вот код:
    #include
    #include
    #include
    const byte saveKey = 2; // вход для кнопки обнуления
    const byte statusLed = 13;
    const byte doorPin = 3;
    OneWire ds(8);
    Servo servo;
    byte addr[8];
    byte allKey; // всего ключей
    // функция сверяет два адреса (два массива)
    boolean addrTest(byte addr1[8], byte addr2[8]){
    for(int i = 0; i < 8; i++) {
    if (addr1[i] != addr2[i]) return 0;
    }
    return 1;
    }
    void error(){
    while(1){
    digitalWrite(statusLed, !digitalRead(statusLed));
    delay(300);
    }
    }//
    boolean keyTest(){ // возвращает 1 если ключ есть в еепром
    byte addrTemp[8];
    for (int i = 0; i < allKey; i++){
    for(int y = 0; y < 8; y++) addrTemp[y] = EEPROM.read((i = 63) error(); // если места нет
    while (!ds.search(addr)) ds.reset_search(); // ждем ключ
    if ( OneWire::crc8( addr, 7) != addr[7]) error();
    if (keyTest()) error(); // если нашли ключ в еепром.
    for(int i = 0; i < 8; i++) EEPROM.write((allKey

  • @georgybulgakov358
    @georgybulgakov358 Před 10 lety

    вскармливать значение))

  • @bubuino
    @bubuino Před 5 lety

    или вот такое на управление 1 светодиодом без дребезга на 2 кнопках :
    int switchPin=8;
    int switchPin1=7;
    int ledPin=12;
    boolean lastButton = LOW; // последнее состояние кнопки
    boolean lastButton1 = LOW; // последнее состояние кнопки
    boolean currentButton = LOW; // текущее состояние кнопки
    boolean currentButton1 = LOW; // текущее состояние кнопки
    int ledLevel = 100; // яркость от 0 до 255 уровня
    void setup()
    {
    pinMode(switchPin, INPUT); // пин подачи для управления св.диода plus
    pinMode(switchPin1, INPUT); // пин подачи для управления св.диода minus
    pinMode(ledPin, OUTPUT); // выход на св.диод
    }
    boolean debounce(boolean last)
    {
    boolean current = digitalRead(switchPin);
    if (last != current) // если текущее и предыдущее состояния кнопки не совпадают
    {
    current = digitalRead(switchPin); // прочтать из switchPin и присвоить current
    }
    delay(100); // задержка на дребезг контактов св.диода 0.1сек
    return current;
    }
    boolean debounce1(boolean last1)
    {
    boolean current1 = digitalRead(switchPin1);
    if (last1 != current1) // если текущее и предыдущее состояния кнопки не совпадают
    {
    current1 = digitalRead(switchPin1); // прочтать из switchPin1 и присвоить current1
    }
    delay(100); // задержка на дребезг контактов св.диода 0.1сек
    return current1;
    }
    void loop()
    {
    currentButton = debounce(lastButton);
    if (lastButton == LOW && currentButton == HIGH)
    {
    ledLevel = ledLevel + 25; // добавить к яркости 25 единиц
    }
    lastButton = currentButton;
    if (ledLevel > 255) ledLevel = 255;

    currentButton1 = debounce1(lastButton1);
    if (lastButton1 == LOW && currentButton1 == HIGH)
    {
    ledLevel = ledLevel - 25; // отнять яркость на 25 единиц
    }
    lastButton1 = currentButton1;
    if (ledLevel < 0 ) ledLevel = 0;
    analogWrite(ledPin, ledLevel);
    }

  • @user-bt1tg6dp1f
    @user-bt1tg6dp1f Před 2 lety

    Лол, на 3 минуте стал выбиваться из смысла, почитал коменты, понял, что всё нормально)

  • @vovcikvovcik8604
    @vovcikvovcik8604 Před 10 lety

    Здравствуйте
    Скажите,нельзя ли открыть список всех доступных аргументов при программировании?
    Ну хотя бы по первой букве ,если вы понимаете о чем я)

    • @AmperkaRuOfficial
      @AmperkaRuOfficial  Před 10 lety

      Их можно найти здесь: arduino.cc/en/Reference/HomePage

    • @iCoteg
      @iCoteg Před 10 lety +1

      ставьте sublime text + stino и будет вам счастье

  • @timiusis
    @timiusis Před 9 lety

    Народ подскажите как можно сделать так, чтобы при ШИМе после достижения 255 светодиод начал также постепенно падать до 0.

    • @Shama_Abd
      @Shama_Abd Před 9 lety

      timiusis если значениеЯроксти = 255 то значениеЯркости = значениеЯркости - 51; как то так. но нужно еще написать что делать когда значение = 0.

    • @RashadFaridov
      @RashadFaridov Před 8 lety +1

      +timiusis
      int switchPin = 8;
      int ledPin = 11;
      boolean lastButton = LOW;
      boolean currentButton = LOW;
      int ledLevel = 0;
      int ledShift = 51;
      void setup()
      {
      pinMode(switchPin, INPUT);
      pinMode(ledPin, OUTPUT);
      }
      boolean debounce(boolean last)
      {
      boolean current = digitalRead(switchPin);
      if(last != current)
      {
      delay(5);
      current = digitalRead(switchPin);
      }
      return current;
      }
      void loop()
      {
      currentButton = debounce(lastButton);
      if(lastButton == LOW && currentButton == HIGH)
      {
      ledLevel = ledLevel + ledShift;
      if(ledLevel > 255-51 || ledLevel

  • @user-is1uk1tx2o
    @user-is1uk1tx2o Před 8 lety

    почему при подключении к 13 пину не использовали резистор?

    • @user-mk3tm1cc4y
      @user-mk3tm1cc4y Před 8 lety

      На этом пине уже есть резистор. И к нему подключен светодиод, который расположен на самой плате

  • @vitalie82
    @vitalie82 Před 10 lety

    Rebeata u menea choto ne rabotaet kak nado. Posle zagruzki sketcha Geremi u menea diod postoianno migaet. poproboval s sketchom Mylbor i toje samoe ne mogu poneat v chom problema. Help !!!!!

  • @AmperkaRuOfficial
    @AmperkaRuOfficial  Před 12 lety

    Потому что таймер для PWM восьмибитный как и сам микроконтроллер. 2^8 = 256

  • @user-zr4tm8qm2f
    @user-zr4tm8qm2f Před 8 lety

    чего не написать delay(100)?

  • @CanchezAK
    @CanchezAK Před 5 lety

    Действительно, не очень понятно, но если подумать, то всё становится очевидным. Хотя больше предпочитаю true original AtMega.

  • @user-xi7qi8kp8n
    @user-xi7qi8kp8n Před 6 lety

    int switchPin = 9;
    int ledPin = 13;
    //булины могут принимать не только true и false, а также и 1 или 0, LOW или HIGH
    boolean lastButton = LOW;
    boolean ledOn = LOW;
    void setup() {
    pinMode(switchPin, INPUT);
    pinMode(ledPin, OUTPUT);
    }
    void loop() {
    //вот тут иф'ы; когда нажал
    if (digitalRead(switchPin) == HIGH && lastButton == LOW)
    {
    ledOn = !ledOn;
    lastButton = HIGH;
    delay(100);
    }
    else
    {
    lastButton = !digitalRead(ledOn);
    delay(100);
    }
    digitalWrite(ledPin, ledOn);
    }

  • @Lord_Randoma
    @Lord_Randoma Před 6 lety

    ребята чо делать , выбивает вот такую фразу:
    exit status 1
    redefinition of 'void setup()'
    на скетч из этого видео

    • @AmperkaRuOfficial
      @AmperkaRuOfficial  Před 6 lety

      Обратится в техподдержку - amperka.ru/page/contacts

  • @geek__3743
    @geek__3743 Před 6 lety

    Arduino можно на C# программировать?

    • @abandoned7501
      @abandoned7501 Před 6 lety

      нет

    • @LunarNomad
      @LunarNomad Před 6 lety

      Можно, гуглим arduino c#. Вот ссылка еще: forum.amperka.ru/threads/c-приложения-для-управления-arduino-из-под-windows.13708/

  • @igor98588
    @igor98588 Před 7 lety

    не понимаю всё повторил несколько раз всё равно пишет ошибку
    exit status 1
    'current' was not declared in this scope
    в чём дело?

    • @user-uq7ri1pz2c
      @user-uq7ri1pz2c Před 7 lety

      это значит что...
      current was not declare in this scope
      переменной current у тебя нет.

    • @igor98588
      @igor98588 Před 7 lety

      и где её найти ?

    • @user-uq7ri1pz2c
      @user-uq7ri1pz2c Před 7 lety

      igor98588 так код свой посмотри.Ты не объявил переменную.

    • @igor98588
      @igor98588 Před 7 lety

      спасибо посмотрю

  • @DepechLyot
    @DepechLyot Před 7 lety

    boolean current = digitalRead(switchPin); Кто нибудь знает почему он присваивает значение булевой переменной значение 1 или 0? или я чего не понимаю, разве там не должно быть TRUE FALSE?

    • @user-qk7gt7ub5m
      @user-qk7gt7ub5m Před 7 lety

      boolean может быть как TRUE/FALSE, так и 1/0

    • @acosinwork
      @acosinwork Před 7 lety

      Егор Смирнов false это 0. Все что не 0 это true. В том числе и 1:-)

    • @DepechLyot
      @DepechLyot Před 7 lety

      Ага, спасибо! Я уже дошел))

  • @specialist_sol
    @specialist_sol Před 3 lety

    Если я все данные манипуляции произведу с ардуино нано я её не спалю!? т.о. подам питания 5 вальт от БП

  • @alanextar
    @alanextar Před 7 lety

    что такое boolean last и boolean current? мы ведь не присвоили значение переменной last = HIGH или LOW

    • @slaitail215
      @slaitail215 Před 6 lety +1

      "boolean" это служебное слово обозначающее тип данных. Все что идет после "boolean" это имя переменной. Если мы не поставили после имени "= число " то значение по умолчанию присваивается " ноль " (либо ЛОЖ).
      ... А если поставить скобки после объявленной переменной то получится функция
      -Объявили переменную с именем last: boolean last;
      -Создали функцию с именем last: boolean last (...) { };
      PS. хотя я не программист и мог где-то ошибиться.

  • @DKirillov
    @DKirillov Před 7 lety +6

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

    • @ByteSmart
      @ByteSmart Před 6 lety +1

      Ну и как успехи спустя 7 месяцев?

  • @dukemenshikov
    @dukemenshikov Před 7 lety

    Чувак по сложному пути пошел!Нужно было в конце цикла IF,перед else поставить задержку delay(400).Она бы все эти дребезжания отфильтровала

    • @Vasili_Pupkin
      @Vasili_Pupkin Před 7 lety

      Александр Меньшиков
      if это не цикл а условный оператор🙈

    • @slaitail215
      @slaitail215 Před 6 lety +1

      Ставить задержку в обще нельзя. Поскольку это останавливает весь микроконтроллер. И в случаи если будет еще cигнал или информация на порт, то процессор ничего не зафиксирует. Этот код нужно писать не через delay(), а через millis()

  • @kalichdemyan
    @kalichdemyan Před 9 lety

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

    • @AmperkaRuOfficial
      @AmperkaRuOfficial  Před 9 lety +2

      Динар Гарипов arduino.ru/Reference здесь можете глянуть

    • @user-nb5xw5tr5g
      @user-nb5xw5tr5g Před 6 lety

      Дальше этого цикла программа не пройдет. А если нужно еще кучу штук подключить?

  • @clydewarrior2255
    @clydewarrior2255 Před 6 lety

    Зачем он пишет код стабилизации в setup, это же выполняется единожды, одноразовая стабилизация или что???

  • @scrypto
    @scrypto Před 9 lety +2

    7:00 *Судя по всему 255 не является ограничением, то есть является, но для светодиода все, что больше 255 = 255. Иначе такой вид проверки выдал бы ошибку переполнения. А такую проверку нужно было поставить по логике в первом условии*
    if (lastButton == LOW && currentButton == HIGH)
    {
    if(ledLevel >255) ledLevel=0;
    ledLevel+=51;
    }
    Или я чего-то не допонимаю, ни разу не кодил под адруино, только собираюсь.

    • @evtyshenkosemen
      @evtyshenkosemen Před 9 lety

      comPlushki Смотри, мы на самом деле сначала проверяем больше ли число, чем 255. Если нет, то передаем его функции. Иначе передаем 0. Ты прав. Если бы мы передали функции число > 255 это вызвало бы ошибку.

    • @vladimirbusarev2071
      @vladimirbusarev2071 Před 9 lety +1

      comPlushki 255 ты получаешь только после инкремента в цикле. начальное значение = 0. то есть 0 51 102 153 204 255, потом идет проверка, если последний инкремент дал больше 255 то мы скидываем в ноль. и в функцию на следующем шаге влетает ноль, то есть вместо переполнения мы даем диоду ноль. 255 это ограничение для функции write. Саму переменную типа инт мы можем увеличивать еще довольно долго. А где мы будем делать проверку , в данном случае не важно, главное чтоб перед тем как подать сигнал с ноги контроллера.

    • @HolyMasster
      @HolyMasster Před 8 lety

      +comPlushki мне вот ещё интересно, а чего просто ">", а не ">=". Мы же если 5 раз прибавляем к 0 51 вроде 255 получаем.

    • @AnatoliyLitinskiy
      @AnatoliyLitinskiy Před 8 lety

      +comPlushki Выходит Вы не получите состояние, когда кнопка выключена.

    • @MrCOCOK
      @MrCOCOK Před 8 lety +1

      +comPlushki Тут на самом деле не важна проверка текущей яркости светодиода. Объясню почему:
      Переменная яркости светодиода имеет тип int - это целочисленный тип данных размером в 4 байта (32 бита). Если мы передаем функции analogWrite переменную типа int и при этом компилятор не ругается (т. е. не выдается ошибка во время компиляции программы), то никаких ошибок быть не может и не нужно проверять величину переменной яркости светодиода. И даже обнулять переменную не нужно, т. к. если ШИМ вывода микроконтроллера может принимать значения от 0 до 255, значит регистр микроконтроллера, который отвечает за ШИМ, является однобайтовым, т. е. в него могут "влезть" значения не более байта (в десятичной от 0 до 255 или в шестнадцатеричной от 00 до FF). Можно сделать таблицу, в которой будет видно, что первый байт 32-битной переменной будет обнуляться "самостоятельно":
      00 00 00 00 = 0
      00 00 00 33 = 51
      ...
      00 00 00 FF = 255
      00 00 01 00 = 256 (и 0 для первого байта!)
      ...
      FF FF FF FF = -1 (или 4292967295 для беззнакового числа, или 255 для первого байта)
      00 00 00 00 = 0
      Как видно, первый байт всегда будет обнуляться при переполнении, если не берется во внимание остальные три байта 32-битной переменной.

  • @user-pm8uy5pb3c
    @user-pm8uy5pb3c Před 7 lety

    есть ли разница между boolean и bool?

    • @Vasili_Pupkin
      @Vasili_Pupkin Před 7 lety

      Vlad Cheater
      да есть!

    • @user-pm8uy5pb3c
      @user-pm8uy5pb3c Před 7 lety

      M V, какая?

    • @Vasili_Pupkin
      @Vasili_Pupkin Před 7 lety +2

      Vlad Cheater
      разница между bool и boolean - "ean"

    • @user-pm8uy5pb3c
      @user-pm8uy5pb3c Před 7 lety

      M V логично

    • @Vasili_Pupkin
      @Vasili_Pupkin Před 7 lety +1

      Vlad Cheater
      сорри. приколося я. не знаю есть ли разница. По функциям по крайней мере одно и тоже. может быть что boolean это врэппэр класс от bool? 🙈

  • @timegeimstimegeim7243
    @timegeimstimegeim7243 Před 10 lety

    у меня не сохраняются команды на него

  • @user-cl5ut1np4f
    @user-cl5ut1np4f Před 11 měsíci

    Педагог из Моиши, как пуля из, глины, на втором уроке навалил обрывки информации и надеется, что мы "поняли большую часть". Когда человек теряет понимание, ему становится не интересно. Другие серии получше, там меньше информации, и больше объяснения и примеров, и легче понять. Есть один парень который по неизвестным причинам забросил канал(Cool Easy Diy Electronic) и больше не обучает, но видео оставшиеся на канале, просто не имеют себе равных. Всё объяснение построено на аналогиях, и усваивается просто прекрасно.

  • @user-kq3nf1on8n
    @user-kq3nf1on8n Před 5 lety +2

    Логически понятно что он делает и хочет получить. А вот что и от куда и почему так называется и зачем туда пишется нихрена не понятно.

  • @RomanYuzhny
    @RomanYuzhny Před 11 lety +12

    Да этот заучка заграничный еще больше в тупик заведет чем научит начинающих. Гнать таких учителей нужно, их полные школы, потом дети уроки прогуливают т.к. не интересно и непонятно.
    А не проще и понятнее следующее
    int Led=13, Button=8;
    boolean val = LOW, old_val = LOW, state = LOW;
    void setup() {
    pinMode(Led, OUTPUT);
    pinMode(Button, INPUT);
    }
    void loop(){
    val = digitalRead(Button);
    delay(5);
    if ((val == HIGH)&&(old_val == LOW))
    {
    state = !state;
    }
    digitalWrite(Led, state);
    old_val = val;
    }

  • @user-qh3bo3ke8t
    @user-qh3bo3ke8t Před 4 lety

    Не могу разобраться,диод моргает сам по себе* на китайском * а кнопкой либо ВЫКЛ либо фиксируется в ВКЛ,как это работает

  • @829250
    @829250 Před 12 lety +1

    Почему 256 значений можно установить?

    • @abandoned7501
      @abandoned7501 Před 6 lety

      ограничение (8 бит)

    • @les12001
      @les12001 Před 5 lety

      @@abandoned7501 это получается что для любой регулировки чего либо доступно 255 значений?

  • @user-nr4ur1ts6e
    @user-nr4ur1ts6e Před 6 lety

    В схемотехнике я нуль. Что-то не пойму, он второй резистор тоже на 10кОм втыкает? У меня что-то сколько ни жму, все одним цветом. Но на 6-й раз обнуляется и перестает светиться. Потом тоже одинаково

    • @user-nr4ur1ts6e
      @user-nr4ur1ts6e Před 6 lety

      А, все, понял. analogWrite вместо digital не указал. Поставил на 10кОМ, работает, но бледно, правда

    • @user-nr4ur1ts6e
      @user-nr4ur1ts6e Před 6 lety

      Поменял на 220 Ом, нормально

  • @olegl7223
    @olegl7223 Před 6 lety

    Объясните кто. Эту логику нужно понять или просто запомнить её как данность в этом месте кода? %%%

  • @shkil4804
    @shkil4804 Před 7 lety

    int может принимать любое значение??
    Да что ты говоришь!

    • @user-vd2md9du5r
      @user-vd2md9du5r Před 5 lety

      Программы на Питоне одобряют!

  • @user-io1wo1nr1i
    @user-io1wo1nr1i Před 5 lety

    Все понятно, но усложнено сильно, зачему столько булов он использует?

  • @kostyalebedew6204
    @kostyalebedew6204 Před 8 lety +5

    boolean debounce( boolean last) ? что это за хрень не понятноя ????????????кто доступно сможет обьяснить?

    • @vint426
      @vint426 Před 8 lety

      Изучай азы программирования, никто тебе это не обьяснит в комментариях. Странно вообще браться за ардуино не зная основ программирования

    • @Superboy4ik
      @Superboy4ik Před 8 lety

      функция, "устраняющая" дребезг контактов

    • @OxoTHuK13
      @OxoTHuK13 Před 7 lety +2

      Я не силен в программировании на С, но рискну предположить, что данная строка означает следующее:
      - boolean - тип значения, которое должна вернуть функция (TRUE или FALSE)
      - debounce - имя функции, имя может быть любым, какое Вам угодно, главное, чтоб латинскими буквами и начиналось с буквы
      - last - имя переменной, которая передается внутрь функции при вызове этой самой функции, имя переменной так же может быть любым, как и имя функции.
      - boolean (который перед last) - тип переменной
      Если функция не должна возвращать ни чего, то перед названием функции пишем void, если что-то возвращает, то тип возвращаемого значения (int, boolean, или какой-то другой тип, которые используются в ардуино)
      Если унифицировать данную строку, то получится так:
      тип_возвращаемого_значения имя_функции(тип_переменной имя_переменной)

    • @gromitwoll6907
      @gromitwoll6907 Před 7 lety

      тут использован хереновый код. Если мы дополнительно добавим еще один светодиод в код, что бы он мигал, то программа перестает работать. Или любую другую задержку. Этот код сключительно только для мигания светодиода.

    • @kostyalebedew6204
      @kostyalebedew6204 Před 7 lety

      Alexandr Sergeevich спасибо большое.по началу тяжело бы ло понять логику самого алгоритма. Сильно запутана была

  • @ViktorYakunin
    @ViktorYakunin Před 8 lety +5

    как Sr Android Developer скажу что этот Jeremy не умеет писать код - вообще! я плохо знаю схемотехнику (такие уж преподы в универе были) но эта серия пока помогает. Без боли смотреть как он кодит очень трудно :(

    • @andrewsaharov4508
      @andrewsaharov4508 Před 8 lety

      Если у него для антидребезга столько кода уходит, страшно подумать что там дальше за программы будут)

  • @user-yv4hv6bx3l
    @user-yv4hv6bx3l Před 9 lety

    У меня светодиод не меняет цвет при нажатии кнопки, всегда горит одинаково. Хотя логика вроде правильная, так как когда нажимаешь 5 раз он гаснет. Кто то знает почему яркость не меняется?

    • @user-yv4hv6bx3l
      @user-yv4hv6bx3l Před 9 lety

      Коля Васин не правильно написал, не меняет яркость

    • @bedriychuk
      @bedriychuk Před 9 lety +2

      Коля Васин а от digital поміняв на analog в кінці відео, переглянь ...

  • @MrKonduktor
    @MrKonduktor Před 10 měsíci

    в сетапе не хватает чего то. всю дорогу списываю профессионал по списыванию перепесал точь в точь не компелирует

  • @mariusmars1424
    @mariusmars1424 Před 5 lety

    Да точно для новичков котории до того нечего незнали и непонимали а щас вобще откинеца. По прошче чуваки по прошче.

  • @lost_daemon
    @lost_daemon Před 9 lety +13

    Очень много булевых флагов. От половины можно было избавиться.

    • @user-ds2vz9ib5l
      @user-ds2vz9ib5l Před 5 lety +1

      Как бы стоит понимать, что эти инструкции для людей, которые вообще не понимают в программировании.

  • @delicieuxavecalexa
    @delicieuxavecalexa Před 7 lety

    Амперка, он говорит ДеБаунс, зачем вы переводите его ДеБаунс в свой ДеБоунс? :D Помогаете ему запутывать?

  • @user-hi2eq4rk8z
    @user-hi2eq4rk8z Před 5 lety +2

    0:12 чаво каво как !? Всмысле шо за !? Ааааааа мои мозги …

  • @eskovsergej
    @eskovsergej Před 6 lety

    Амперка, если вы сами будете делать обучение или уже сделали ОЧЕНЬ НУЖНО ЧТОБЫ СНАЧАЛА БЫЛ СДЕЛАН ГРАФИЧЕСКИЙ АЛГОРИТМ иначе голова пухнет от попытки понять, что пытается сделать лектор.

    • @AmperkaRuOfficial
      @AmperkaRuOfficial  Před 6 lety

      Мы только переводили эти уроки, поэтому менять видеоряд было несколько не в нашей компетенции. Но на будущее - учтём пожелание.

  • @lK1T
    @lK1T Před 11 lety

    ОЗУ на Ардуине не гигабайты же, а он использует INT для диапазона 0-255. Понимаю, что для такого маленького скетча это не чувствительно, но давайте придерживаться хорошего стиля. char, где же ты?

  • @Mega12asd
    @Mega12asd Před 7 lety

    Неужели нельзя просто поставить задержку?
    )

  • @AmperkaRuOfficial
    @AmperkaRuOfficial  Před 12 lety

    Да, ваш код поприятнее и почище выглядит

  • @alexeychuklin1354
    @alexeychuklin1354 Před 7 lety +3

    Новичкам это не осилить Не знаю почему видео считается для начинающих. В первом видео ни слова, о том что надо знать язык программирования.

  • @user-uc5cb7tv4z
    @user-uc5cb7tv4z Před 9 lety +21

    Дебаунсинг (устранение дребезга контактов) покрасивее дано в стандартных примерах. Смотрим ФАЙЛ - ПРИМЕРЫ - DIGITAL - DEBOUNCE
    Джереми может и прошарен как программер, но как Учитель никакой.

    • @ViktorBokov
      @ViktorBokov Před 9 lety +2

      Это точно, эту часть с дебонсом не понял =(

  • @user-gy5rf7vq4l
    @user-gy5rf7vq4l Před 2 lety

    Офигенно поспал

  • @rosenkranz.2787
    @rosenkranz.2787 Před 4 lety

    Джереми, похоже сам с собой разговаривает и самому себе объясняет. Он в теме. И ему то понятно и получилось.
    Ясно, что цель была потушить дребезг контакта кнопки и менять скважность сигнала ШИМ. Но вот как он это сделал, логика процесса, вообще не понятна. И слишком быстро. Что, куда, откуда, к чему, и почему?.. Короче, не совсем для начинающих.

  • @user-jf8ep3yd8o
    @user-jf8ep3yd8o Před 8 lety +7

    это для новичков? интересно. это какой у них там уровень образования. откуда я должен знать про булеан функции? и т п

    • @HolyMasster
      @HolyMasster Před 8 lety +2

      +Павел Иванов в школе про это говорят вроде. ну не про конкретно функции. А про булеву математику. Там както так вроде было. Да и если на информатике не в контру играли, то тоже мелькало. А если была контра, и Вам не было интересно про функции, может и сейчас Вам это не нужно?

    • @daniilbochkovoy3087
      @daniilbochkovoy3087 Před 8 lety +2

      +Павел Иванов мы сейчас проходим. 9 класс. Говорили, что boolean имеет 2 значения: 0 или 1. Ничего сложного

    • @ilyabredov6567
      @ilyabredov6567 Před 8 lety +2

      В принципе, информация действительно для новичков, и любой, знакомый с программированием "на уровне присваиваний", не встретит здесь ничего заумного. Но выцепить логику хода мыслей автора из плотной речи очень сложно. Хотя это простительно - далеко не каждый автор с глубокими техническими познаниями имеет ещё и хорошую педагогическую подготовку. Хорошо, хоть такой есть. А уж что кодинг кривой - так улавливаем суть сами и кодим лучше! У Джона Мортона в книжке по AVR ошибки специально наставлены. "Чтоб карась не дремал". Так что напрягаем мозги и - в путь!

    • @user-uq7ri1pz2c
      @user-uq7ri1pz2c Před 7 lety

      Да херня это все.Там все понятно же.Код читаешь и все.
      Что вообще в arduino забыли люди которые не знают
      а) основ программирования
      б)основ схемотехники?

  • @gooomax
    @gooomax Před 11 lety

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

  • @bubuino
    @bubuino Před 5 lety

    delay(1000); // задержка на дребезг контактов св.диода 1сек - нельзя вносить в цикл

  • @nikkorolkov
    @nikkorolkov Před 8 lety

    кому интересно :
    github.com/sciguy14/Exploring-Arduino?files=1
    на гитхабе есть код

  • @vladimirsukhorukov9717

    Да... Тяжелый случай. Реально, чем так учиться, то лучше пива выпить. Алекс Гивер намного понятнее всё дает.

  • @benedictopacifico3983
    @benedictopacifico3983 Před 11 lety

    Ну, почему абсурд? Достаточно всего лишь добавить одну строчку с этим самым недостающим повторным считыванием и приведённый Романом код станет вполне работоспособным.
    Я вот тоже сижу и пытаюсь понять логику Джереми. Почему он написал код именно так, а не иначе.. Может потому что он мыслит, как электрик, а не программист..

  • @736939
    @736939 Před 7 lety

    ledlevel = (ledlevel + 51) % 255; // так лучше !

  • @abandoned7501
    @abandoned7501 Před 6 lety

    с кодом все понятно а вот в схеме я ничерта не понял.

    • @AmperkaRuOfficial
      @AmperkaRuOfficial  Před 6 lety

      А что имеенно осталось непонятным?

  • @maximus43r
    @maximus43r Před 9 lety

    Друзья, я школьник в этом деле, не ругайте громко. Прошу помочь разобраться в этом коде:
    boolean debounce(boolean last)
    {
    boolean current = digitalRead(switchPin);
    if (last != current)
    {
    delay(5);
    current = digitalRead(switchPin);
    }
    Он берет буля от debounce, которая внутри функции получает значение от last. Ниже идет сравнение last со значением на кнопке. Но мне не понятно, что на данный момент находится в last. Он ее определил, но нигде не указал, какое значение она имеет (low или hight). Или под last подразумевается lastButton? Спасибо

    • @AcidByte84
      @AcidByte84 Před 9 lety +4

      Максим Рыболовлев
      На самом деле если ты не разбираешься, что происходит в этих строчках, я бы посоветовал заняться программированием хотя бы на начинающем уровне пусть даже на Turbo Pascal. Потому что это только самое начало для Arduino и дальше будет только сложнее.
      Ну а вообще я тебе попробую объяснить, здесь создается функция, которая должна возвращать логическое значение (истина или ложь) после своего выполнения. Для этого вначале перед названием функции debounce у тебя стоит boolean, дальше в скобках у тебя говорится, что передается внутрь функции (boolean last). Т.е. если ты дальше в программе будешь вызывать эту функцию по имени, ты должен будешь в скобках передать логическую переменную, а внутри функции она будет называться last. Вот отсюда у тебя и берется last внутри функции.
      Переменная current как раз возвращает значение. Т.е. строка current = digitalRead(switchPin); Говорит о том, что он получил логическое значение от кнопки нажата она сейчас или отжата.
      Сама функция вызывается через имя, т.е. дальше по коду в строке
      currentButton = debounce(lastButton);
      Поскольку мы передаем в функцию переменную lastButton, то она внутри функции превращается в переменную last. А так как функция возвращает значение через переменную current, то это значение сохраняется currentButton, потому что использовался знак присвоения = .
      ЗЫ Мне кажется я еще больше вас запутал, потому что такие вещи должны объясняться поэтапно :) , а не таким валом и с такой скоростью как это делает автор.

    • @maximus43r
      @maximus43r Před 9 lety +1

      нет не запутал, спасибо большое, более чем ясно)

    • @MrKlavich
      @MrKlavich Před 8 lety

      +Максим Рыболовлев Last это значение, которое ты передаешь , когда объявляешь функцию. В коде ты передаешь lastButton , и оно превращается в Last

    • @user-ic4qc6we5q
      @user-ic4qc6we5q Před 8 lety

      так lastButton передается в void loop после if (last !=current), а код вроде выполняется сверху вниз