Inhoudsopgave:

Draaibare telefoonhouder - Ajarnpa
Draaibare telefoonhouder - Ajarnpa

Video: Draaibare telefoonhouder - Ajarnpa

Video: Draaibare telefoonhouder - Ajarnpa
Video: Draaibare AI-camera - Smart Shooting - Auto object - Face Tracking - Tri-pod - Telefoonhouder 2024, Juli-
Anonim
Draaibare telefoonhouder
Draaibare telefoonhouder

Deze instructable is gemaakt om te voldoen aan de projectvereiste van de Makecourse aan de University of South Florida (www.makecourse.com).

Wilt u een roterende telefoonhouder maken zodat u de inhoud van uw telefoon in staande of liggende stand kunt bekijken zonder deze vast te hoeven houden? Zoek dan niet verder.

Om dit project te maken, heb je nodig:

- Arduino Microcontroller en IDE

- USB-kabel om code te uploaden

- Broodplank

- Jumper Draden

- LCD scherm

- Servo

- Kolom die aan de servo kan worden bevestigd

- IR-afstandsbediening

- IR-ontvanger

- 10k ohm weerstand

- Kenu Airframe+ Telefoonclip (of iets om de telefoon op zijn plaats te houden)

- 9 V-batterij voor draagbare stroom of gewoon Arduino met USB-voeding

Stap 1: Bouw het IR-ontvangercircuit

Bouw het IR-ontvangercircuit
Bouw het IR-ontvangercircuit
Bouw het IR-ontvangercircuit
Bouw het IR-ontvangercircuit

Spring eerst GND en +5V van de Arduino naar de stroomrails op je breadboard. Spring vervolgens uw 10k ohm-weerstand van de +5V-voedingsrail naar de uitgangspen van uw IR-ontvanger-fototransistor. Gebruik vervolgens een jumperdraad om verbinding te maken met pin 11 op de Arduino vanaf de uitgangspin van de IR-ontvanger. Gebruik vervolgens twee jumperdraden om aarde en +5V naar de respectieve pinnen op de IR-ontvanger te sturen. Het RC-filter dat in het bovenstaande schema is afgebeeld, is niet nodig. Ten slotte heb ik het in deze stap getoonde schema niet gemaakt en de bron ervoor is aanwezig in de afbeelding.

Stap 2: Sluit de servo-, kolom- en telefoonhouder aan

Sluit de servo-, kolom- en telefoonhouder aan
Sluit de servo-, kolom- en telefoonhouder aan
Sluit de servo-, kolom- en telefoonhouder aan
Sluit de servo-, kolom- en telefoonhouder aan
Sluit de servo-, kolom- en telefoonhouder aan
Sluit de servo-, kolom- en telefoonhouder aan

Gebruik nu twee jumperdraden om van de grond en +5V van de voedingsrails van het breadboard naar respectievelijk de bruine en rode draden van de servo te springen. Gebruik vervolgens een jumperdraad om pin 9 op de Arduino aan de oranje draad van de servo te bevestigen.

Bevestig vervolgens een kolom aan de kop van de servo zoals weergegeven in de tweede afbeelding.

Bevestig ten slotte iets om de telefoon aan de kolom te houden, zoals de Kenu Airframe +, zoals weergegeven in de derde afbeelding.

Stap 3: Sluit het LCD-scherm aan voor servo-uitlezing

Sluit het LCD-scherm aan voor servo-uitlezing
Sluit het LCD-scherm aan voor servo-uitlezing

Spring grond en +5V van uw breadboard-stroomrails naar de respectieve pinnen op het LCD-scherm. Spring ook de SDA- en SCL-pinnen van het LCD-scherm naar de Ardiuno. De SDA- en SCL-pinnen van de Arduino kunnen worden geïdentificeerd vanaf de achterkant van het Arduino-bord en zijn de twee pinnen boven AREF en Ground boven pin 13. De SCL-pin is de hoogste. Hierdoor kan het LCD-scherm de huidige servopositie uitlezen.

Stap 4: Gebruik de bijgevoegde code en bibliotheken om de Arduino te programmeren

Gebruik de bijgevoegde code en bibliotheken om de Arduino te programmeren
Gebruik de bijgevoegde code en bibliotheken om de Arduino te programmeren

Download het bestand RotatingMountCode.zip. Installeer de Arduino IDE en pak het gedownloade bestand uit in Documents\Arduino. Zorg ervoor dat u de inhoud van de map Mijn schetsen en bibliotheken kopieert naar uw map met schetsen en bibliotheken. Open de ServoIRandLCD-schets en upload deze naar uw Arduino.

Zie latere stappen voor uitleg over de code.

Stap 5: Sluit de gewenste stroombron aan op Arduino en gebruik de afstandsbediening om de houder te draaien

Sluit de gewenste stroombron aan op Arduino en gebruik de afstandsbediening om de houder te draaien!
Sluit de gewenste stroombron aan op Arduino en gebruik de afstandsbediening om de houder te draaien!
Sluit de gewenste stroombron aan op Arduino en gebruik de afstandsbediening om de houder te draaien!
Sluit de gewenste stroombron aan op Arduino en gebruik de afstandsbediening om de houder te draaien!

Laat de Arduino aangesloten op uw computer of koppel hem los van uw computer en gebruik een 9V-batterij om de Arduino van gelijkstroom te voorzien. Gebruik ten slotte een goedkope IR-afstandsbediening om de servo te bedienen en dus de oriëntatie van de telefoonhouder!

Het nummer 1 op de afstandsbediening moet de servopositie instellen op 0 graden, nummer 2 op 90 graden en nummer 3 op 180 graden. Ondertussen moeten de + en - knoppen op de afstandsbediening de hoek van de servo respectievelijk met 1 graad vergroten of verkleinen.

Opmerking: als u een andere IR-afstandsbediening gebruikt dan hier afgebeeld, is het mogelijk dat de IR-codes die bij verschillende knoppen horen, zijn gewijzigd. Als dat het geval is, wijzigt u de ServoIRandLCD-schets om in plaats daarvan die IR-codes te gebruiken.

Stap 6: Lees dit voor uitleg over de broncode

Lees dit voor uitleg over de broncode
Lees dit voor uitleg over de broncode
Lees dit voor uitleg over de broncode
Lees dit voor uitleg over de broncode

De broncode voor de Arduino-schets vindt u hieronder of in het eerder bijgevoegde.zip-bestand. De benodigde bibliotheken zijn alleen te vinden in het eerder bijgevoegde.zip-bestand in stap 4.

Het eerste dat de code doet, is de benodigde bibliotheken opnemen die nodig zijn om alle functies in de schets uit te voeren. Vervolgens verklaart het pin 9 op de Arduino als de PWM-enabled signaalpin voor de servo. Het maakt ook pin 11 op de Arduino de pin die wordt gebruikt voor de IR-ontvanger. Vervolgens declareert het een integer-variabele die wordt gebruikt om de positie van de servo in graden bij te houden en stelt deze aanvankelijk in op 0 graden. Vervolgens maakt het de vereiste objecten voor een IRrecv-object, een servo-object en myDisplay LCD-object (dat ook in dezelfde regel is geconfigureerd), zodat deze objecten later kunnen worden gebruikt.

Vervolgens wordt in de setup-functie de seriële poort gestart op 9600 bits/sec, zodat de seriële monitor kan worden gebruikt om desgewenst de positie van de servo bij te houden. Het bevestigt ook het myservo-object aan pin 9, start de IR-ontvanger en initialiseert het LCD-scherm.

In de hoofdlusfunctie, waarvan de inhoud alleen wordt uitgevoerd als een IR-transmissie wordt ontvangen van de IR-ontvanger, decodeert de IR-ontvanger het signaal dat naar hem wordt verzonden vanaf de IR-afstandsbediening met behulp van de functie decoderen (&results) en vervolgens bepalen if-instructies wat om de servo in te stellen op afhankelijk van de ontvangen IR-waarde. De schrijffunctie wordt gebruikt om de servo in de juiste graden in te stellen en de leesfunctie wordt gebruikt om de huidige hoek van de servo te vinden en deze indien nodig te verhogen of te verlagen.

Ten slotte wordt de huidige hoek van de servo verzonden naar zowel de seriële monitor als het LCD-scherm met behulp van de myservo.read()-functie, en de hoofdlussen worden oneindig herhaald.

Broncode:

#include //Arduino-standaardbibliotheek#include //IR-bibliotheek #include "Wire.h" //Wire.h voor LCD (soms nodig) #include "LiquidCrystal_I2C.h" //LCD-bibliotheek

#define servopin 9 //dit definieert pin 9 als de pin die wordt gebruikt voor de servobesturingskabel (oranje)

int RECV_PIN = 11; // IR-fototransistor stuurt uitvoer naar pin 11

int stroomAngle = 0; // declareren currentAngle integer-variabele en ingesteld op 0

IRrecv irrecv(RECV_PIN); // instantiëren van een IR-ontvanger object decode_results resultaten; // maak een decode_results-object. Dit object staat los van de IR-ontvanger.

Servo-mijnservo; //maak een Servo-object met de naam 'myservo' //er kunnen maximaal acht servo-objecten worden gemaakt

LiquidCrystal_I2C mijnDisplay (0x27, 16, 2); // instanteer LCD-object en stel config in

ongeldige setup() {

Serieel.begin(9600); //start seriële poort

mijnservo.attach(servopin); // bevestigt de servo op pin 9 aan het servo-object

onrecv.enableIRIn(); //start de ontvanger

mijnDisplay.init(); // initialiseer LCD

mijnDisplay.achtergrondverlichting(); // zet LCD-achtergrondverlichting aan

}

lege lus() {

if (irrecv.decode(&results)) //if transmissie ontvangen…

{ Serial.print("IR-waarde ontvangen: ");

Serial.println(resultaten.waarde); //weergave waarde ontvangen

// interpreteer de ontvangen opdrachten … if (results.value == 16724175) //1 { // left myservo.write (0); }

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

if (results.value == 16743045) //3 { //right 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); } }

irrev.resume(); //Ontvang de volgende waarde

//Seriële monitor print Serial.print ("Huidige servopositie: ");

Serial.println(myservo.read()); // dit haalt de servopositie op en stuurt deze naar de seriële monitor

//LCD print myDisplay.clear();

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

mijnDisplay.print(myservo.read());

vertraging (200); // vertraging om servo-aansturing stabiel te maken

}

Stap 7: Bekijk mijn YouTube-video voor hulp

Bekijk mijn niet-vermelde YouTube-video die het project volledig bespreekt en demonstreert als je vragen hebt!

Aanbevolen: