Ви не увійшли.
как по мне сдал ), чур я за доброго!
А мне тогда кем быть?
VS, по п.3:
if (УСЛОВИЕ) КОМАНДА1
else КОМАНДА2
Если УСЛОВИЕ истинно (не 0) выполняется КОМАНДА1 иначе выполняется КОМАНДА2
Теперь ближе к теме - входы подтянуты на + питания, следовательно на них всегда лог. 1
Задание: разобраться с оператором !
как по мне сдал ), чур я за доброго!
в void setup()
servoMain.write(XXX); // где xxx - начальная и необходимая позиция.
VS, предлагаю сделать так. Кнопки просто на землю, резисторы убрать. Вам задание разобраться в скетче и запостить его сюда с комментариями что и почему.
Значится так, товарищи лекторы и экзаменаторы...
- По результатам:
Использовал скетч alex_dol. Только поменял углы: вместо -45,0,45 поставил 45,90,135. Я так догадываюсь, уно не очень хорошо поняло, что за минус. Сейчас все работает, как надо.
- По разобраться:
1) Да, да, да "недо-кодер" совсем забыл обозначить входы
2) INPUT_PULLUP - использует внутренние стягивающие резисторы, посему кнопку садим на землю, а не на 5В.
3)!digitalRead(5,6,7) - Не уверен, но думаю, что на входах постоянно единица, а при нажатии кнопки появляется ноль и тогда идет команда на серву.
- По новым вопросам:
Не понимаю, почему после перезагрузки уно, серво стартует (с нужного мне) центрального положения (90 градусов), а не ищет ноль.
Пункт 3) правильно понял?
Всем спасибо за участие. Буду рад любому замечанию.
Как кнопки подключены к контроллеру?
а мы оценку поставим? )))
а если не сдаст то пусть тащит коньяк?, будем обучать? )
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 градусов
}
}
alex_dol, а как поняли что нет подтяжки на землю?
а разве не нужно указывать что 5, 6 и 7 входы?
или по умолчанию все ноги на вход настроены?
При текущем скетче надо не кнопки через 10кОм посадить на землю, а на выводы 5, 6 и 7 и землю вцепить эти 10кОм. А кнопки вцепить на +5В.
Народ взгляните, пожалуйста, на скетч и скажите, что здесь не так (или скажите как надо).
Задача стоит такая: 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кОм резисторы на землю.
Заранее спасибо.