Innholdsfortegnelse:
- Trinn 1: Bygg IR -mottakerkretsen
- Trinn 2: Koble til servoen, kolonnen og telefonholderen
- Trinn 3: Koble til LCD -skjermen for servoavlesning
- Trinn 4: Bruk koden og bibliotekene knyttet til programmering av Arduino
- Trinn 5: Koble ønsket strømkilde til Arduino og bruk fjernkontrollen til å rotere feste
- Trinn 6: Les dette for forklaring av kildekoden
- Trinn 7: Se min Youtube -video for hjelp
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
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
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
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
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
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
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
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!