Innholdsfortegnelse:

Roterende telefonfeste: 7 trinn
Roterende telefonfeste: 7 trinn

Video: Roterende telefonfeste: 7 trinn

Video: Roterende telefonfeste: 7 trinn
Video: Пурга, горячие ванны, рыба на огне, бобтейл и копеечный палтус // Субтитры 2024, Juli
Anonim
Roterende telefonfeste
Roterende telefonfeste

Denne instruksen ble opprettet for å oppfylle prosjektkravet til Makecourse ved University of South Florida (www.makecourse.com).

Vil du lage en roterende telefonfeste slik at du kan se innholdet på telefonen i stående eller liggende retning uten å måtte holde den? Så, se ikke lenger.

For å lage dette prosjektet trenger du:

- Arduino mikrokontroller og IDE

- USB -kabel for å laste opp kode

- Brødbrett

- Jumper Wires

- LCD-skjerm

- Servo

- Kolonne som kan festes til servoen

- IR -fjernkontroll

- IR -mottaker

- 10k ohm motstand

- Kenu Airframe+ Phone Clip (eller noe for å holde telefonen på plass)

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

Trinn 1: Bygg IR -mottakerkretsen

Bygg IR -mottakerkretsen
Bygg IR -mottakerkretsen
Bygg IR -mottakerkretsen
Bygg IR -mottakerkretsen

Først hopper du GND og +5V fra Arduino til strømskinnene på brødbrettet. Deretter hopper du din 10k ohm motstand fra +5V strømskinne til utgangsstiften til IR -mottakerens fototransistor. Deretter bruker du en jumper wire til å koble til pin 11 på Arduino fra utgangstappen til IR -mottakeren. Deretter bruker du to hoppetråder til å sende jord og +5V til de respektive pinnene på IR -mottakeren. RC -filteret avbildet i skjemaet ovenfor er ikke nødvendig. Til slutt gjorde jeg ikke skjematikken som ble vist i dette trinnet, og kilden til den er tilstede i bildet.

Trinn 2: Koble til servoen, kolonnen og telefonholderen

Koble til servoen, kolonnen og telefonholderen
Koble til servoen, kolonnen og telefonholderen
Koble til servoen, kolonnen og telefonholderen
Koble til servoen, kolonnen og telefonholderen
Koble til servoen, kolonnen og telefonholderen
Koble til servoen, kolonnen og telefonholderen

Bruk nå to hoppetråder til å hoppe fra bakken og +5V av brødbrettets strømskinner inn i henholdsvis de brune og røde ledningene på servoen. Deretter bruker du en jumper wire til å feste pin 9 på Arduino til den oransje ledningen på servoen.

Fest deretter en kolonne til hodet på servoen som vist på det andre bildet.

Fest til slutt noe for å holde telefonen til kolonnen, som Kenu Airframe+, som vist på det tredje bildet.

Trinn 3: Koble til LCD -skjermen for servoavlesning

Koble til LCD -skjermen for servoavlesning
Koble til LCD -skjermen for servoavlesning

Hopp bakken og +5V fra brødbrettets strømskinner til de respektive pinnene på LCD -skjermen. Hopp også SDA- og SCL -pinnene fra LCD -skjermen til Ardiuno. Arduinoens SDA- og SCL -pinner kan identifiseres fra baksiden av Arduino -kortet og er de to pinnene over AREF og bakken over pinne 13. SCL -pinnen er den høyeste. Dette gjør at LCD -skjermen kan lese den nåværende servoposisjonen.

Trinn 4: Bruk koden og bibliotekene knyttet til programmering av Arduino

Bruk koden og bibliotekene knyttet til programmering av Arduino
Bruk koden og bibliotekene knyttet til programmering av Arduino

Last ned filen RotatingMountCode.zip. Installer Arduino IDE og pakk ut den nedlastede filen til Documents / Arduino. Sørg for at du kopierer innholdet i skisse- og biblioteksmappen min til skisse- og bibliotekmappen. Åpne ServoIRandLCD -skissen og last den opp til Arduino.

Se senere trinn for kodeforklaring.

Trinn 5: Koble ønsket strømkilde til Arduino og bruk fjernkontrollen til å rotere feste

Koble ønsket strømkilde til Arduino og bruk fjernkontrollen til å rotere feste!
Koble ønsket strømkilde til Arduino og bruk fjernkontrollen til å rotere feste!
Koble ønsket strømkilde til Arduino og bruk fjernkontrollen til å rotere feste!
Koble ønsket strømkilde til Arduino og bruk fjernkontrollen til å rotere feste!

La enten Arduino være koblet til datamaskinen eller koble den fra datamaskinen, og bruk et 9V batteri for å gi Arduino likestrøm. Til slutt, bruk en billig IR -fjernkontroll for å kontrollere servoen og derfor orienteringen til telefonfestet!

Tallet 1 på fjernkontrollen bør sette servoposisjonen til 0 grader, nummer 2 til 90 grader og nummer 3 til 180 grader. I mellomtiden bør + og - knappene på fjernkontrollen øke eller redusere servovinkelen med henholdsvis 1 grad.

Merk: Hvis du bruker en annen IR -fjernkontroll enn den som er vist her, er det mulig at IR -kodene som tilsvarer forskjellige knapper endres. I så fall må du endre ServoIRandLCD -skissen for å bruke disse IR -kodene i stedet.

Trinn 6: Les dette for forklaring av kildekoden

Les dette for kildekoden Forklaring
Les dette for kildekoden Forklaring
Les dette for forklaring på kildekoden
Les dette for forklaring på kildekoden

Kildekoden for Arduino -skissen finner du nedenfor eller i den tidligere vedlagte zip -filen. De nødvendige bibliotekene finnes bare i den tidligere vedlagte zip -filen i trinn 4.

Det første koden gjør er å inkludere de nødvendige bibliotekene som trengs for å kjøre alle funksjonene i skissen. Deretter erklærer den pin 9 på Arduino for å være PWM-aktivert signalpinne for servoen. Det gjør også pin 11 på Arduino til pin som brukes til IR -mottakeren. Deretter erklærer den en heltallsvariabel som brukes til å holde oversikt over servos posisjon i grader og setter den til 0 grader, først. Deretter instantierer den de nødvendige objektene for et IRrecv -objekt, et servoobjekt og myDisplay LCD -objekt (som også er konfigurert på samme linje), slik at disse objektene kan brukes senere.

Deretter starter oppsettfunksjonen den serielle porten med 9600 bits/sek, slik at den serielle skjermen kan brukes til å holde oversikt over servoposisjonen hvis ønskelig. Den fester også myservo -objektet til pinne 9, starter IR -mottakeren og initialiserer LCD -skjermen.

I hovedsløyfefunksjonen, hvis hoveddel bare utføres hvis en IR -overføring mottas fra IR -mottakeren, dekoder IR -mottakeren signalet som sendes til den fra IR -fjernkontrollen ved hjelp av dekodingsfunksjonen (og resultater) og deretter hvis uttalelser bestemmer hva for å sette servoen til avhengig av mottatt IR -verdi. Skrivefunksjonen brukes til å sette servoen til passende grader, og lesefunksjonen brukes til å finne servoens nåværende vinkel og øke eller redusere den etter behov.

Til slutt blir servoens nåværende vinkel sendt til både seriell skjerm og LCD -skjerm ved hjelp av myservo.read () -funksjonen, og hovedløyfene gjentar seg på ubestemt tid.

Kildekode:

#include // Arduino standardbibliotek #inkluderer // IR -bibliotek #include "Wire.h" //Wire.h for LCD (noen ganger nødvendig) #include "LiquidCrystal_I2C.h" // LCD -bibliotek

#define servopin 9 // dette definerer pinne 9 som pinnen som brukes til servokontrollledningen (oransje)

int RECV_PIN = 11; // IR fototransistor sender utgang til pin 11

int currentAngle = 0; // deklar currentAngle heltallsvariabel og sett til 0

IRrecv irrecv (RECV_PIN); // instansere et IR -mottakerobjekt dekode_resultater resultater; // instansere et dekode_resultat -objekt. Dette objektet er atskilt fra IR -mottakeren.

Servo myservo; // instantere et Servo -objekt med navnet 'myservo' // maksimalt åtte servoobjekter kan opprettes

LiquidCrystal_I2C myDisplay (0x27, 16, 2); // instansere LCD -objekt og konfigurere config

ugyldig oppsett () {

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

myservo.attach (servopin); // fester servoen på pinne 9 til servoobjektet

irrecv.enableIRIn (); // start mottakeren

myDisplay.init (); // initialiser LCD

myDisplay.backlight (); // slå på LCD -bakgrunnsbelysning

}

void loop () {

hvis (irrecv.decode (& resultater)) // hvis overføring mottatt …

{Serial.print ("mottatt IR -verdi:");

Serial.println (resultater.verdi); // visningsverdi mottatt

// tolke de mottatte kommandoene … if (results.value == 16724175) // 1 {// venstre myservo.write (0); }

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

if (results.value == 16743045) // 3 {// høyre 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 (); // Motta neste verdi

// Seriell skjermutskrift Serial.print ("Gjeldende servoposisjon:");

Serial.println (myservo.read ()); // dette henter servoposisjonen og sender den til den serielle skjermen

// LCD -utskrift myDisplay.clear ();

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

myDisplay.print (myservo.read ());

forsinkelse (200); // forsinkelse for å gjøre servoaktiveringen stabil

}

Trinn 7: Se min Youtube -video for hjelp

Se min unoterte YouTube -video som fullt ut diskuterer og demonstrerer prosjektet hvis du har spørsmål!

Anbefalt: