Sisällysluettelo:
- Vaihe 1: Rakenna infrapunavastaanotinpiiri
- Vaihe 2: Yhdistä servo, sarake ja puhelimen pidike
- Vaihe 3: Liitä LCD -näyttö servolukua varten
- Vaihe 4: Käytä koodia ja liitettyjä kirjastoja Arduinon ohjelmointiin
- Vaihe 5: Liitä haluttu virtalähde Arduinoon ja kierrä telinettä kaukosäätimellä
- Vaihe 6: Lue tämä lähdekoodin selityksestä
- Vaihe 7: Katso apua Youtube -videostani
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Tämä ohje on luotu täyttämään Etelä -Floridan yliopiston Makecourse -projektin vaatimus (www.makecourse.com).
Haluatko tehdä pyörivän puhelinkiinnityksen, jotta voit katsella puhelimesi sisältöä pysty- tai vaakasuunnassa ilman, että pidät sitä kiinni? Älä sitten katso enää.
Tämän projektin luomiseksi tarvitset:
- Arduino -mikrokontrolleri ja IDE
- USB -kaapeli koodin lataamiseen
- Leipälauta
- Hyppyjohdot
- LCD -näyttö
- Servo
- Sarake, joka voidaan kiinnittää servoon
- IR -kaukosäädin
- IR -vastaanotin
- 10 k ohmin vastus
- Kenu Airframe+ Phone Clip (tai jotain, joka pitää puhelimen paikallaan)
- 9 V: n akku kannettavalle virtalähteelle tai vain USB -käyttöinen Arduino
Vaihe 1: Rakenna infrapunavastaanotinpiiri
Hyppää ensin GND ja +5V Arduinosta leipälautasi sähkökiskoihin. Hyppää sitten 10 k ohmin vastuksesi +5 V: n virtakiskosta IR -vastaanottimen fototransistorin ulostulonappiin. Käytä seuraavaksi hyppyjohdinta liittääksesi Arduinon nastan 11 IR -vastaanottimen lähtötapista. Käytä sitten kahta hyppyjohtoa maan ja +5 V: n lähettämiseen IR -vastaanottimen vastaaviin nastoihin. Yllä olevassa kaaviossa kuvattu RC -suodatin ei ole tarpeen. Lopuksi, en tehnyt tässä vaiheessa esitettyä kaaviota, ja sen lähde on kuvassa.
Vaihe 2: Yhdistä servo, sarake ja puhelimen pidike
Käytä nyt kahta hyppyjohtoa hyppäämään maasta ja +5 V leipälevyn virtakiskoista servon ruskeisiin ja punaisiin johtoihin. Kiinnitä sitten yhdellä hyppyjohdolla Arduinon nasta 9 servon oranssiin lankaan.
Kiinnitä sitten sarake servon päähän, kuten toisessa kuvassa.
Kiinnitä lopuksi jotain, joka pitää puhelinta sarakkeessa, kuten Kenu Airframe+, kuten näkyy kolmannessa kuvassa.
Vaihe 3: Liitä LCD -näyttö servolukua varten
Hyppää maahan ja +5 V leipälevyn virtakiskoista LCD -näytön vastaaviin nastoihin. Hyppää myös SDA- ja SCL -nastat nestekidenäytöstä Ardiunoon. Arduinon SDA- ja SCL -nastat voidaan tunnistaa Arduino -levyn takaa ja ne ovat kaksi nastaa AREF: n yläpuolella ja maadoitus nastan 13 yläpuolella. SCL -tappi on korkein. Näin LCD -näyttö voi lukea nykyisen servoasennon.
Vaihe 4: Käytä koodia ja liitettyjä kirjastoja Arduinon ohjelmointiin
Lataa RotatingMountCode.zip -tiedosto. Asenna Arduino IDE ja pura ladattu tiedosto Documents / Arduino -tiedostoon. Varmista, että kopioit luonnokseni ja kirjastot -kansion sisällöt luonnoksesi ja kirjastot -kansioon. Avaa ServoIRandLCD -luonnos ja lataa se Arduinoosi.
Katso koodin selitykset myöhemmissä vaiheissa.
Vaihe 5: Liitä haluttu virtalähde Arduinoon ja kierrä telinettä kaukosäätimellä
Jätä Arduino kytkettynä tietokoneeseesi tai irrota se tietokoneesta ja käytä 9 V: n akkua toimittaaksesi Arduinolle tasavirtaa. Käytä lopuksi halpaa infrapunakaukosäädintä servon ja siten puhelinkiinnityksen suunnan ohjaamiseen!
Kaukosäätimen numeron 1 pitäisi asettaa servoasento 0 asteen, numero 2 - 90 astetta ja numero 3 - 180 astetta. Samaan aikaan kaukosäätimen + ja - painikkeiden tulee lisätä tai pienentää servokulmaa 1 aste.
Huomautus: Jos käytät erilaista IR -kaukosäädintä kuin tässä kuvassa, on mahdollista, että eri painikkeita vastaavat IR -koodit muuttuvat. Jos näin on, muokkaa ServoIRandLCD -luonnosta käyttääksesi niitä IR -koodeja.
Vaihe 6: Lue tämä lähdekoodin selityksestä
Arduino -luonnoksen lähdekoodi löytyy alta tai aiemmin liitetystä.zip -tiedostosta. Tarvittavat kirjastot löytyvät vain aiemmin liitetystä.zip -tiedostosta vaiheessa 4.
Ensimmäinen asia, jonka koodi tekee, sisältää tarvittavat kirjastot, joita tarvitaan luonnoksen kaikkien toimintojen suorittamiseen. Seuraavaksi se julistaa Arduinon nastan 9 olevan PWM-yhteensopiva signaalinappi servolle. Se tekee myös Arduinon nastasta 11 IR -vastaanottimen tapin. Seuraavaksi se ilmoittaa kokonaislukumuuttujan, jota käytetään seuraamaan servon asemaa asteina, ja asettaa sen aluksi 0 asteeseen. Sitten se luo tarvittavat objektit IRrecv -objektille, servo -objektille ja myDisplay LCD -objektille (joka on myös määritetty samalle riville), jotta näitä objekteja voidaan käyttää myöhemmin.
Seuraavaksi asetustoiminnossa sarjaportti käynnistetään nopeudella 9600 bittiä sekunnissa, joten sarjamonitoria voidaan käyttää haluttaessa servon sijainnin seurantaan. Se myös liittää myservo -objektin nastaan 9, käynnistää IR -vastaanottimen ja alustaa LCD -näytön.
Pääsilmukatoiminnossa, jonka runko suoritetaan vain, jos infrapunavastaanotin vastaanottaa IR -lähetyksen, IR -vastaanotin purkaa sille IR -kaukosäätimestä lähetetyn signaalin dekoodaustoiminnolla (& tulokset) ja sitten jos lausekkeet määrittävät mitä servon asettamiseksi vastaanotetun IR -arvon mukaan. Kirjoitustoimintoa käytetään servon asettamiseen sopiviin asteisiin, ja lukutoimintoa käytetään servon nykyisen kulman löytämiseen ja sen lisäämiseen tai vähentämiseen tarpeen mukaan.
Lopuksi servon nykyinen kulma lähetetään sekä sarjamonitorille että nestekidenäytölle myservo.read () -toiminnon avulla, ja pääsilmukat toistuvat loputtomiin.
Lähdekoodi:
#include // Arduino -vakiokirjasto #include // IR -kirjasto #Include "Wire.h" // lanka.h nestekidenäytölle (joskus tarvitaan) #include "LiquidCrystal_I2C.h" // LCD -kirjasto
#define servopin 9 // tämä määrittelee nastan 9 servo -ohjausjohdon tapiksi (oranssi)
int RECV_PIN = 11; // IR-valotransistori lähettää lähdön nastaan 11
int currentAngle = 0; // deklaroi currentAngle -kokonaislukumuuttuja ja aseta arvoksi 0
IRrecv irrecv (RECV_PIN); // hetkellistää IR -vastaanottimen objekti decode_results results; // purkaa dekoodaustulosten objekti. Tämä objekti on erillään IR -vastaanottimesta.
Servo myservo; // luodaan servo -objekti nimeltä "myservo" // enintään kahdeksan servo -objektia voidaan luoda
LiquidCrystal_I2C myDisplay (0x27, 16, 2); // instantiate LCD objekti ja setup config
void setup () {
Sarja.alku (9600); // sarjaportin aloittaminen
myservo.attach (servopin); // kiinnittää nastan 9 servon servo -objektiin
irrecv.enableIRIn (); // käynnistä vastaanotin
myDisplay.init (); // LCD: n alustaminen
myDisplay. taustavalo (); // kytke LCD -taustavalo päälle
}
void loop () {
if (irrecv.decode (& results)) // jos lähetys vastaanotettu…
{Serial.print ("IR -arvo vastaanotettu:");
Sarja.println (tulokset.arvo); // näyttöarvo vastaanotettu
// tulkita vastaanotetut komennot… if (results.value == 16724175) // 1 {// left myservo.write (0); }
if (results.value == 16718055) // 2 {// keski myservo.write (90); }
if (results.value == 16743045) // 3 {// oikea myservo.write (180); }
if (results.value == 16754775) //+ {// lisäys currentAngle = myservo.read (); myservo.write (currentAngle + 1); } if (results.value == 16769055) //- {// vähennys currentAngle = myservo.read (); myservo.write (currentAngle - 1); }}
irrecv.resume (); // Vastaanota seuraava arvo
// Sarjamonitorin tulostus Serial.print ("Nykyinen servoasento:");
Sarja.println (myservo.read ()); // tämä hakee servoasennon ja lähettää sen sarjamonitorille
// LCD -tulostus myDisplay.clear ();
myDisplay.print ("Servo deg.:");
myDisplay.print (myservo.read ());
viive (200); // viive, jotta servotoiminnasta tulee vakaa
}
Vaihe 7: Katso apua Youtube -videostani
Katso piilotettu YouTube -videoni, joka käsittelee ja esittelee projektin kokonaisuudessaan, jos sinulla on kysyttävää!