Turinys:

Sukamas telefono laikiklis: 7 žingsniai
Sukamas telefono laikiklis: 7 žingsniai

Video: Sukamas telefono laikiklis: 7 žingsniai

Video: Sukamas telefono laikiklis: 7 žingsniai
Video: Telefono laikiklis mašinoje 2024, Lapkritis
Anonim
Besisukantis telefono laikiklis
Besisukantis telefono laikiklis

Šis nurodymas buvo sukurtas vykdant Pietų Floridos universiteto „Makecourse“projekto reikalavimą (www.makecourse.com).

Norite sukurti besisukantį telefono laikiklį, kad galėtumėte žiūrėti savo telefono turinį vertikaliai arba horizontaliai, jo nelaikydami? Tada nežiūrėkite toliau.

Norėdami sukurti šį projektą, jums reikės:

- „Arduino“mikrovaldiklis ir IDE

- USB kabelis kodui įkelti

- Bandomoji Lenta

- jungiamieji laidai

- LCD ekranas

- Servo

- Kolona, kurią galima pritvirtinti prie servo

- IR nuotolinio valdymo pultas

- IR imtuvas

- 10k omų rezistorius

- „Kenu Airframe+ Phone Clip“(ar kažkas, kad telefonas būtų laikomas vietoje)

- 9 V baterija nešiojamam maitinimui arba tiesiog USB maitinamas „Arduino“

1 žingsnis: sukurkite IR imtuvo grandinę

Sukurkite IR imtuvo grandinę
Sukurkite IR imtuvo grandinę
Sukurkite IR imtuvo grandinę
Sukurkite IR imtuvo grandinę

Pirma, šokinėkite GND ir +5 V nuo „Arduino“prie maitinimo bėgių ant savo duonos lentos. Tada peršokite savo 10 kΩ rezistorių nuo +5 V maitinimo šaltinio į IR imtuvo fototransistoriaus išvesties kaištį. Tada naudokite trumpiklį, kad prisijungtumėte prie 11 „Arduino“kaiščio iš IR imtuvo išvesties kaiščio. Tada naudokite du trumpiklius, kad nusiųstumėte įžeminimą ir +5 V į atitinkamus IR imtuvo kaiščius. Aukščiau esančioje schemoje pavaizduotas RC filtras nėra būtinas. Galiausiai nepadariau schemos, parodytos šiame žingsnyje, o jos šaltinis yra paveikslėlyje.

2 veiksmas: prijunkite servo, stulpelį ir telefono laikiklį

Prijunkite servo, stulpelį ir telefono laikiklį
Prijunkite servo, stulpelį ir telefono laikiklį
Prijunkite servo, stulpelio ir telefono laikiklį
Prijunkite servo, stulpelio ir telefono laikiklį
Prijunkite servo, stulpelio ir telefono laikiklį
Prijunkite servo, stulpelio ir telefono laikiklį

Dabar naudokite du trumpiklius laidus, kad šokinėtumėte nuo žemės ir +5 V duonos lentos maitinimo bėgių į atitinkamai rudus ir raudonus servo laidus. Tada naudokite vieną jungiamąjį laidą, kad pritvirtintumėte 9 „Arduino“kaištį prie oranžinės servo vielos.

Tada pritvirtinkite stulpelį prie servo galvos, kaip parodyta antrame paveikslėlyje.

Galiausiai prie stulpelio pritvirtinkite ką nors, kas laikytų telefoną, pvz., „Kenu Airframe+“, kaip parodyta trečiame paveikslėlyje.

3 žingsnis: Prijunkite skystųjų kristalų ekraną, kad būtų rodomas servo nuskaitymas

Prijunkite skystųjų kristalų ekraną, kad gautumėte servo nuskaitymą
Prijunkite skystųjų kristalų ekraną, kad gautumėte servo nuskaitymą

Peršokite žemę ir +5 V nuo savo duonos lentos maitinimo bėgių iki atitinkamų LCD ekrano kaiščių. Be to, perkelkite SDA ir SCL kaiščius iš LCD į „Ardiuno“. „Arduino“SDA ir SCL kaiščius galima atpažinti iš „Arduino“plokštės galo ir yra du kaiščiai virš AREF ir įžeminimo virš 13 kaiščio. SCL kaištis yra aukščiausias. Tai leidžia LCD ekranui nuskaityti esamą servo padėtį.

4 veiksmas: naudokite kodą ir pridėtas bibliotekas, kad programuotumėte „Arduino“

Norėdami programuoti „Arduino“, naudokite kodą ir pridėtas bibliotekas
Norėdami programuoti „Arduino“, naudokite kodą ir pridėtas bibliotekas

Atsisiųskite failą RotatingMountCode.zip. Įdiekite „Arduino IDE“ir išpakuokite atsisiųstą failą į „Documents / Arduino“. Būtinai nukopijuokite mano eskizų ir bibliotekų aplanko turinį į eskizų ir bibliotekų aplanką. Atidarykite „ServoIRandLCD“eskizą ir įkelkite jį į „Arduino“.

Žr. Vėlesnius kodo paaiškinimo veiksmus.

5 veiksmas: prijunkite norimą maitinimo šaltinį prie „Arduino“ir naudokite nuotolinio valdymo pultą, kad pasuktumėte laikiklį

Prijunkite norimą maitinimo šaltinį prie „Arduino“ir naudokite nuotolinio valdymo pultą, kad pasuktumėte laikiklį!
Prijunkite norimą maitinimo šaltinį prie „Arduino“ir naudokite nuotolinio valdymo pultą, kad pasuktumėte laikiklį!
Prijunkite norimą maitinimo šaltinį prie „Arduino“ir naudokite nuotolinio valdymo pultą, kad pasuktumėte laikiklį!
Prijunkite norimą maitinimo šaltinį prie „Arduino“ir naudokite nuotolinio valdymo pultą, kad pasuktumėte laikiklį!

Palikite „Arduino“prijungtą prie kompiuterio arba atjunkite jį nuo kompiuterio ir naudokite 9 V bateriją, kad „Arduino“būtų tiekiama nuolatinė srovė. Galiausiai naudokite pigų IR nuotolinio valdymo pultą, kad valdytumėte servo sistemą, taigi ir telefono laikiklio padėtį!

Skaičius 1 nuotolinio valdymo pulte turėtų nustatyti servo padėtį 0 laipsnių, skaičius 2 - 90 laipsnių, o skaičius 3 - 180 laipsnių. Tuo tarpu nuotolinio valdymo pulto mygtukai + ir - turėtų atitinkamai padidinti arba sumažinti servo kampą 1 laipsniu.

Pastaba: Jei naudojate kitokį IR nuotolinio valdymo pultą, nei pavaizduotas čia, gali būti, kad pasikeitė įvairius mygtukus atitinkantys IR kodai. Jei taip, pakeiskite „ServoIRandLCD“eskizą ir naudokite tuos IR kodus.

6 veiksmas: perskaitykite šį šaltinio kodo paaiškinimą

Perskaitykite šį šaltinio kodo paaiškinimą
Perskaitykite šį šaltinio kodo paaiškinimą
Perskaitykite šį šaltinio kodo paaiškinimą
Perskaitykite šį šaltinio kodo paaiškinimą

„Arduino“eskizo šaltinio kodą rasite žemiau arba anksčiau pridėtame.zip faile. Reikalingas bibliotekas galima rasti tik anksčiau pridėtame.zip faile 4 veiksme.

Pirmas dalykas, kurį atlieka kodas, yra būtinos bibliotekos, reikalingos visoms eskizo funkcijoms vykdyti. Tada jis skelbia, kad „Arduino“9 kaištis yra PWM palaikantis servo signalo kaištis. Tai taip pat daro „Arduino“kaištį 11 kaiščiu, naudojamu IR imtuvui. Tada jis deklaruoja sveiką skaičių kintamąjį, naudojamą servo padėčiai sekti laipsniais, ir iš pradžių nustato 0 laipsnių. Tada jis nedelsdamas parodo reikiamus objektus IRrecv objektui, servo objektui ir „myDisplay“LCD objektui (kuris taip pat sukonfigūruotas toje pačioje eilutėje), kad šie objektai galėtų būti naudojami vėliau.

Tada sąrankos funkcijoje serijinis prievadas paleidžiamas 9600 bitų per sekundę greičiu, todėl, jei pageidaujama, serijinis monitorius gali būti naudojamas norint stebėti servo padėtį. Jis taip pat pritvirtina „myservo“objektą prie 9 kaiščio, paleidžia IR imtuvą ir inicijuoja LCD ekraną.

Pagrindinėje ciklo funkcijoje, kurios korpusas vykdomas tik tuo atveju, jei iš IR imtuvo gaunamas IR perdavimas, IR imtuvas dekoduoja iš IR nuotolinio valdymo pulto jam siunčiamą signalą, naudodamas dekodavimo (& rezultatų) funkciją, o tada, jei teiginiai nustato, kas nustatyti servo režimą priklausomai nuo gautos IR vertės. Rašymo funkcija naudojama norint nustatyti reikiamą servo laipsnį, o skaitymo funkcija - rasti dabartinį servo kampą ir jį padidinti arba sumažinti, jei reikia.

Galiausiai, esamas servo kampas siunčiamas į nuoseklųjį monitorių ir LCD ekraną naudojant funkciją myservo.read (), o pagrindinės kilpos kartojasi neribotą laiką.

Pirminis kodas:

#include // „Arduino“standartinė biblioteka #include // IR biblioteka #include "Wire.h" //Wire.h LCD (kartais reikia) #Include "LiquidCrystal_I2C.h" // LCD biblioteka

#define servopin 9 // tai apibrėžia 9 kaištį kaip kaištį, naudojamą servo valdymo laidui (oranžinė)

int RECV_PIN = 11; // IR fototranzistorius siunčia išvestį į 11 kaištį

int currentAngle = 0; // deklaruoti CurrentAngle sveikų skaičių kintamąjį ir nustatyti 0

IRrecv irrecv (RECV_PIN); // momentinis IR imtuvo objekto dekodavimo_results rezultatai; // momentinis dekodavimo_rezultato objektas. Šis objektas yra atskiras nuo IR imtuvo.

Servo myservo; // Pakartokite servo objektą, pavadintą „myservo“// galima sukurti ne daugiau kaip aštuonis servo objektus

„LiquidCrystal_I2C myDisplay“(0x27, 16, 2); // parodyti LCD objektą ir nustatyti konfigūraciją

void setup () {

Serial.begin (9600); // pradėti nuoseklųjį prievadą

myservo.attach (servopin); // prie servo objekto pritvirtina 9 kaiščio servo

irrecv.enableIRIn (); // paleiskite imtuvą

myDisplay.init (); // inicijuoti LCD

myDisplay.backlight (); // įjungti LCD apšvietimą

}

void loop () {

if (irrecv.decode (& rezultatai)) // jei gautas perdavimas …

{Serial.print („IR vertė gauta:“);

Serial.println (results.value); // gauta rodoma vertė

// interpretuoti gautas komandas… if (results.value == 16724175) // 1 {// kairė myservo.write (0); }

if (results.value == 16718055) // 2 {// vidurinis myservo.write (90); }

if (results.value == 16743045) // 3 {// right myservo.write (180); }

if (results.value == 16754775) //+ {// padidinti currentAngle = myservo.read (); myservo.write (currentAngle + 1); } if (results.value == 16769055) //- {// Decension currentAngle = myservo.read (); myservo.write (currentAngle - 1); }}

irrecv.resume (); // Gaukite kitą vertę

// Serijinio monitoriaus spausdinimas Serial.print ("Dabartinė servo padėtis:");

Serial.println (myservo.read ()); // tai nuskaito servo padėtį ir siunčia ją į serijinį monitorių

// LCD spausdinimas myDisplay.clear ();

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

myDisplay.print (myservo.read ());

vėlavimas (200); // uždelsimas, kad servo įjungimas būtų stabilus

}

7 veiksmas: pagalbos ieškokite mano „YouTube“vaizdo įraše

Peržiūrėkite mano neįtrauktą į „YouTube“vaizdo įrašą, kuriame išsamiai aptariamas ir demonstruojamas projektas, jei turite klausimų!

Rekomenduojamas: