Sadržaj:
- Korak 1: Izgradite krug IC prijemnika
- Korak 2: Povežite servo, stupac i držač telefona
- Korak 3: Povežite LCD ekran za očitavanje servo -a
- Korak 4: Upotrijebite kôd i biblioteke u prilogu za programiranje Arduina
- Korak 5: Priključite željeni izvor napajanja na Arduino i upotrijebite daljinski za okretanje nosača
- Korak 6: Pročitajte ovo za objašnjenje izvornog koda
- Korak 7: Za pomoć pogledajte My Youtube video
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
Ova instrukcija nastala je u skladu sa projektnim zahtjevima Makecourse -a na Univerzitetu Južne Floride (www.makecourse.com).
Želite napraviti rotirajući držač za telefon kako biste mogli gledati sadržaj svog telefona u portretnom ili pejzažnom položaju bez potrebe da ga držite? Zatim, ne tražite dalje.
Za kreiranje ovog projekta trebat će vam:
- Arduino mikrokontroler i IDE
- USB kabel za učitavanje koda
- Oglasna ploča
- Žice za kratkospojnike
- LCD ekran
- Servo
- Stupac koji se može pričvrstiti na servo
- IR daljinski
- IC prijemnik
- 10k ohm otpornik
- Kenu Airframe+ telefonska štipaljka (ili nešto za držanje telefona na mjestu)
- 9 V baterija za prijenosno napajanje ili samo Arduino na USB pogon
Korak 1: Izgradite krug IC prijemnika
Prvo skočite GND i +5V s Arduina na naponske žice na vašoj ploči. Zatim preskočite svoj otpornik od 10 k ohma sa +5V naponske šine na izlazni pin fototranzistora vašeg IR prijemnika. Zatim upotrijebite kratkospojnik za spajanje na pin 11 na Arduinu s izlaznog pina IC prijemnika. Zatim upotrijebite dvije kratkospojne žice za slanje mase i +5V na odgovarajuće pinove na IR prijemniku. RC filter prikazan na gornjoj shemi nije potreban. Na kraju, nisam napravio shemu prikazanu u ovom koraku, a izvor za to je prisutan na slici.
Korak 2: Povežite servo, stupac i držač telefona
Sada, upotrijebite dvije kratkospojne žice za skok sa zemlje i +5V naponskih vodilica na matičnoj ploči u smeđe i crvene žice servo servera. Zatim pomoću jedne kratkospojne žice pričvrstite iglu 9 na Arduinu na narančastu žicu serva.
Zatim pričvrstite stupac na glavu servo uređaja kao što je prikazano na drugoj slici.
Na kraju, pričvrstite nešto za držanje telefona u koloni, poput Kenu Airframe+, kao što je prikazano na trećoj slici.
Korak 3: Povežite LCD ekran za očitavanje servo -a
Preskočite uzemljenje i +5V sa svojih šina za napajanje na odgovarajuće pinove na LCD ekranu. Takođe, preskočite iglice SDA i SCL sa LCD -a na Ardiuno. Arduino SDA i SCL pinovi mogu se prepoznati sa stražnje strane Arduino ploče i to su dva pina iznad AREF -a i uzemljenja iznad pina 13. SCL pin je najviši. Ovo omogućava LCD ekranu da očita trenutni položaj serva.
Korak 4: Upotrijebite kôd i biblioteke u prilogu za programiranje Arduina
Preuzmite datoteku RotatingMountCode.zip. Instalirajte Arduino IDE i raspakirajte preuzetu datoteku u Documents / Arduino. Obavezno kopirajte sadržaj fascikle mojih skica i biblioteka u fasciklu skice i biblioteke. Otvorite skicu ServoIRandLCD i postavite je na svoj Arduino.
Za objašnjenje koda pogledajte kasnije korake.
Korak 5: Priključite željeni izvor napajanja na Arduino i upotrijebite daljinski za okretanje nosača
Ili ostavite Arduino priključen na računalo ili ga isključite iz računara i upotrijebite bateriju od 9 V za napajanje Arduina istosmjernom strujom. Konačno, upotrijebite jeftini IC daljinski upravljač za upravljanje servo pogonom i stoga orijentaciju nosača telefona!
Broj 1 na daljinskom upravljaču trebao bi postaviti položaj servo na 0 stepeni, broj 2 na 90 stepeni, a broj 3 na 180 stepeni. U međuvremenu, tipke + i - na daljinskom upravljaču trebale bi povećati ili smanjiti kut serva za 1 stepen.
Napomena: Ako koristite drugačiji daljinski upravljač od onog koji je prikazan na slici, moguće je da se promijene IC kodovi koji odgovaraju različitim tipkama. Ako je tako, izmijenite skicu ServoIRandLCD tako da umjesto toga koristite te IR kodove.
Korak 6: Pročitajte ovo za objašnjenje izvornog koda
Izvorni kod za Arduino skicu možete pronaći ispod ili u prethodno priloženoj.zip datoteci. Potrebne biblioteke mogu se pronaći samo u prethodno priloženoj.zip datoteci u koraku 4.
Prvo što kôd radi je uključivanje neophodnih biblioteka potrebnih za pokretanje svih funkcija u skici. Zatim proglašava pin 9 na Arduinu kao signalni pin za servo koji podržava PWM. Takođe čini pin 11 na Arduinu iglom koja se koristi za IC prijemnik. Zatim deklarira cjelobrojnu varijablu koja se koristi za praćenje položaja servo u stupnjevima i postavlja je na 0 stupnjeva, u početku. Zatim instancira potrebne objekte za IRrecv objekt, servo objekt i myDisplay LCD objekt (koji je također konfiguriran u istoj liniji) tako da se ti objekti mogu kasnije koristiti.
Zatim, u funkciji postavljanja, serijski port se pokreće pri 9600 bita/sek, tako da se serijski monitor može koristiti za praćenje položaja serva po želji. On također povezuje myservo objekt na pin 9, pokreće IC prijemnik i inicijalizira LCD zaslon.
U funkciji glavne petlje, čije se tijelo izvodi samo ako je IR prijem primljen od IC prijemnika, IR prijemnik dekodira signal koji mu se šalje s IC daljinskog upravljača pomoću funkcije dekodiranja (& rezultata), a zatim ako naredbe određuju šta da podesite servo na ovisno o primljenoj IR vrijednosti. Funkcija pisanja se koristi za postavljanje servoa na odgovarajuće stupnjeve, a funkcija čitanja se koristi za pronalaženje trenutnog kuta serva i povećanje ili smanjenje prema potrebi.
Konačno, trenutni kut serva se šalje i na serijski monitor i na LCD ekran pomoću funkcije myservo.read (), a glavne petlje ponavljaju neograničeno dugo.
Izvorni kod:
#include // Arduino standardna biblioteka #include // IR biblioteka #include "Wire.h" //Wire.h za LCD (ponekad potrebno) #include "LiquidCrystal_I2C.h" // LCD biblioteka
#define servopin 9 // ovo definira pin 9 kao pin koji se koristi za servo upravljački vod (narančasta)
int RECV_PIN = 11; // IC foto-tranzistor šalje izlaz na pin 11
int currentAngle = 0; // deklariramo currentAngle cjelobrojnu varijablu i postavimo na 0
IRrecv unrecv (RECV_PIN); // instanciranje objekta IR prijemnika decode_results results; // instanciranje objekta decode_results. Ovaj objekt je odvojen od IC prijemnika.
Servo myservo; // instanciranje servo objekta pod nazivom 'myservo' // može se stvoriti najviše osam servo objekata
LiquidCrystal_I2C myDisplay (0x27, 16, 2); // instancirati LCD objekt i postaviti config
void setup () {
Serial.begin (9600); // pokretanje serijskog porta
myservo.attach (servopin); // priključuje servo na pin 9 na servo objekt
unrecv.enableIRIn (); // pokretanje prijemnika
myDisplay.init (); // inicijalizacija LCD -a
myDisplay.backlight (); // uključuje pozadinsko osvjetljenje LCD -a
}
void loop () {{100} {101}
if (unrecv.decode (& results)) // ako je primljen prijenos …
{Serial.print ("IR vrijednost primljena:");
Serial.println (results.value); // prikazana vrijednost primljena
// tumači primljene naredbe … if (results.value == 16724175) // 1 {// lijevo myservo.write (0); }
if (results.value == 16718055) // 2 {// srednji myservo.write (90); }
if (results.value == 16743045) // 3 {// desno myservo.write (180); }
if (results.value == 16754775) //+ {// uvećanje currentAngle = myservo.read (); myservo.write (currentAngle + 1); } if (results.value == 16769055) //- {// smanjivanje currentAngle = myservo.read (); myservo.write (currentAngle - 1); }}
unrecv.resume (); // Primanje sljedeće vrijednosti
// Štampanje serijskog monitora Serial.print ("Trenutna pozicija serva:");
Serial.println (myservo.read ()); // ovo preuzima servo poziciju i šalje je serijskom monitoru
// LCD ispis myDisplay.clear ();
myDisplay.print ("Servo deg.:");
myDisplay.print (myservo.read ());
kašnjenje (200); // odgoda radi stabilizacije servo aktiviranja
}
Korak 7: Za pomoć pogledajte My Youtube video
Pogledajte moj video zapis s YouTubea koji nije naveden i koji u potpunosti raspravlja i prikazuje projekt ako imate pitanja!