Съдържание:

Серво позициониране с клавиатура: 3 стъпки
Серво позициониране с клавиатура: 3 стъпки

Видео: Серво позициониране с клавиатура: 3 стъпки

Видео: Серво позициониране с клавиатура: 3 стъпки
Видео: Control 32 Servo over Wi-Fi using ESP32 and PCA9685 via desktop or mobile phone V5 2024, Ноември
Anonim
Серво позициониране с клавиатура
Серво позициониране с клавиатура

В тази инструкция ще създаваме проект, който ще контролира Micro-Servo с клавиатура, работеща с Arduino Uno.

Използвани материали:

Arduino Uno

Платка

4x4 клавиатура

Микро-серво

Стъпка 1: Свържете клавиатурата

Свържете клавиатурата
Свържете клавиатурата
Свържете клавиатурата
Свържете клавиатурата

Първата мисъл, която трябва да направите, е да свържете захранващата шина и заземителната шина на вашата дъска от вашия Arduino

  1. Свържете 5V щифта към захранващата шина (червен)
  2. Свържете заземяващ щифт (GND) към заземителната шина (синя)

Сега, когато макетът има захранване и е заземен, можем да започнем да свързваме нашите компоненти.

Окабеляването на клавиатурата е лесно, но трябва да обърнете внимание на щифтовете на клавиатурата и arduino. Той ще бъде полезен, когато насочим вниманието си към нашия код.

Не забравяйте да започнете отляво, когато използвате кабелите си!

  • Първият пин отива на 13
  • Вторият пин отива на 12
  • Третият пин отива на 11
  • Четвърти пин отива на 10
  • Пети щифт към 9
  • Шести пин до 8
  • Седмия щифт до 7
  • Осми щифт до 6

Когато свързвате клавиатурата, не забравяйте да държите отворен дигитален pwm щифт. Ще ни е необходим за микро-серво

Преди да стигнем до кода, уверете се, че сте инсталирали библиотеката на клавиатурата. Тя може да бъде намерена във вашата скица, след това в раздел скица, включете библиотека. Няма да можете да използвате клавиатурата без нея.

Сега нека се обърнем към кода и се уверете, че клавиатурата работи и дава присъстващите стойности

Бързи бележки: Уверете се, че имате оператора if, за да проверите клавиатурата, в противен случай няма да работи. Внимавайте и със забавянията, те ще се забъркат с бутоните, регистрирани от клавиатурата

#включва

const байт редове = 4; // четири реда, тъй като клавиатурата е пълна

const байт колони = 4; // четири колони, същите като по -горе

бутони за символи [редове] [колони] = {

{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C '}, {'*',' 0 ','#',' D '}};

байт редP [редове] = {13, 12, 11, 10}; // ред щифтове на клавиатурата

байтови колониP [колони] = {9, 8, 7, 6}; // щифтове на колони на клавиатурата

Клавиатура = Клавиатура (makeKeymap (бутони), редP, колониP, редове, колони); // създаване на клавиатура

void setup () {

Serial.begin (9600); }

void loop () {

char buttonPressed = pad.getKey (); // получаваме символа от клавиатурата if (buttonPressed) // показва кой бутон е натиснат на клавиатурата {Serial.println (buttonPressed); }}

Стъпка 2: Добавете Micro Servo

Добавете Micro Servo
Добавете Micro Servo
Добавете Micro Servo
Добавете Micro Servo

Сега нека добавим серво мотора. Този е наистина лесен за добавяне към нашия настоящ проект, тъй като микро сървърът има само три проводника.

  • Кафявият проводник отива към заземителната шина на дъската
  • Червеното отива към Power rail
  • Orange отива до Pin 3 на Arduino. Не забравяйте, че микро сървърът трябва да има PWM щифт на Arduino. Това се дължи на серво, използващо TIMER2

Сега нека просто се уверим, че сме свързали микро сервото правилно и че се движи

#include #include "Servo.h"

const байт редове = 4; // четири реда, тъй като клавиатурата е пълна

const байт колони = 4; // четири колони, същите като по -горе

бутони за символи [редове] [колони] = {

{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C '}, {'*',' 0 ','#',' D '}};

байт редP [редове] = {13, 12, 11, 10}; // ред щифтове на клавиатурата

байтови колони P [колони] = {9, 8, 7, 6}; // щифтове на колони на клавиатурата

Клавиатура = Клавиатура (makeKeymap (бутони), редP, колониP, редове, колони); // създаване на клавиатура

Серво ток // създаване на серво обект за управление на серво

// дванадесет серво обекта могат да бъдат създадени на повечето дъски

int pos = 0; // променлива за съхраняване на позицията на серво

void setup () {

Serial.begin (9600); currentServo.attach (3); // прикрепя серво на щифт 9 към серво обекта

}

void loop () {

char buttonPressed = pad.getKey (); // получаваме символа от клавиатурата if (buttonPressed) // показва кой бутон е натиснат на клавиатурата {Serial.println (buttonPressed); }

currentServo.write (95);

}

Стъпка 3: Променете кода, за да използвате клавиатурата на Servo

Знайте, че ще променим кода си, така че когато натискаме определен бутон на клавиатурата, сервото се премества в определена позиция. Първо нещо важно. Серво позицията за 0 беше странна. Тъй като имах серво с непрекъснато въртене, когато се доближи до 0, сервото просто започна да се върти. Номерът, който сложих в кода, беше възможно най -нисък, без това да се случи. Както и да е, ето последния ми код:

#включи #включи

const байт редове = 4; // четири реда, тъй като клавиатурата е пълна

const байт колони = 4; // четири колони, същите като по -горе

бутони за символи [редове] [колони] = {

{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C '}, {'*',' 0 ','#',' D '}};

байт редP [редове] = {13, 12, 11, 10}; // ред щифтове на клавиатурата

байтови колониP [колони] = {9, 8, 7, 6}; // щифтове на колони на клавиатурата

Клавиатура = Клавиатура (makeKeymap (бутони), редP, колониP, редове, колони); // създаване на клавиатура

Серво myServo; //

void setup () {

Serial.begin (9600); myServo.attach (5); // прикрепя серво на щифт 9 към серво обекта}

void loop () {

char ключ = pad.getKey (); // получаваме символа от клавиатурата if (key == '0') {myServo.write (11); Serial.println ("0"); забавяне (15); } if (key == '1') {myServo.write (12); Serial.println ("1"); забавяне (15); } if (key == '2') {myServo.write (24); Serial.println ("2"); забавяне (15); } if (key == '3') {myServo.write (36); Serial.println ("3"); забавяне (15); }

ако (ключ == '4')

{myServo.write (48); Serial.println ("4"); забавяне (15); }

ако (ключ == '5')

{myServo.write (60); Serial.println ("5"); забавяне (15); }

ако (ключ == '6')

{myServo.write (72); Serial.println ("6"); забавяне (15); }

ако (ключ == '7')

{myServo.write (84); Serial.println ("7"); забавяне (15); }

ако (ключ == '8')

{myServo.write (96); Serial.println ("8"); забавяне (15); }

ако (ключ == '9')

{myServo.write (108); Serial.println ("9"); забавяне (15); }

ако (ключ == '*')

{myServo.write (120); Serial.println ("*"); забавяне (15); }

ако (ключ == '#')

{myServo.write (132); Serial.println ("#"); забавяне (15); }

ако (ключ == 'A')

{myServo.write (146); Serial.println ("A"); забавяне (15); }

ако (ключ == 'B')

{myServo.write (158); Serial.println ("B"); забавяне (15); }

ако (ключ == 'C')

{myServo.write (170); Serial.println ("C"); забавяне (15); }

ако (ключ == 'D')

{myServo.write (180); Serial.println ("D"); забавяне (15); }}

Препоръчано: