Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
V tomto pokynu vytvoříme projekt, který bude ovládat Micro-Servo pomocí klávesnice, na které bude spuštěno Arduino Uno.
Použité materiály:
Arduino Uno
Prkénko
Klávesnice 4x4
Micro-servo
Krok 1: Připojte klávesnici
Úplně první myšlenka, kterou musíte udělat, je připojit napájecí lištu a uzemňovací lištu na váš prkénko z vašeho Arduina
- Připojte kolík 5V k napájecí liště (červená)
- Připojte zemnicí kolík (GND) k uzemňovací liště (modrá)
Nyní, když má prkénko napájení a je uzemněno, můžeme začít zapojovat naše komponenty.
Zapojení klávesnice je snadné, ale musíte si všimnout kolíků na klávesnici a arduino. Bude se nám to hodit, když obrátíme pozornost k našemu kódu.
Při používání vodičů nezapomeňte začít vlevo!
- První pin jde na 13
- Druhý pin jde na 12
- Třetí pin jde na 11
- Čtvrtý pin jde na 10
- Pátý kolík k 9
- Šestý pin na 8
- Sedmý pin na 7
- Osmý kolík k 6
Při zapojování klávesnice mějte digitální pwm pin otevřený. Budeme to potřebovat pro mikro-servo
Než se dostaneme ke kódu, ujistěte se, že jste nainstalovali knihovnu klávesnic. Najdete ho v náčrtu, pak na kartě skica, včetně knihovny. Bez něj nebudete moci používat klávesnici.
Nyní se podívejme na kód a ujistěte se, že klávesnice funguje a poskytuje hodnoty, které obsluhuje
Rychlé poznámky: Ujistěte se, že máte příkaz if pro kontrolu klávesnice, jinak nebude fungovat. Dávejte si také pozor na zpoždění, budou si hrát s tlačítky registrovanými z klávesnice
#zahrnout
konstantní bajtové řádky = 4; // čtyři řádky, protože klávesnice je plná
sloupce const byte = 4; // čtyři sloupce, stejné jako výše
znaková tlačítka [řádky] [sloupce] = {
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C '}, {'*',' 0 ','#',' D '}};
bajtový řádekP [řádky] = {13, 12, 11, 10}; // řádkové piny klávesnice
bajtové sloupceP [sloupce] = {9, 8, 7, 6}; // piny sloupců klávesnice
Klávesnice = Klávesnice (makeKeymap (tlačítka), řádek P, sloupce P, řádky, sloupce); // vytvoření klávesnice
neplatné nastavení () {
Serial.begin (9600); }
prázdná smyčka () {
char buttonPressed = pad.getKey (); // získejte znak z klávesnice, pokud (buttonPressed) // ukáže, jaké tlačítko bylo stisknuto na klávesnici {Serial.println (buttonPressed); }}
Krok 2: Přidejte Micro Servo
Nyní přidáme servomotor. Tenhle je opravdu snadné přidat do našeho aktuálního projektu, protože mikro server má pouze tři vodiče.
- Hnědý drát vede k uzemňovací liště na prkénku
- Červená jde na napájecí kolejnici
- Orange jde na Pin 3 na Arduinu. Pamatujte, že mikro server musí mít na Arduinu pin PWM. To je způsobeno servem využívajícím TIMER2
Nyní se jen ujistěte, že jsme mikro servo zapojili správně a že se pohybuje
#include #include "Servo.h"
konstantní bajtové řádky = 4; // čtyři řádky, protože klávesnice je plná
sloupce const byte = 4; // čtyři sloupce, stejné jako výše
znaková tlačítka [řádky] [sloupce] = {
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C '}, {'*',' 0 ','#',' D '}};
bajtový řádekP [řádky] = {13, 12, 11, 10}; // řádkové piny klávesnice
bajtové sloupceP [sloupce] = {9, 8, 7, 6}; // piny sloupců klávesnice
Klávesnice = Klávesnice (makeKeymap (tlačítka), řádek P, sloupce P, řádky, sloupce); // vytvoření klávesnice
Servo aktuální Servo; // vytvoření objektu serva pro ovládání serva
// Na většině desek lze vytvořit dvanáct objektů serva
int pos = 0; // proměnná pro uložení polohy serva
neplatné nastavení () {
Serial.begin (9600); currentServo.attach (3); // připojí servo na pinu 9 k objektu serva
}
prázdná smyčka () {
char buttonPressed = pad.getKey (); // získejte znak z klávesnice, pokud (buttonPressed) // ukáže, jaké tlačítko bylo stisknuto na klávesnici {Serial.println (buttonPressed); }
currentServo.write (95);
}
Krok 3: Upravte kód tak, aby používal klávesnici na servu
Víme, že upravíme náš kód tak, že když stiskneme konkrétní tlačítko na klávesnici, servo se přesune do určité polohy. Nejdříve důležitá věc. Poloha serva pro 0 byla divná. Protože jsem měl servo s nepřetržitým otáčením, kdykoli se přiblížilo k 0, servo se právě začalo točit. Číslo, které jsem vložil do kódu, bylo tak nízké, jak jsem jen mohl, aniž by k tomu došlo. Každopádně zde je můj konečný kód:
#include #include
konstantní řádky bajtů = 4; // čtyři řádky, protože klávesnice je plná
sloupce const byte = 4; // čtyři sloupce, stejné jako výše
znaková tlačítka [řádky] [sloupce] = {
{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', ' C '}, {'*',' 0 ','#',' D '}};
bajtový řádekP [řádky] = {13, 12, 11, 10}; // řádkové piny klávesnice
bajtové sloupceP [sloupce] = {9, 8, 7, 6}; // piny sloupců klávesnice
Klávesnice = Klávesnice (makeKeymap (tlačítka), řádek P, sloupce P, řádky, sloupce); // vytvoření klávesnice
Servo myServo; //
neplatné nastavení () {
Serial.begin (9600); myServo.attach (5); // připojí servo na pinu 9 k objektu serva}
prázdná smyčka () {
char key = pad.getKey (); // získejte znak z klávesnice if (key == '0') {myServo.write (11); Serial.println ("0"); zpoždění (15); } if (key == '1') {myServo.write (12); Serial.println ("1"); zpoždění (15); } if (key == '2') {myServo.write (24); Serial.println ("2"); zpoždění (15); } if (key == '3') {myServo.write (36); Serial.println ("3"); zpoždění (15); }
if (klíč == '4')
{myServo.write (48); Serial.println ("4"); zpoždění (15); }
if (klíč == '5')
{myServo.write (60); Serial.println ("5"); zpoždění (15); }
if (klíč == '6')
{myServo.write (72); Serial.println ("6"); zpoždění (15); }
if (klíč == '7')
{myServo.write (84); Serial.println ("7"); zpoždění (15); }
if (klíč == '8')
{myServo.write (96); Serial.println ("8"); zpoždění (15); }
if (klíč == '9')
{myServo.write (108); Serial.println ("9"); zpoždění (15); }
if (klíč == '*')
{myServo.write (120); Serial.println ("*"); zpoždění (15); }
if (klíč == '#')
{myServo.write (132); Serial.println ("#"); zpoždění (15); }
if (klíč == 'A')
{myServo.write (146); Serial.println ("A"); zpoždění (15); }
if (klíč == 'B')
{myServo.write (158); Serial.println ("B"); zpoždění (15); }
if (klíč == 'C')
{myServo.write (170); Serial.println ("C"); zpoždění (15); }
if (klíč == 'D')
{myServo.write (180); Serial.println ("D"); zpoždění (15); }}