Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

alex_dol
2016-02-25 23:20:55
NoName пише:

как по мне сдал ),  чур я за доброго!

А мне тогда кем быть?

VS, по п.3:

if (УСЛОВИЕ) КОМАНДА1
else КОМАНДА2

Если УСЛОВИЕ истинно (не 0) выполняется КОМАНДА1 иначе выполняется КОМАНДА2

Теперь ближе к теме - входы подтянуты на + питания, следовательно на них всегда лог. 1

Задание: разобраться с оператором !

NoName
2016-02-25 18:10:55

как по мне сдал ),  чур я за доброго!
в void setup()
servoMain.write(XXX);   // где xxx - начальная и необходимая позиция.

VS
2016-02-25 11:27:35
alex_dol пише:

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

Значится так, товарищи лекторы и экзаменаторы... smile

          -         По результатам:
Использовал скетч alex_dol. Только поменял углы: вместо -45,0,45 поставил 45,90,135. Я так догадываюсь, уно не очень хорошо поняло, что за минус. Сейчас все работает, как надо.   big_smile

          -         По разобраться:
1) Да, да, да "недо-кодер" совсем забыл обозначить входы big_smile
2) INPUT_PULLUP - использует внутренние стягивающие резисторы, посему кнопку садим на землю, а не на 5В.
3)!digitalRead(5,6,7)  - Не уверен, но думаю, что на входах постоянно единица, а при нажатии кнопки появляется ноль и тогда идет команда на серву.

          -         По новым вопросам:
Не понимаю, почему после перезагрузки уно, серво стартует (с нужного мне) центрального положения (90 градусов), а не ищет ноль.
Пункт 3) правильно понял?

Всем спасибо за участие. Буду рад любому замечанию.

PablitoMc
2016-02-24 20:49:55

Как кнопки подключены к контроллеру?

NoName
2016-02-24 18:25:04

а мы оценку поставим? )))
а если не сдаст то пусть тащит коньяк?, будем обучать? )

alex_dol
2016-02-24 18:04:52

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

#include "Servo.h"
Servo servoMain; // Объект Servo

void setup()
{
  servoMain.attach(12); // Servo присоединен к 12 выводу
  pinMode(5, INPUT_PULLUP);
  pinMode(6, INPUT_PULLUP);
  pinMode(7, INPUT_PULLUP);
}
void loop()
{
  if (!digitalRead(5)) // Условие 1-й кнопки
  {
    servoMain.write(-45);  // Повернуть серво влево на 45 градусов
  }
  if (!digitalRead(6)) // Условие 2-й кнопки
  {
    servoMain.write(0);  // Повернуть серво влево на 45 градусов
  }
  if (!digitalRead(7)) // Условие 3-й кнопки
  {
    servoMain.write(45);  // Повернуть серво влево на 45 градусов
  }
}
NoName
2016-02-24 17:22:07

alex_dol, а как поняли что нет подтяжки на землю?
а разве не нужно указывать что  5, 6 и 7 входы?
или по умолчанию все ноги на вход настроены?

alex_dol
2016-02-24 17:10:06

При текущем скетче надо не кнопки через 10кОм посадить на землю, а на выводы 5, 6 и 7 и землю вцепить эти 10кОм. А кнопки вцепить на +5В.

VS
2016-02-24 16:49:14

Народ взгляните, пожалуйста, на скетч и скажите, что здесь не так (или скажите как надо).
Задача стоит такая: 3 кнопки, при нажатии на "1" - серво поворачивается на 45 градусов влево и остается до следующей команды, при нажатии "2" - становится в центральное положение, "3" - 45 градусов вправо. Что-то вроде руля.

#include "Servo.h"
Servo servoMain; // Объект Servo

void setup()
{
servoMain.attach(12); // Servo присоединен к 12 выводу
} 
void loop()
{
 if(digitalRead(5)==HIGH) // Условие 1-й кнопки
  {
   servoMain.write(-45);  // Повернуть серво влево на 45 градусов
  }
 if(digitalRead(6)==HIGH) // Условие 2-й кнопки
  {
   servoMain.write(0);  // Повернуть серво влево на 45 градусов
  }
  if(digitalRead(7)==HIGH) // Условие 3-й кнопки
  {
   servoMain.write(45);  // Повернуть серво влево на 45 градусов
  }
}

Я залил этот т.с. "код", а в результате серво бесчинствует и крутиться куда хочет или не реагирует на нажатие кнопки.
Кнопки посадил через 10кОм резисторы на землю.

Заранее спасибо.

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