Bună ziua, dragi cititori ai site-ului nostru. Astăzi, vom învăța cum să controlam unghiul de rotație al servomotorului cu distanța de la distanța de la distanță la obiect. De asemenea, vom lua în considerare o conexiune alternativă a elementelor folosind Arduino SensorShield. Acest șablon este utilizat pentru a vă ajuta la economisirea locurilor de muncă. Dacă aveți nevoie să conectați un număr mare de senzori, atunci această placă este pentru dvs.! Pe site-ul nostru există lecții în care am analizat modul de conectare corectă a servomotorului și a aparatului de căutare la Arduino. Astăzi vom examina mai îndeaproape Sensorshield și vom învăța beneficiile folosirii acestui shild.
Arduino Sensorshield Specificații
Cel mai mare avantaj al Schild este că puteți conecta un număr foarte mare de senzori cu cel mai convenabil și, în același timp, care ocupă un spațiu mic posibil pe Arduino. Schild Conectarea Arduino pentru a juca într-un mod standard, și anume, toate contactele suprapuse pe placa de microcontroler, ceea ce face hibrid, care va fi numit - „sandwich“.
Ecranul poate fi utilizat pentru a conecta următoarele dispozitive
- Card SD
- 32 servo controler
- RB URF pentru senzorii cu ultrasunete
- 12864 Interfață serială și paralelă LCD
- APC220 wireless RF
- Bluetooth
- I2C
Mai jos este o schemă de pinout a Sensorshield, vă va ajuta să înțelegeți pinii de care aveți nevoie pentru a conecta un senzor.
Componente necesare pentru conectare
Pentru funcționarea completă a mini-proiectului nostru, avem nevoie de următoarele dispozitive:
Toate aceste articole pot fi achiziționate la un preț scăzut și cu o calitate înaltă în magazinul online SmartElements.
Pentru mai multă comoditate, puteți face clic pe numele din lista de mai sus pentru a merge la achiziționarea bunurilor.
După ce ați pregătit toate componentele necesare pentru conectare, puteți merge la conexiune. Mai întâi, să ne uităm la schema de conectare pentru mini-proiectul nostru.
Diagrama conexiunii
După cum puteți vedea, schema de conectare este foarte simplă și nu necesită explicații suplimentare. Ca întotdeauna, faceți conexiunea foarte atent și cu atenție, deoarece depinde de durata dispozitivelor.
Sper să vă conectați dispozitivele pe care le aveți, iar acum vom trece la cea mai importantă etapă - programarea Arduino.
Schiță pentru controlul unghiului de rotație al servomotorului
#include
#define coef 5
#define min_zone 6
#define max_zone 44
#define Trig 5
#define Echo 6
# definește servoPin 11
Servo myservo;
void setup () <
pinMode (Trig, OUTPUT); // inițiați ca ieșire
pinMode (Echo, INPUT); // Inițiați ca intrare
myservo.attach (servoPin);
myservo.write (0);
>
nesemnate int imp impulsTime = 0;
nesemnate int distance_sm = 0;
buclă voidă () <
digitalWrite (Trig, HIGH); / * Oferim un impuls pentru intrarea metrului gama trig * /
întârziereMicrosecunde (10); // egal cu 10 microsecunde
digitalWrite (Trig, LOW); // Dezactivați
impulseTime = pulseIn (Echo, HIGH); // Măsurați lungimea impulsului
distance_sm = impulseTime / 58; // Recalculați în centimetri
dacă (distance_sm> = min_zone distance_sm <= max_zone)
// dacă lungimea măsurată este mai mare de 4 cm și mai mică de 22 cm
<
myservo.write (coef * (distanță_sm - min_zone));
// rotiți servomotorul la valoarea: 10 * (lungime măsurată - 4cm)
>
altfel dacă (distance_sm
<
myservo.write (0);
>
altfel // diferit
<
myservo.write (180); // servo în poziție 180 de grade
>
întârziere (100); / * așteaptă 0,1 secunde * /
>
Dezvăluirea schiței
Ei bine, e timpul să facem o schiță. Nu voi explica momentele simple, dar voi încerca să vă spun despre secțiuni interesante ale codului.
-------------- 1 parte din cod --------------
dacă (distance_sm> = min_zone distance_sm <= max_zone)
// dacă lungimea măsurată este mai mare de 4 cm și mai mică de 22 cm
<
myservo.write (coef * (distanță_sm - min_zone));
// rotiți servomotorul la valoarea: 10 * (lungime măsurată - 4cm)
>
-------------- 2 părți din cod --------------
altfel dacă (distance_sm
<
myservo.write (0);
>
altfel // diferit
<
myservo.write (180); // servo în poziție 180 de grade
>
Luați în considerare cea mai interesantă secțiune a schiței, care este responsabilă de activitatea proiectului. Să împărțim această parte a codului în două părți, pe care le puteți vedea mai sus. Să considerăm fiecare parte separat.
1 din codul după cum vedeți, alcătuiesc prima parte a codului este o acțiune care se numește condiție. Specificăm condiția în care sunt executate anumite comenzi. Sensul acestei comenzi este după cum urmează: în cazul în care distanța se măsoară contorul la distanță, mai mare sau egală cu valoarea minimă (valoarea minimă am cerut la începutul schiță) și mai mică sau egală cu valoarea maximă (valoarea maximă, am subliniat de asemenea, la începutul schiței), apoi porniți servo pe colț se calculează cu formula (10 * (măsurată de lungime - valoarea minimă)).
A doua parte a codului continuă prima parte. În caz contrar (dacă valoarea nu este în contactul interval dat), în cazul în care lungimea măsurată este mai mică decât valoarea minimă senzorului, servo este setat la un unghi de rotație de 0 grade. In caz contrar servo este setat la unghiul maxim de rotire de 180 de grade.
Adică, am indicat pentru servo toate cazurile posibile de funcționare: starea de funcționare, poziția servo cu un unghi de 0 grade și într-o poziție cu 180 de grade