Мазмуну:

Баскычтоп менен Servo Positoning: 3 кадам
Баскычтоп менен Servo Positoning: 3 кадам

Video: Баскычтоп менен Servo Positoning: 3 кадам

Video: Баскычтоп менен Servo Positoning: 3 кадам
Video: Замена кнопок джойстика на экскаваторе погрузчике VOLVO BL71B. 2024, Ноябрь
Anonim
Баскычтоп менен Servo Positoning
Баскычтоп менен Servo Positoning

Бул көрсөтмөдө биз Arduino Uno менен иштеген клавиатура менен микросервону башкара турган долбоор түзөбүз.

Колдонулган материалдар:

Arduino Uno

Breadboard

4x4 баскычтобу

Micro-Servo

1 -кадам: Баскычтопту зымга сайыңыз

Баскычтопту зымга сайыңыз
Баскычтопту зымга сайыңыз
Баскычтопту зымга сайыңыз
Баскычтопту зымга сайыңыз

Эң биринчи сиз ойлонушуңуз керек, электр рельсин жана жерге туташтыруучу темирди Arduino аркылуу нан тактаңызга зым менен жабуу

  1. 5V пинди электр рельсине туташтырыңыз (кызыл)
  2. Жерге туташтыргычты (GND) жерге туташтыруучу темирге (көк) туташтыруу

Эми панелдин күчү бар жана негизделген, биз компоненттерибизди зым менен байланыштыра баштайбыз.

Баскычтопту туташтыруу оңой, бирок клавиатура менен ардуинодогу казыктарды эске алуу керек. Бул биздин кодго көңүл бурганыбызда пайдалуу болот.

Зымдарды колдонууда сол тараптан баштоону унутпаңыз!

  • Биринчи пин 13кө жетет
  • Экинчи пин 12ге барат
  • Үчүнчү пин 11ге барат
  • Төртүнчү пин 10го барат
  • Бешинчи пин 9га чейин
  • Алтынчы пин 8ге
  • Жетинчи пин 7ге чейин
  • Сегизинчи пин 6га

Баскычтопту туташтырууда, санариптик pwm пинин ачык кармоону унутпаңыз. Бизге микросерво үчүн керек болот

Биз кодду алардан мурун, баскычтоп китепканасын орнотконуңузду текшериңиз. Бул сиздин эскизде, андан кийин эскиз табулатурасында, китепкананы табууга болот. Ансыз баскычтопту колдоно албайсыз.

Эми кодго кайрылып, баскычтоптун иштеп жатканына жана катышылган баалуулуктарды бергенине ишенели

Ыкчам эскертүүлөр: баскычтопту текшерүү үчүн if оператору бар экенине ишениңиз, антпесе ал иштебейт. Ошондой эле кечигүүдөн этият болуңуз, алар баскычтоптон катталган баскычтар менен чаташат

#кошуу

const байт катарлары = 4; // тергич толук болгондуктан төрт катар

const байт мамычалары = 4; // төрт мамыча, жогорудагыдай

char баскычтары [катарлар] [мамылар] = {

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

байт rowP [rows] = {13, 12, 11, 10}; // клавиатуранын сап казыктары

байт мамычаларыP [мамычалар] = {9, 8, 7, 6}; // баскычтоптун мамычасы

Баскычтоп аянты = Баскычтоп (makeKeymap (баскычтар), rowP, мамычаларP, катарлар, мамычалар); // клавиатура түзүү

жараксыз орнотуу () {

Serial.begin (9600); }

void loop () {

char buttonPressed = pad.getKey (); // эгерде (buttonPressed) // клавиатурада кайсы баскыч басылганын көрсөтсөңүз, charти клавиатурадан алыңыз {Serial.println (buttonPressed); }}

2 -кадам: Микро Серво кошуу

Микро Серво кошуу
Микро Серво кошуу
Микро Серво кошуу
Микро Серво кошуу

Эми серво моторун кошолу. Муну азыркы долбоорубузга кошуу оңой, анткени микро серверде үч зым гана бар.

  • Күрөң зым нандын үстүндөгү жерге туташтыруучу темирге барат
  • Кызыл күч темир жолуна барат
  • Orange Arduino боюнча 3 -пинге барат. Эсиңизде болсун, микро сервердин Arduinoдо PWM пини болушу керек. Бул TIMER2ди колдонгон сервого байланыштуу

Эми микро сервону туура зымдаганыбызга жана ал жылып жатканына ынануу үчүн

#кошуу #кошуу "Servo.h"

const байт катарлары = 4; // тергич толук болгондуктан төрт катар

const байт мамычалары = 4; // төрт тилке, жогорудагыдай

char баскычтары [катарлар] [мамылар] = {

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

байт rowP [rows] = {13, 12, 11, 10}; // клавиатуранын сап казыктары

байт мамычаларыP [мамычалар] = {9, 8, 7, 6}; // баскычтоптун мамычасы

Баскычтоп аянты = Баскычтоп (makeKeymap (баскычтар), rowP, мамычаларP, катарлар, мамычалар); // клавиатура түзүү

Servo currentServo; // сервону көзөмөлдөө үчүн servo объектисин түзүү

// көпчүлүк такталарда он эки servo объект түзүлүшү мүмкүн

int pos = 0; // servo абалын сактоо үчүн өзгөрмө

жараксыз орнотуу () {

Serial.begin (9600); currentServo.attach (3); // серво объектисине пин 9дагы сервону бекитет

}

void loop () {

char buttonPressed = pad.getKey (); // эгерде (buttonPressed) // клавиатурада кайсы баскыч басылганын көрсөтсөңүз, charти клавиатурадан алыңыз {Serial.println (buttonPressed); }

currentServo.write (95);

}

3 -кадам: Серводо клавиатураны колдонуу үчүн кодду өзгөртүү

Белгилей кетчү нерсе, биз кодубузду өзгөртөбүз, ошондо клавиатуранын белгилүү бир баскычын басканда, servo белгилүү бир абалга өтөт. Биринчи кезекте маанилүү нерсе. 0 үчүн servo абалы кызыктай болду. Менде үзгүлтүксүз айлануу сервосу болгондуктан, ал 0гө жакындаганда, серво жаңы эле айлана баштады. Мен киргизген сан, андай болгон жок, мен бара алгандай эле аз болчу. Кандай болбосун, бул жерде менин акыркы кодум:

#кошуу #кошуу

const байт катарлары = 4; // тергич толук болгондуктан төрт катар

const байт мамычалары = 4; // төрт мамыча, жогорудагыдай

char баскычтары [катарлар] [мамылар] = {

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

байт rowP [rows] = {13, 12, 11, 10}; // клавиатуранын сап казыктары

байт мамычаларыP [мамычалар] = {9, 8, 7, 6}; // баскычтоптун мамычасы

Баскычтар тактасы = Баскычтоп (makeKeymap (баскычтар), rowP, мамычаларP, катарлар, мамылар); // клавиатура түзүү

Servo myServo; //

жараксыз орнотуу () {

Serial.begin (9600); myServo.attach (5); // servo объектиге пин 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); }

эгер (ачкыч == 'А')

{myServo.write (146); Serial.println ("A"); кечиктирүү (15); }

эгер (ачкыч == 'B')

{myServo.write (158); Serial.println ("B"); кечиктирүү (15); }

эгер (ачкыч == 'С')

{myServo.write (170); Serial.println ("C"); кечиктирүү (15); }

эгер (ачкыч == 'D')

{myServo.write (180); Serial.println ("D"); кечиктирүү (15); }}

Сунушталууда: