Სარჩევი:

რობოტული მანქანის თავიდან აცილება: 9 ნაბიჯი
რობოტული მანქანის თავიდან აცილება: 9 ნაბიჯი

ვიდეო: რობოტული მანქანის თავიდან აცილება: 9 ნაბიჯი

ვიდეო: რობოტული მანქანის თავიდან აცილება: 9 ნაბიჯი
ვიდეო: რა ხდება კანონიერი ქურდების საკნებში 2024, ივლისი
Anonim
დაბრკოლება რობოტული მანქანის თავიდან აცილებაში
დაბრკოლება რობოტული მანქანის თავიდან აცილებაში
დაბრკოლება რობოტული მანქანის თავიდან აცილებაში
დაბრკოლება რობოტული მანქანის თავიდან აცილებაში

როგორ ავაშენოთ დაბრკოლება რობოტის თავიდან აცილების მიზნით

ნაბიჯი 1: შავი ყუთი

შავი ყუთი
შავი ყუთი

პირველი ნაბიჯი მე გამოვიყენე შავი ყუთი, როგორც საფუძველი ჩემი რობოტისთვის.

ნაბიჯი 2: არდუინო

არდუინო
არდუინო

არდუინო არის მთელი სისტემის ტვინი და ჩვენი ძრავების ორკესტრირება

ნაბიჯი 3: Arduino– ს მიმაგრება Blackbox– ზე

Arduino– ს მიმაგრება Blackbox– ზე
Arduino– ს მიმაგრება Blackbox– ზე

არდუინო შავ ყუთს დავამატე ცხელი წებოს გამოყენებით

ნაბიჯი 4: ულტრაბგერითი სენსორი

ულტრაბგერითი სენსორი
ულტრაბგერითი სენსორი

რობოტის შესაქმნელად, რომელსაც შეუძლია დამოუკიდებლად გადაადგილება, ჩვენ გვჭირდება რაიმე სახის შეყვანა, სენსორი, რომელიც შეესაბამება ჩვენს მიზანს. ულტრაბგერითი სენსორი არის ინსტრუმენტი, რომელიც ზომავს მანძილს ობიექტამდე ულტრაბგერითი ხმოვანი ტალღების გამოყენებით. ულტრაბგერითი სენსორი იყენებს გადამყვანს ულტრაბგერითი იმპულსების გასაგზავნად და მისაღებად, რომლებიც ინფორმაციას გადასცემს ობიექტის სიახლოვეს

ნაბიჯი 5: სენსორის კავშირი არდუინოსთან

სენსორის კავშირი არდუინოსთან
სენსორის კავშირი არდუინოსთან
სენსორის კავშირი არდუინოსთან
სენსორის კავშირი არდუინოსთან

მე ვიყენებდი მავთულხლართებს, რათა შემესრულებინა კავშირი პურის დაფასა და არდუინოს შორის.

მიაქციეთ ყურადღება, რომ თქვენს პინგ სენსორს შეიძლება ჰქონდეს განსხვავებული ქინძისთავის განლაგება, მაგრამ მას უნდა ჰქონდეს ძაბვის პინი, გრუნტის პინი, ტრიგერი და ექოს პინი.

ნაბიჯი 6: საავტომობილო ფარი

საავტომობილო ფარი
საავტომობილო ფარი

Arduino დაფები ვერ აკონტროლებენ DC ძრავას საკუთარი ხელით, რადგან მათ მიერ წარმოქმნილი დენები ძალიან დაბალია. ამ პრობლემის გადასაჭრელად ჩვენ ვიყენებთ საავტომობილო ფარებს. საავტომობილო ფარს აქვს 2 არხი, რაც ორი DC ძრავის კონტროლის საშუალებას იძლევა, ან 1 ბიჯური ძრავი. … ამ ქინძისთავების მიმართვისას თქვენ შეგიძლიათ აირჩიოთ საავტომობილო არხი დასაწყებად, მიუთითოთ ძრავის მიმართულება (პოლარობა), დააყენოთ ძრავის სიჩქარე (PWM), გააჩეროთ და დაიწყოთ ძრავა და აკონტროლოთ თითოეული არხის მიმდინარე შთანთქმა

ნაბიჯი 7: დააკავშირეთ საავტომობილო ფარი არდუინოსთან

საავტომობილო ფარის დაკავშირება არდუინოსთან
საავტომობილო ფარის დაკავშირება არდუინოსთან

უბრალოდ მიამაგრეთ საავტომობილო ფარი არდუინოზე სენსორის მავთულებით გაჭედილი

ნაბიჯი 8: დაუკავშირეთ 4 ძრავა და ბატარეები ფარს

4 ძრავისა და ბატარეის ფარის დაკავშირება
4 ძრავისა და ბატარეის ფარის დაკავშირება

ყველა საავტომობილო ფარს აქვს (სულ მცირე) ორი არხი, ერთი ძრავებისთვის და ერთი ენერგიის წყაროსთვის, დააკავშირეთ ისინი ერთმანეთთან მიმართებაში

ნაბიჯი 9: დაპროგრამეთ რობოტი

გაუშვით ეს კოდი

#ჩართეთ #ჩართეთ

NewPing სონარი (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

AF_DCMotor motor1 (1, MOTOR12_1KHZ); AF_DCMotor motor2 (2, MOTOR12_1KHZ); AF_DCMotor motor3 (3, MOTOR34_1KHZ); AF_DCMotor motor4 (4, MOTOR34_1KHZ); სერვო მისერვო;

#განსაზღვრეთ TRIG_PIN A2 #განსაზღვრეთ ECHO_PIN A3 #განსაზღვრეთ MAX_DISTANCE 150 #განსაზღვრეთ MAX_SPEED 100 #განსაზღვრეთ MAX_SPEED_OFFSET 10

ბული მიდის წინ = ყალბი; int მანძილი = 80; int speedSet = 0;

void setup () {

myservo.attach (10); myservo.write (115); დაგვიანება (2000); მანძილი = readPing (); დაგვიანება (100); მანძილი = readPing (); დაგვიანება (100); მანძილი = readPing (); დაგვიანება (100); მანძილი = readPing (); დაგვიანება (100); }

void loop () {int distanceR = 0; int მანძილი L = 0; დაგვიანება (40); if (მანძილი <= 15) {moveStop (); დაგვიანება (50); moveBackward (); დაგვიანება (150); moveStop (); დაგვიანება (100); მანძილი R = lookRight (); დაგვიანება (100); მანძილი L = lookLeft (); დაგვიანება (100);

if (distanceR> = distanceL) {turnRight (); moveStop (); } else {turnLeft (); moveStop (); }} else {moveForward (); } მანძილი = readPing (); }

int lookRight () {myservo.write (50); დაგვიანება (250); int მანძილი = readPing (); დაგვიანება (50); myservo.write (100); დაბრუნების მანძილი; }

int lookLeft () {myservo.write (120); დაგვიანება (300); int მანძილი = readPing (); დაგვიანება (100); myservo.write (115); დაბრუნების მანძილი; დაგვიანება (100); }

int readPing () {დაგვიანებით (70); int cm = sonar.ping_cm (); თუ (სმ == 0) {სმ = 200; } დაბრუნება სმ; }

void moveStop () {motor1.run (გათავისუფლება); motor2.run (გათავისუფლება); motor3.run (გათავისუფლება); motor4.run (გათავისუფლება); } void moveForward () {

თუ (! goForward) {goForward = true; motor1.run (წინ); motor2.run (წინ); motor3.run (წინ); motor4.run (წინ); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); დაგვიანება (5); }}}

void moveBackward () {goForward = false; motor1.run (BACKWARD); motor2.run (BACKWARD); motor3. გაშვება (BACKWARD); motor4.run (BACKWARD); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); დაგვიანება (5); } void turnLeft () {motor1.run (BACKWARD); motor2.run (BACKWARD); motor3.run (წინ); motor4.run (წინ); დაგვიანება (500); motor1.run (წინ); motor2.run (წინ); motor3.run (წინ); motor4.run (წინ); }

void turnLeft () {motor1.run (BACKWARD); motor2.run (BACKWARD); motor3.run (წინ); motor4.run (წინ); დაგვიანება (500); motor1.run (წინ); motor2.run (წინ); motor3.run (წინ); motor4.run (წინ); }

გირჩევთ: