Indholdsfortegnelse:

Roterende telefonholder: 7 trin
Roterende telefonholder: 7 trin

Video: Roterende telefonholder: 7 trin

Video: Roterende telefonholder: 7 trin
Video: Magnetisk mobilholder 2024, Juli
Anonim
Roterende telefonholder
Roterende telefonholder

Denne instruerbare blev oprettet for at opfylde projektkravet fra Makecourse ved University of South Florida (www.makecourse.com).

Vil du lave en roterende telefonholder, så du kan se telefonens indhold i stående eller liggende retning uden at skulle beholde den? Så kig ikke længere.

For at oprette dette projekt skal du bruge:

- Arduino mikrokontroller og IDE

- USB -kabel til overførsel af kode

- Brødbræt

- Jumper Wires

- LCD display

- Servo

- Søjle, der kan fastgøres til servoen

- IR fjernbetjening

- IR -modtager

- 10k ohm modstand

- Kenu Airframe+ Phone Clip (eller noget for at holde telefonen på plads)

- 9 V batteri til bærbar strøm eller bare USB -drevet Arduino

Trin 1: Byg IR -modtager kredsløb

Byg IR -modtager kredsløb
Byg IR -modtager kredsløb
Byg IR -modtager kredsløb
Byg IR -modtager kredsløb

Først skal du springe GND og +5V fra Arduino til strømskinnerne på dit brødbræt. Hop derefter din 10k ohm modstand fra +5V strømskinnen til udgangsstiften på din IR -modtager fototransistor. Brug derefter en jumper wire til at forbinde til pin 11 på Arduino fra output pin på IR modtageren. Brug derefter to jumperkabler til at sende jord og +5V til de respektive stifter på IR -modtageren. RC -filteret vist i skematisk ovenfor er ikke nødvendigt. Endelig lavede jeg ikke skematikken vist i dette trin, og kilden til den er til stede på billedet.

Trin 2: Tilslut servo, kolonne og telefonholder

Tilslut servo, kolonne og telefonholder
Tilslut servo, kolonne og telefonholder
Tilslut servo, kolonne og telefonholder
Tilslut servo, kolonne og telefonholder
Tilslut servo, kolonne og telefonholder
Tilslut servo, kolonne og telefonholder

Brug nu to jumper -tråde til at hoppe fra jorden og +5V af brødbrædderets skinner ind i henholdsvis servoens brune og røde ledninger. Brug derefter en jumper wire til at fastgøre pin 9 på Arduino til den orange ledning på servoen.

Sæt derefter en kolonne fast på hovedet på servoen som vist på det andet billede.

Til sidst skal du vedhæfte noget for at holde telefonen til kolonnen, som Kenu Airframe+, som vist på det tredje billede.

Trin 3: Tilslut LCD -skærmen til Servo -aflæsning

Tilslut LCD -skærmen til Servo -aflæsning
Tilslut LCD -skærmen til Servo -aflæsning

Spring jorden og +5V fra dine brødbrætskinner til de respektive stifter på LCD -displayet. Spring også SDA- og SCL -benene fra LCD'et over på Ardiuno. Arduinoens SDA- og SCL -ben kan identificeres fra bagsiden af Arduino -kortet og er de to ben ovenfor AREF og jorden over stiften 13. SCL -stiften er den højeste. Dette gør det muligt for LCD -displayet at aflæse den aktuelle servoposition.

Trin 4: Brug koden og de biblioteker, der er knyttet til at programmere Arduino

Brug koden og de biblioteker, der er knyttet til at programmere Arduino
Brug koden og de biblioteker, der er knyttet til at programmere Arduino

Download filen RotatingMountCode.zip. Installer Arduino IDE, og pak den downloadede fil ud i Documents / Arduino. Sørg for at kopiere indholdet af min skitser og biblioteksmappe til din skitser og biblioteksmappe. Åbn ServoIRandLCD -skitsen, og upload den til din Arduino.

Se senere trin for kodeforklaring.

Trin 5: Tilslut den ønskede strømkilde til Arduino, og brug fjernbetjeningen til at dreje holderen

Tilslut den ønskede strømkilde til Arduino, og brug fjernbetjeningen til at rotere holderen!
Tilslut den ønskede strømkilde til Arduino, og brug fjernbetjeningen til at rotere holderen!
Tilslut den ønskede strømkilde til Arduino, og brug fjernbetjeningen til at dreje holderen!
Tilslut den ønskede strømkilde til Arduino, og brug fjernbetjeningen til at dreje holderen!

Lad enten Arduino være tilsluttet din computer, eller tag den ud af din computer, og brug et 9V batteri til at levere Arduino jævnstrøm. Endelig skal du bruge en billig IR -fjernbetjening til at styre servoen og derfor telefonholderens retning!

Nummer 1 på fjernbetjeningen skal indstille servopositionen til 0 grader, nummer 2 til 90 grader og nummer 3 til 180 grader. I mellemtiden skal + og - knapperne på fjernbetjeningen øge eller formindske servos vinkel med henholdsvis 1 grad.

Bemærk: Hvis du bruger en anden IR -fjernbetjening end den her på billedet, er det muligt, at IR -koderne, der svarer til forskellige knapper, kan ændres. Hvis ja, skal du ændre ServoIRandLCD -skitsen for i stedet at bruge disse IR -koder.

Trin 6: Læs dette for en forklaring på kildekoden

Læs dette for at få en forklaring på kildekoden
Læs dette for at få en forklaring på kildekoden
Læs dette for at få en forklaring på kildekoden
Læs dette for at få en forklaring på kildekoden

Kildekoden til Arduino -skitsen findes nedenfor eller i den tidligere vedhæftede.zip -fil. De nødvendige biblioteker kan kun findes i den tidligere vedhæftede.zip -fil i trin 4.

Det første, koden gør, er at inkludere de nødvendige biblioteker, der er nødvendige for at køre alle funktionerne i skitsen. Dernæst erklærer den pin 9 på Arduino for at være den PWM-aktiverede signalstift til servoen. Det gør også pin 11 på Arduino til den pin, der bruges til IR -modtageren. Dernæst erklærer den en heltalsvariabel, der bruges til at holde styr på servoens position i grader og sætter den til 0 grader i første omgang. Derefter instantierer det de nødvendige objekter til et IRrecv -objekt, et servoobjekt og myDisplay LCD -objekt (der også er konfigureret i samme linje), så disse objekter kan bruges senere.

I installationsfunktionen startes derefter den serielle port med 9600 bits/sek, så den serielle skærm kan bruges til at holde styr på servoens position, hvis det ønskes. Det fastgør også myservo -objektet til pin 9, starter IR -modtageren og initialiserer LCD -displayet.

I hovedsløjfe -funktionen, hvis hoveddel kun udføres, hvis der modtages en IR -transmission fra IR -modtageren, dekoder IR -modtageren det signal, der sendes til den fra IR -fjernbetjeningen ved hjælp af afkodningsfunktionen (& resultater), og derefter hvis udsagn bestemmer, hvad at indstille servoen til afhængigt af den modtagne IR -værdi. Skrivefunktionen bruges til at indstille servoen til de passende grader, og læsefunktionen bruges til at finde den aktuelle vinkel på servoen og øge eller formindske den efter behov.

Endelig sendes servoens aktuelle vinkel til både den serielle skærm og LCD -skærmen ved hjælp af funktionen myservo.read (), og hovedløkkerne gentages på ubestemt tid.

Kildekode:

#include // Arduino standardbibliotek #inkluderer // IR -bibliotek #include "Wire.h" //Wire.h til LCD (nogle gange nødvendigt) #include "LiquidCrystal_I2C.h" // LCD -bibliotek

#define servopin 9 // dette definerer pin 9 som den pin, der bruges til servostyringsledningen (orange)

int RECV_PIN = 11; // IR-fototransistor sender output til pin 11

int currentAngle = 0; // erklære currentAngle -heltalsvariabel og indstillet til 0

IRrecv irrecv (RECV_PIN); // instabilisere et IR -modtagerobjekt decode_results resultater; // instantiate et decode_results objekt. Dette objekt er adskilt fra IR -modtageren.

Servo myservo; // instantier et Servo -objekt med navnet 'myservo' // der kan maksimalt oprettes otte servoobjekter

LiquidCrystal_I2C myDisplay (0x27, 16, 2); // instantier LCD -objekt og konfigurer konfiguration

ugyldig opsætning () {

Serial.begin (9600); // start seriel port

myservo.attach (servopin); // fastgør servoen på pin 9 til servoobjektet

irrecv.enableIRIn (); // start modtageren

myDisplay.init (); // initialiser LCD

myDisplay.backlight (); // Tænd LCD -baggrundsbelysning

}

void loop () {

hvis (irrecv.decode (& resultater)) // hvis transmission modtaget …

{Serial.print ("modtaget IR -værdi:");

Serial.println (resultater.værdi); // visningsværdi modtaget

// fortolke de modtagne kommandoer … hvis (results.value == 16724175) // 1 {// forlod myservo.write (0); }

hvis (results.value == 16718055) // 2 {// midterste myservo.write (90); }

hvis (results.value == 16743045) // 3 {// højre myservo.write (180); }

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

irrecv.resume (); // Modtag den næste værdi

// Seriel skærmudskrivning Serial.print ("Aktuel servoposition:");

Serial.println (myservo.read ()); // dette henter servopositionen og sender den til den serielle skærm

// LCD print myDisplay.clear ();

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

myDisplay.print (myservo.read ());

forsinkelse (200); // forsinkelse for at gøre servoaktivering stabil

}

Trin 7: Se min Youtube -video for hjælp

Se min unoterede YouTube -video, der fuldstændigt diskuterer og demonstrerer projektet, hvis du har spørgsmål!

Anbefalede: