Innehållsförteckning:
- Steg 1: Bygg IR -mottagarkretsen
- Steg 2: Anslut servo, kolumn och telefonhållare
- Steg 3: Anslut LCD -skärmen för Servoavläsning
- Steg 4: Använd koden och biblioteken som är kopplade för att programmera Arduino
- Steg 5: Anslut önskad strömkälla till Arduino och använd fjärrkontrollen för att rotera fästet
- Steg 6: Läs detta för källkodförklaring
- Steg 7: Titta på min Youtube -video för hjälp
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Denna instruerbara skapades för att uppfylla projektkravet för Makecourse vid University of South Florida (www.makecourse.com).
Vill du göra en roterande telefonfäste så att du kan se telefonens innehåll i stående eller liggande riktning utan att behöva hålla den? Titta då inte längre.
För att skapa detta projekt behöver du:
- Arduino mikrokontroller och IDE
- USB -kabel för att ladda upp kod
- Brödbräda
- Tröjor
- LCD skärm
- Servo
- Kolumn som kan fästas på servon
- IR -fjärrkontroll
- IR -mottagare
- 10k ohm motstånd
- Kenu Airframe+ Phone Clip (eller något för att hålla telefonen på plats)
- 9 V batteri för bärbar ström eller bara USB -driven Arduino
Steg 1: Bygg IR -mottagarkretsen
Hoppa först GND och +5V från Arduino till kraftskenorna på din brödbräda. Hoppa sedan ditt 10k ohm motstånd från +5V kraftskena till utgångsstiften på din IR -mottagares fototransistor. Använd sedan en bygelkabel för att ansluta till stift 11 på Arduino från utgångsstiften på IR -mottagaren. Använd sedan två bygelkablar för att skicka mark och +5V till respektive stift på IR -mottagaren. RC -filtret som visas i schemat ovan är inte nödvändigt. Slutligen gjorde jag inte schemat som visas i detta steg, och källan till det finns i bilden.
Steg 2: Anslut servo, kolumn och telefonhållare
Använd nu två bygeltrådar för att hoppa från marken och +5V av brädbrädans kraftskenor i de bruna respektive röda trådarna på servon. Använd sedan en bygelkabel för att fästa stift 9 på Arduino på servoens orange tråd.
Fäst sedan en kolumn på servohuvudet som visas på den andra bilden.
Slutligen fäst något för att hålla telefonen i kolumnen, som Kenu Airframe+, som visas på den tredje bilden.
Steg 3: Anslut LCD -skärmen för Servoavläsning
Hoppa marken och +5V från dina bräda brädans kraftskenor till respektive stift på LCD -skärmen. Hoppa också SDA- och SCL -stiften från LCD -skärmen till Ardiuno. Arduinos SDA- och SCL -stift kan identifieras från baksidan av Arduino -kortet och är de två stiften ovanför AREF och marken ovanför stift 13. SCL -stiften är den högsta. Detta gör att LCD -skärmen kan läsa av den aktuella servopositionen.
Steg 4: Använd koden och biblioteken som är kopplade för att programmera Arduino
Ladda ner filen RotatingMountCode.zip. Installera Arduino IDE och packa upp den nedladdade filen till Documents / Arduino. Se till att du kopierar innehållet i mappen skisser och bibliotek till mappen skisser och bibliotek. Öppna ServoIRandLCD -skissen och ladda upp den till din Arduino.
Se senare steg för kodförklaring.
Steg 5: Anslut önskad strömkälla till Arduino och använd fjärrkontrollen för att rotera fästet
Låt antingen Arduino vara ansluten till din dator eller koppla ur den från datorn och använd ett 9V batteri för att ge Arduino likström. Slutligen, använd en billig IR -fjärrkontroll för att styra servon och därför telefonfästets orientering!
Nummer 1 på fjärrkontrollen bör ställa in servopositionen till 0 grader, nummer 2 till 90 grader och nummer 3 till 180 grader. Samtidigt bör + och - knapparna på fjärrkontrollen öka eller minska servos vinkel med 1 grad, respektive.
Obs! Om du använder en annan IR -fjärrkontroll än den som visas här är det möjligt att IR -koder som motsvarar olika knappar ändras. Om så är fallet, ändra ServoIRandLCD -skissen för att använda dessa IR -koder istället.
Steg 6: Läs detta för källkodförklaring
Källkoden för Arduino -skissen finns nedan eller i den tidigare bifogade zip -filen. De nödvändiga biblioteken kan bara hittas i den tidigare bifogade zip -filen i steg 4.
Det första koden gör är att inkludera nödvändiga bibliotek som behövs för att köra alla funktioner i skissen. Därefter förklarar den stift 9 på Arduino att vara PWM-aktiverad signalstift för servon. Det gör också stift 11 på Arduino till stiftet som används för IR -mottagaren. Därefter deklarerar den en heltalsvariabel som används för att hålla reda på servos position i grader och ställer in den till 0 grader, till en början. Sedan instansierar den de nödvändiga objekten för ett IRrecv -objekt, ett servoobjekt och myDisplay LCD -objekt (som också är konfigurerat på samma rad) så att dessa objekt kan användas senare.
I installationsfunktionen startas därefter den seriella porten med 9600 bitar/sek så att seriell bildskärm kan användas för att hålla reda på servos position om så önskas. Det fäster också myservo -objektet till stift 9, startar IR -mottagaren och initierar LCD -skärmen.
I huvudslingfunktionen, vars kropp endast utförs om en IR -överföring tas emot från IR -mottagaren, avkodar IR -mottagaren signalen som skickas till den från IR -fjärrkontrollen med hjälp av avkodningsfunktionen (& resultat) och sedan om uttalanden avgör vad för att ställa in servon till beroende på det mottagna IR -värdet. Skrivfunktionen används för att ställa in servon i lämpliga grader, och läsfunktionen används för att hitta den aktuella vinkeln på servon och öka eller minska den efter behov.
Slutligen skickas servos nuvarande vinkel till både seriell bildskärm och LCD -skärm med funktionen myservo.read (), och huvudslingorna upprepas på obestämd tid.
Källkod:
#inkludera // Arduino standardbibliotek #inkludera // IR -bibliotek #inkludera "Wire.h" //Wire.h för LCD (ibland behövs) #inkludera "LiquidCrystal_I2C.h" // LCD -bibliotek
#define servopin 9 // detta definierar stift 9 som stiftet som används för servokontrollkabeln (orange)
int RECV_PIN = 11; // IR-fototransistor skickar utmatning till stift 11
int currentAngle = 0; // deklarera currentAngles heltalsvariabel och ställ in på 0
IRrecv irrecv (RECV_PIN); // instansera ett IR -mottagarobjekt avkodningsresultat; // instansiera ett avkodningsresultat -objekt. Detta objekt är separat från IR -mottagaren.
Servo myservo; // instansiera ett Servo -objekt med namnet 'myservo' // maximalt åtta servoobjekt kan skapas
LiquidCrystal_I2C myDisplay (0x27, 16, 2); // instansera LCD -objekt och konfigurera konfigur
void setup () {
Serial.begin (9600); // starta seriell port
myservo.attach (servopin); // fäster servon på stift 9 på servoobjektet
irrecv.enableIRIn (); // starta mottagaren
myDisplay.init (); // initiera LCD
myDisplay.backlight (); // Slå på LCD -bakgrundsbelysning
}
void loop () {
if (irrecv.decode (& resultat)) // om överföring mottogs …
{Serial.print ("IR -värde mottaget:");
Serial.println (resultat.värde); // visat värde mottaget
// tolka de mottagna kommandona … if (results.value == 16724175) // 1 {// vänster myservo.write (0); }
if (results.value == 16718055) // 2 {// mitt myservo.write (90); }
if (results.value == 16743045) // 3 {// höger 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 (); // Få nästa värde
// Seriell bildskärmsutskrift Serial.print ("Aktuell servoposition:");
Serial.println (myservo.read ()); // detta hämtar servopositionen och skickar den till den seriella bildskärmen
// LCD -utskrift myDisplay.clear ();
myDisplay.print ("Servo deg.:");
myDisplay.print (myservo.read ());
fördröjning (200); // fördröjning för att göra servostyrningen stabil
}
Steg 7: Titta på min Youtube -video för hjälp
Se min olistade YouTube -video som helt diskuterar och demonstrerar projektet om du har några frågor!