Kazalo:

Rotacijski nosilec telefona: 7 korakov
Rotacijski nosilec telefona: 7 korakov

Video: Rotacijski nosilec telefona: 7 korakov

Video: Rotacijski nosilec telefona: 7 korakov
Video: 7 лайфхаков с ГОРЯЧИМ КЛЕЕМ для вашего ремонта. 2024, November
Anonim
Rotacijski nosilec za telefon
Rotacijski nosilec za telefon

Ta pouk je bil ustvarjen v skladu z zahtevami projekta Makecourse na Univerzi v Južni Floridi (www.makecourse.com).

Želite narediti vrtljiv nosilec za telefon, da si lahko ogledate vsebino telefona v pokončni ali ležeči usmerjenosti, ne da bi ga morali držati? Potem ne glej več.

Če želite ustvariti ta projekt, boste potrebovali:

- Arduino mikrokrmilnik in IDE

- USB kabel za nalaganje kode

- Ogledna plošča

- Mostične žice

- LCD zaslon

- Servo

- Stolpec, ki se lahko pritrdi na servo

- IR daljinski upravljalnik

- IR sprejemnik

- 10k ohmski upor

- Kenu Airframe+ telefonska sponka (ali nekaj, kar drži telefon na mestu)

- 9 V baterija za prenosno napajanje ali samo Arduino z USB pogonom

1. korak: Zgradite vezje IR sprejemnika

Zgradite vezje IR sprejemnika
Zgradite vezje IR sprejemnika
Zgradite vezje IR sprejemnika
Zgradite vezje IR sprejemnika

Najprej preskočite GND in +5V z Arduina na napajalne tirnice na vaši plošči. Nato preskočite 10k ohmski upor z +5V napajalne tirnice na izhodni zatič fototranzistorja vašega IR sprejemnika. Nato uporabite mostiček za priključitev na pin 11 na Arduinu iz izhodnega zatiča IR sprejemnika. Nato z dvema mostičnima žicama pošljite ozemljitev in +5V na ustrezne zatiče IR sprejemnika. RC filter, prikazan na zgornji shemi, ni potreben. Nazadnje, sheme, prikazane v tem koraku, nisem naredil, vir zanj pa je prisoten na sliki.

2. korak: Priključite servo, stolpec in držalo za telefon

Priključite servo, stolpec in držalo za telefon
Priključite servo, stolpec in držalo za telefon
Priključite servo, stolpec in držalo za telefon
Priključite servo, stolpec in držalo za telefon
Priključite servo, stolpec in držalo za telefon
Priključite servo, stolpec in držalo za telefon

Sedaj z dvema mostičnima žicama skočite s tal in +5V napajalnih tirnic na ohišju v rjavo in rdečo žico servo. Nato z eno mostično žico pritrdite zatič 9 na Arduinu na oranžno žico servomotorja.

Nato na glavo servomotorja pritrdite stolpec, kot je prikazano na drugi sliki.

Nazadnje na stolpec pritrdite nekaj, kar drži telefon, na primer Kenu Airframe+, kot je prikazano na tretji sliki.

3. korak: Priključite LCD zaslon za odčitavanje servomotorjev

Priključite LCD zaslon za servo odčitavanje
Priključite LCD zaslon za servo odčitavanje

Skočite z ozemljitvenih tirnic in +5 V na ustrezne zatiče na LCD zaslonu. Prav tako preskočite zatiče SDA in SCL z LCD -ja na Ardiuno. Zatiča SDA in SCL Arduino je mogoče prepoznati na zadnji strani plošče Arduino in sta dva zatiča nad AREF in Ground nad zatičem 13. SCIN zatič je najvišji. To omogoča, da LCD zaslon odčita trenutni položaj servomotorja.

4. korak: Uporabite kodo in knjižnice, priložene za programiranje Arduina

Za programiranje Arduina uporabite kodo in knjižnice, priložene
Za programiranje Arduina uporabite kodo in knjižnice, priložene

Prenesite datoteko RotatingMountCode.zip. Namestite Arduino IDE in razpakirajte preneseno datoteko v Documents / Arduino. Kopirajte vsebino mape skic in knjižnic v mapo skic in knjižnic. Odprite skico ServoIRandLCD in jo naložite v svoj Arduino.

Za razlago kode glejte poznejše korake.

5. korak: Želeni vir napajanja priključite na Arduino in z daljinskim upravljalnikom zavrtite nosilec

Priključite želeni vir napajanja na Arduino in z daljinskim upravljalnikom zavrtite nosilec!
Priključite želeni vir napajanja na Arduino in z daljinskim upravljalnikom zavrtite nosilec!
Priključite želeni vir energije na Arduino in z daljinskim upravljalnikom zavrtite nosilec!
Priključite želeni vir energije na Arduino in z daljinskim upravljalnikom zavrtite nosilec!

Arduino pustite priklopljenega na računalnik ali pa ga izključite iz računalnika in uporabite 9V baterijo za napajanje Arduina z enosmernim tokom. Nazadnje uporabite poceni IR daljinski upravljalnik za servo in s tem orientacijo nosilca za telefon!

Številka 1 na daljinskem upravljalniku mora nastaviti položaj servo na 0 stopinj, številka 2 na 90 stopinj in številka 3 na 180 stopinj. Medtem morata gumba + in - na daljinskem upravljalniku povečati ali zmanjšati kot servo za 1 stopinjo.

Opomba: Če uporabljate daljinski upravljalnik IR, ki ni prikazan na tej sliki, je mogoče spremeniti IR kode, ki ustrezajo različnim gumbom. Če je tako, spremenite skico ServoIRandLCD, da namesto tega uporabite te IR kode.

Korak 6: Preberite to za razlago izvorne kode

Preberite to za razlago izvorne kode
Preberite to za razlago izvorne kode
Preberite to za razlago izvorne kode
Preberite to za razlago izvorne kode

Izvorno kodo za skico Arduino najdete spodaj ali v prej priloženi datoteki.zip. Potrebne knjižnice najdete le v prej priloženi datoteki.zip v 4. koraku.

Prva stvar, ki jo naredi koda, je vključitev potrebnih knjižnic, potrebnih za izvajanje vseh funkcij v skici. Nato razglasi, da je pin 9 na Arduinu signalni pin za servo, ki podpira PWM. Prav tako je pin 11 na Arduinu pin, ki se uporablja za IR sprejemnik. Nato razglasi celoštevilsko spremenljivko, ki se uporablja za spremljanje položaja servo v stopinjah, in jo sprva nastavi na 0 stopinj. Nato vzpostavi zahtevane objekte za objekt IRrecv, servo objekt in objekt myDisplay LCD (ki je prav tako konfiguriran v isti vrstici), tako da jih lahko kasneje uporabite.

Nato se v nastavitveni funkciji serijska vrata zaženejo pri 9600 bitih/s, tako da lahko serijski monitor po želji spremljate položaj servomotorja. Na pin 9 pritrdi tudi objekt myservo, zažene IR sprejemnik in inicializira LCD zaslon.

V funkciji glavne zanke, katere telo se izvede le, če je IR sprejemnik sprejet od IR sprejemnika, IR sprejemnik dekodira signal, ki mu je poslan z daljinskega upravljalnika IR, z uporabo funkcije dekodiranja (& rezultati) in nato, če izjave določajo, kaj nastavite servo na odvisno od prejete IR vrednosti. Funkcija pisanja se uporablja za nastavitev servomotorja na ustrezne stopnje, funkcija branja pa za iskanje trenutnega kota servomotorja in ga po potrebi poveča ali zmanjša.

Nazadnje se trenutni kot servomotorja pošlje na serijski monitor in LCD zaslon s funkcijo myservo.read (), glavne zanke pa se ponavljajo v nedogled.

Izvorna koda:

#include // Standardna knjižnica Arduino #include // IR knjižnica #include "Wire.h" //Wire.h za LCD (včasih potrebno) #include "LiquidCrystal_I2C.h" // LCD knjižnica

#define servopin 9 // to definira pin 9 kot pin, ki se uporablja za servo krmilni vod (oranžno)

int RECV_PIN = 11; // IR foto-tranzistor pošlje izhod na pin 11

int currentAngle = 0; // razglasimo celoštevilsko spremenljivko currentAngle in nastavimo na 0

IRrecv unrecv (RECV_PIN); // vzpostavimo rezultat predmeta IR sprejemnika decode_results results; // instanciranje objekta decode_results. Ta predmet je ločen od IR sprejemnika.

Servo myservo; // instanciranje servo objekta z imenom 'myservo' // lahko ustvarite največ osem servo objektov

LiquidCrystal_I2C myDisplay (0x27, 16, 2); // instanciramo objekt LCD in nastavimo config

void setup () {

Serial.begin (9600); // zaženite serijska vrata

myservo.attach (servopin); // pritrdi servo na zatiču 9 na servo objekt

unrecv.enableIRIn (); // zaženemo sprejemnik

myDisplay.init (); // inicializiramo LCD

myDisplay.backlight (); // vklop osvetlitve zaslona LCD

}

void loop () {

if (unrecv.decode (& results)) // če je bil sprejet prenos …

{Serial.print ("Prejeta IR vrednost:");

Serial.println (results.value); // prejeta prikazana vrednost

// razlaga prejete ukaze … if (results.value == 16724175) // 1 {// levo 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) //+ {// povečanje currentAngle = myservo.read (); myservo.write (currentAngle + 1); } if (results.value == 16769055) //- {// zmanjšanje currentAngle = myservo.read (); myservo.write (currentAngle - 1); }}

unrecv.resume (); // Prejemamo naslednjo vrednost

// Serijski monitor tiskanje Serial.print ("Trenutni položaj servo:");

Serial.println (myservo.read ()); // ta pridobi položaj servo in ga pošlje serijskemu monitorju

// LCD tiskanje myDisplay.clear ();

myDisplay.print ("Servo deg.:");

myDisplay.print (myservo.read ());

zamuda (200); // zakasnitev za stabilno aktiviranje servomotorja

}

7. korak: Za pomoč si oglejte videoposnetek My Youtube

Če imate kakršna koli vprašanja, si oglejte moj videoposnetek na YouTubu, ki ni na seznamu in v katerem je v celoti obravnavan in predstavljen projekt!

Priporočena: