
Სარჩევი:
2025 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2025-01-23 14:50


ეს არის მარტივი პატარა Arduino და servo პროექტი, რომლის დასრულებას დაახლოებით ორი საათი სჭირდება. ის იყენებს სერვოს, რომ აწიოს ქილის თავსახურის ერთი ბოლო ისე, რომ ფოლადის ბურთი დატრიალდეს შიდა წრეწირის გარშემო. ის თავისით იწყებს, შეუძლია შეცვალოს სიჩქარე და შეუძლია ერთდროულად ორი (ან მეტი?) ბურთის ტრიალი. სახალისოა მშენებლობა და მუშაობა. დროის პარამეტრების დაკვრა შესაძლებელია უფრო დიდი სიჩქარითაც კი. რამოდენიმე დარბაზული ეფექტის სენსორი მაგნიტური ბურთით შეიძლება გამოყენებულ იქნას, რომ გახადოს ის უფრო ჭკვიანი მანქანა, რომელსაც შეუძლია განსაზღვროს საუკეთესო პარამეტრები.
უნდა აღვნიშნო, რომ ვინმეს აქ instructables.com– ზე აქვს უფრო დახვეწილი ბურთიანი როლიკებით მანქანა:
საჭირო მასალები:
Arduino Uno (ან ნებისმიერი Arduino)
სერვო ფარი (სურვილისამებრ)
9 გრ სერვო
ქილა თავსახური
ფოლადის ბურთი
რაღაც ჯართი ხე
ნაბიჯი 1: გააკეთეთ ბაზა და ჩამოკიდებული თავსახური

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


უფრო გრძელი სერვო მკლავის გასაკეთებლად მე მხოლოდ 5 სანტიმეტრიანი ხის ნაჭერი დავამატე სერვო მკლავზე რამდენიმე პატარა ხრახნით და თხილით. Servo arm უნდა იყოს 90 გრადუსზე servo როდესაც ის ჰორიზონტალურია ბაზაზე.
მე მხოლოდ ცხელი მიმაგრებული ვარ სერვოზე ჩამოკიდებული ხის დამჭერზე, მაგრამ აღმოვაჩინე, რომ თუ მას რამდენიმე წუთზე მეტხანს გაუშვებთ, სერვო გახურებს ცხელ წებოს და გაუშვებს ხედან. ასე რომ, დანართის უკეთესი მეთოდი გარანტირებულია.
ნაბიჯი 3: ჩატვირთეთ და გაუშვით ესკიზი

მე დავამატე ჩემი servo pin 7 -ზე ფარის გამოყენებით, რადგან ის უბრალოდ მოსახერხებელია და ისინი მხოლოდ რამდენიმე დოლარს ხარჯავენ. თუ თქვენ არ გაქვთ ფარი, მიამაგრეთ servo სიგნალის მავთული Arduino– ზე, pin 7 – ზე, Arduino– ზე წითელი მავთული 5v– ზე და Arduino– ზე GND– ზე. არდუინომ უნდა უზრუნველყოს საკმარისი დენი, რათა იმუშაოს სერვოზე. მე ვიყენებ ფარს, რადგან ადვილია გარე ძაბვის გამოყენება მხოლოდ სერვოსთვის.
აქ არის ესკიზი. მე დავწერე servo სიჩქარის კონტროლერის რუტინა, რათა შევცვალო servo– ს სიჩქარე, რადგან ის ალბათ კარგად არ იმუშავებს სრული სიჩქარით.
თქვენ შეგიძლიათ შეცვალოთ დროის დაგვიანება ბურთის მოძრაობის სხვადასხვა სიჩქარის მისაღებად. თქვენ ასევე შეგიძლიათ შეცვალოთ myServo () ფუნქციის მესამე პარამეტრი სიჩქარის შესაცვლელად.
///////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// /////////////// // შექმნილი ჯიმ დემელოს მიერ, შანგლუოს უნივერსიტეტი, 2017 წ
// თქვენ თავისუფლად შეგიძლიათ გამოიყენოთ, მოახდინოთ მანიპულირება, გააკეთოთ რაც გსურთ ამ კოდით, ჩემი სახელი არ არის საჭირო
// ეს რუტინა საშუალებას იძლევა ნებისმიერი რაოდენობის სერვისის ინტერპოლაცია, უბრალოდ დაამატეთ ახალი ხაზები, თუ სერვისების რაოდენობა აღემატება 4 -ს
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ჩართეთ
სერვო myservo1, myservo2; // servo ობიექტის შექმნა servo- ს გასაკონტროლებლად
int servoRead (int servoNumber) {
int servoCurrent;
if (servoNumber == 1) {servoCurrent = myservo1.read (); }
if (servoNumber == 2) {servoCurrent = myservo2.read (); }
დაბრუნების servoCurrent;
}
void servoWrite (int servoNumber, int offset) {
if (servoNumber == 1) {myservo1.write (ოფსეტური); }
if (servoNumber == 2) {myservo2.write (ოფსეტური); }
}
void myServo (int newAngle, int angleInc, int incDelay, int servoNum) {
int curAngle;
if (servoNum == 1) {curAngle = myservo1.read (); }
if (servoNum == 2) {curAngle = myservo2.read (); }
if (curAngle <newAngle) {
for (int angle = curAngle; angle <newAngle; angle += angleInc) {
if (servoNum == 1) myservo1.write (კუთხე);
if (servoNum == 2) myservo2.write (კუთხე);
დაგვიანება (ჩათვლით დაგვიანებით); }
}
else if (curAngle> newAngle) {
for (int angle = curAngle; angle> newAngle; angle -= angleInc) {
if (servoNum == 1) myservo1.write (კუთხე);
if (servoNum == 2) myservo2.write (კუთხე);
დაგვიანება (ჩათვლით დაგვიანებით); }
}
}
void interpolate2Servos (int servo1, int servo1 პოზიცია, int servo2, int servo2 პოზიცია, int ნომერი ნაბიჯები, int დრო დაგვიანებით) {
int servo1Current, servo2Current;
servo1Current = servoRead (servo1);
servo2Current = servoRead (servo2);
// Serial.print ("Servo3Pos და მიმდინარე"); Serial.print (servo3Position); Serial.print (""); Serial.println (servo3Current);
// Serial.print ("Servo4Pos და მიმდინარე"); Serial.print (servo4Position); Serial.print (""); Serial.println (servo4Current);
// Serial.print ("Servo5Pos და მიმდინარე"); Serial.print (servo5Position); Serial.print (""); Serial.println (servo5Current);
// Serial.print ("Servo6Pos და მიმდინარე"); Serial.print (servo6Position); Serial.print (""); Serial.println (servo6Current);
// Serial.println ("");
int cOffset = (servo1Position - servo1Current); cOffset = abs (cOffset)/numberSteps;
int dOffset = (servo2Position - servo2Current); dOffset = abs (dOffset)/ნომერი ნაბიჯები;
int cOffsetTotal = 0, dOffsetTotal = 0;
cOffsetTotal = servo1Current;
dOffsetTotal = servo2Current;
for (int x = 0; x
if (servo1Position> servo1Current) {cOffsetTotal = cOffsetTotal + cOffset; }
else {cOffsetTotal = cOffsetTotal - cOffset; }
if (servo2Position> servo2Current) {dOffsetTotal = dOffsetTotal + dOffset; }
else {dOffsetTotal = dOffsetTotal - dOffset; }
if (servo1Position! = servo1Current) servoWrite (servo1, cOffsetTotal);
if (servo2Position! = servo2Current) servoWrite (servo2, dOffsetTotal);
// Serial.print ("a and b Offset"); Serial.print (aOffsetTotal); Serial.print (""); Serial.println (bOffsetTotal); დაგვიანება (10);
დაგვიანება (დროის დაყოვნება);
} // დასრულება for
//////////////////////////////////////
// იზრუნე მოდულის ნარჩენებზე //
/////////////////////////////////////
if (servo1Position! = servo1Current) servoWrite (servo1, servo1Position);
if (servo2Position! = servo2Current) servoWrite (servo2, servo2Position);
}
int timingDelay = 100;
int servoDelay = 100;
int degGap = 10;
// ეს არის საწყისი ხარისხი (უნდა იყოს ბოლო ხარისხზე ნაკლები)
int degStart = 0;
// ეს არის დამთავრების ხარისხი (უნდა იყოს უფრო დიდი ვიდრე საწყისი ხარისხი)
int degEnd = 360;
// ეს არის წრის რადიუსი
int რადიუსი = 8;
ბათილად დაყენება ()
{
სერიული.დაწყება (9600);
დაგვიანება (100);
myservo1.attach (7); // მიმაგრებს servo პინ 7 -ზე servo ობიექტს
myservo1. დაწერა (90);
myservo2.attach (8); // ანიჭებს servo პინ 8 -ს servo ობიექტს
myservo2.write (90);
დაგვიანება (1000); // ელოდება სერვოს იქ მისვლას
interpolate2Servos (1, 90, 2, 90, 10, 60); // ნეიტრალური
დაგვიანება (1000);
}
ბათილი მარყუჟი () {
დრო დაგვიანებით = 15; // მუშაობს 10 -ზე
servoDelay = 4;
spin4 ();
// interpolate2Servos (1, 90, 2, 90, 1, 60); // ნეიტრალური
// დაგვიანება (1000);
// გასვლა (0); // პაუზის პროგრამა - გასაგრძელებლად დააჭირეთ გადატვირთვას
}
void spin3 () {
interpolate2Servos (1, 90, 2, 110, 1, 60); // ნეიტრალური
შეფერხება (დრო დაგვიანებით);
interpolate2Servos (1, 90, 2, 80, 1, 60); // ნეიტრალური
შეფერხება (დრო დაგვიანებით);
}
void spin2 () {
// interpolate2Servos (1, 80, 2, 90, 1, 50); // ნეიტრალური
შეფერხება (დრო დაგვიანებით);
interpolate2Servos (1, 80, 2, 80, 1, 60); // ნეიტრალური
შეფერხება (დრო დაგვიანებით);
interpolate2Servos (1, 110, 2, 80, 1, 60); // ნეიტრალური
შეფერხება (დრო დაგვიანებით);
// interpolate2Servos (1, 110, 2, 110, 1, 60); // ნეიტრალური
შეფერხება (დრო დაგვიანებით);
}
void spin1 () {
// int deg = (degStart / (180 / 3.14));
float deg = (degStart * 3.141592 / 180); // გადააკეთეთ გრადუსი რადიანებად
float xPos = 90 + (cos (deg) * რადიუსი);
// xPos = მრგვალი (xPos);
float yPos = 90 + (sin (deg) * რადიუსი);
// yPos = მრგვალი (yPos);
Serial.print ("degGap ="); Serial.print (degGap); Serial.print ("deg ="); Serial.print (deg); Serial.print ("cos ="); Serial.print (cos (deg)); Serial.print ("degStart ="); Serial.print (degStart); Serial.print ("x ="); Serial.print (xPos); Serial.print ("y ="); სერიული println (yPos);
// interpolate2Servos (1, xPos, 2, yPos, 1, servoDelay); // ნეიტრალური
myservo1.write (xPos);
myservo2.write (yPos);
შეფერხება (დრო დაგვიანებით);
if (degStart> = degEnd) {
degStart = 0;
თუ (degGap> 180)
degGap = 180;
// degGap = 0;
სხვა
degGap = degGap + 2;
degGap = degGap - 2;
// degStart = degStart +degGap;
}
degStart = degStart + degGap;
}
void spin4 () {
for (int i = 0; i <= 360; i ++) {
float j = 20 * (cos ((3.14 * i)/180)) + 90;
float k = 20 * (ცოდვა ((3.14 * i)/180)) + 90;
myservo1. დაწერა (j);
myservo2. დაწერე (ლ);
სერიული. ბეჭდვა (j);
Serial.print (",");
სერიული. ბეჭდვა (კ);
დაგვიანება (100);
}
}
გირჩევთ:
როგორ გამორთოთ ავტომატური შესწორება მხოლოდ ერთი სიტყვისთვის (iOS): 3 ნაბიჯი

როგორ გამორთოთ ავტომატური შესწორება მხოლოდ ერთი სიტყვისთვის (iOS): ზოგჯერ ავტომატურმა გამოსწორებამ შეიძლება შეასწოროს ის, რისი გამოსწორებაც არ გსურთ, მაგ. ტექსტის შემოკლება იწყებს თავის თავს ყველა კაპიტალს (მაგალითად, IMO– ს შესწორება, მაგალითად). აი, როგორ აიძულოთ იგი შეწყვიტოს ერთი სიტყვის ან ფრაზის შესწორება, ავტომატური გამორთვის გარეშე
ალკოჰოლის ავტომატური დისპენსერი არდუინოსთან ერთად: 6 ნაბიჯი

ალკოჰოლის ავტომატური დისპენსერი არდუინოსთან ერთად: ეს არდუინოს პროექტი დაგეხმარებათ, როგორ გააკეთოთ ალკოჰოლის ავტომატური დისპენსერი. მომხმარებელს არ სჭირდება რაიმე შეხება ალკოჰოლის მისაღებად, უბრალოდ მიუახლოვდით ულტრაბგერითი სენსორს, ალკოჰოლი გამოიდევნება, შემდეგ დაიკვრება აუდიო ფაილი, რომელიც აცნობებს მომხმარებელს უნდა შეინარჩუნოს
ერთი მოთამაშის რეაქციის ქრონომეტრი (არდუინოსთან ერთად): 5 ნაბიჯი

ერთი მოთამაშის რეაქციის ქრონომეტრი (არდუინოსთან ერთად): ამ პროექტში თქვენ ააშენებთ რეაქციის ქრონომეტრს, რომელიც იკვებება არდუინოს საშუალებით. ის მუშაობს Arduino- ს millis () ფუნქციაზე, სადაც პროცესორი აფიქსირებს პროგრამის დაწყების დროს. თქვენ შეგიძლიათ გამოიყენოთ ის დროის სხვაობის საპოვნელად
On Off Latch Circuit ერთად UC. ერთი დაჭერით ღილაკი. ერთი პინი. დისკრეტული კომპონენტი .: 5 ნაბიჯი

On Off Latch Circuit ერთად UC. ერთი დაჭერით ღილაკი. ერთი პინი. დისკრეტული კომპონენტი .: გამარჯობა ყველას, ვეძებდით ჩართვის/გამორთვის წრეს ქსელში. ყველაფერი რაც ვიპოვე არ იყო ის რასაც ვეძებდი. ჩემს თავს ვესაუბრებოდი, აუცილებლად არსებობს ამის საშუალება. ეს არის ის, რაც მჭირდებოდა.-მხოლოდ ერთი დაჭერის ღილაკი ჩართვისა და გამორთვისთვის.-უნდა გამოიყენოთ მხოლოდ
წვრილმანი უმარტივესი ავტომატური შინაური ცხოველის მიმწოდებელი არდუინოსთან ერთად: 3 ნაბიჯი

წვრილმანი უმარტივესი ავტომატური შინაური ცხოველის მიმწოდებელი არდუინოსთან ერთად: გამარჯობა შინაური ცხოველების მოყვარულებო! ყველა ჩვენგანის სიღრმეში გვინდა გვყავდეს საყვარელი ლეკვი ან კნუტი ან ალბათ თევზის ოჯახი ჩვენს სახლში. მაგრამ ჩვენი დაკავებული ცხოვრების გამო, ჩვენ ხშირად ვეჭვობთ საკუთარ თავს: 'შევძლებ თუ არა ჩემს შინაურ ცხოველებზე ზრუნვას?' პირველადი პასუხისმგებლობა