Tartalomjegyzék:
- 1. lépés: Regisztrációs címek meghatározása
- 2. lépés: Tömbök és globális változók
- 3. lépés: A "serial.begin" függvény
- 4. lépés: A "serial.available" függvény
- 5. lépés: A "serial.read" függvény
- 6. lépés: A "serial.write" függvény
- 7. lépés: A beállítási funkció
- 8. lépés: A hurok és az ISR funkciók
- 9. lépés: huzalozás
- 10. lépés: Összerakni
Videó: Arduino hanggenerátor könyvtár vagy soros funkciók nélkül (megszakításokkal): 10 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
Általában nem ez az, amiből oktathatóvá tenném, inkább a fémmegmunkálást részesítem előnyben, de mivel villamosmérnök hallgató vagyok, és mikrokontrollereken kell részt vennem (beágyazott rendszerek tervezése), gondoltam, megtanítok egy az egyik projektem. Amikor eredetileg elkészítettem a projektet és másokat ehhez az osztályhoz, azt tapasztaltam, hogy nagyon kevés olyan oktatóanyag létezik, amelyek nem használják az arduino könyvtár funkcióit vagy a soros funkciókat, ami egy másik ok, amiért azt gondoltam, hogy ez jó oktatható lenne.
Ezt a kódot az Atmega 2560 mikrokontrollerhez tervezték, így ha egy másik fórumon kívánja megvalósítani, meg kell változtatnia a címjegyzékeket a kódban a vezérlő felhasználói kézikönyve alapján. A kód alapgondolata az, hogy amikor a billentyűzeten billentyűt ír be a soros monitorba, az arduino mega egy bizonyos frekvenciát ad ki a gomb megnyomása alapján, és a "q" visszaállítja azt. Úgy csináltam, hogy az "a" az A lapos frekvenciát adja ki, az "A" pedig az A éles frekvenciát, a "b" a B lapos, a "c" a C lapos, a "C" a C éles stb. A teljes kódot a végén töltik fel, de minden lépés darabokra bontja a kódot, így könnyebb elmagyarázni.
1. lépés: Regisztrációs címek meghatározása
Ez a lépés egyszerű, ha az atmega 2560 -at használja, akkor csak azokat a címeket kell használnia, amelyeket használtam, bár ha más chipet használó táblát használ, akkor meg kell találnia a nyilvántartások mindegyikének címét a chipek felhasználói kézikönyve. A fenti definíciók csak konstansok, amelyeket a későbbiekben a funkcióinkhoz használunk. A címeket ingadozó előjel nélküliként adjuk meg, mert nem akarjuk, hogy a fordító összezavarja őket.
2. lépés: Tömbök és globális változók
Itt meg akarjuk határozni a frekvencia tömböt, amely tartalmazza az összes frekvenciát, amelyet az egyes kulcsoknak ki kell adniuk. Ezeket az értékeket a tényleges hangfrekvenciákból számítják ki, és őszintén szólva elfelejtettem, hogyan kaptam őket, de ezek a megfelelő értékek, mivel oszcilloszkóppal teszteltem őket. Meghatározzuk a jegyzetek tömbjét is, amely tartalmazza az egyes hangokhoz tartozó összes billentyűt, valamint a későbbi funkcióinkhoz szükséges változókat.
3. lépés: A "serial.begin" függvény
A "serial.begin" függvényt replikáló egyéni függvényünket U0init () -nak hívjuk. A kívánt átviteli sebességet veszi fel bemenetként, és elindítja a soros portot ezen az átviteli sebességnél.
4. lépés: A "serial.available" függvény
A "serial.available" utánzó függvényt U0kbhit () -nek hívjuk. Nem vesz igénybe bemenetet, hanem észleli, hogy történt -e módosítás a billentyűzeten az RDA állapotbit használatával, és igaz értéket ad vissza, ha változást észlel.
5. lépés: A "serial.read" függvény
A "serial.read" függvényt utánzó függvényt U0getchar () -nak hívjuk, amely nem vesz be és nem ad ki semmilyen változtatást a billentyűzeten, amelyet az UDR0 regiszter tárol.
6. lépés: A "serial.write" függvény
A "serial.write" -et utánzó függvényt U0putchar () -nak hívjuk, amely az UDR0 -regiszterből veszi az adatokat, miközben a változást észleli és tárolja, és a kimenetek visszatérnek a soros monitorra.
7. lépés: A beállítási funkció
Ez az alapvető beállítási funkció, amely a "serial.begin" utánzatunkat használja a soros port inicializálásához, és inicializálja az időzítő regiszterek bitbeállításait, és beállítja a PB6 -ot a hangjaink kiadására.
8. lépés: A hurok és az ISR funkciók
A ciklus így működik: ha a "serial.available" funkcióval változást észlelünk, akkor a "serial.read" függvény tárolja a változást, és a "serial.write" funkciónk ezt a változást a soros monitorba helyezi. Amíg az i változó kisebb, mint a frekvencia tömb mérete, addig a kimenetet az i pozíciónak fogja beállítani az adott tömbben, és a frekvenciát az adott pozícióban adja ki. Az ISR visszaállításként működik, ahol ha a frekvencia tömb pozíciója nem egyenlő 0 -val (más szóval, ha a "q" nincs megnyomva), akkor a frekvenciát adja ki, de a "q" megnyomásakor alaphelyzetbe áll. Kérjük, vegye figyelembe: ez a kód megszakításokat használ, de megszakításokkal is megtehető. Megszakítás nélkül közzéteszem a kódot, ha bármilyen kérést kapok rá, csak azt hiszem, hogy a megszakítás verzió szórakoztatóbb.
9. lépés: huzalozás
Ennek a kódnak a bekötése rendkívül egyszerű, egyszerűen helyezzen egy kimeneti vezetéket a PB6 -ról egy kenyérsütő táblára, csatlakoztasson ezzel egy hangjelzőt vagy hangszórót, és csatlakoztassa vissza a földhöz. Megjegyzés: ha hangszórót használ, tegyen egy kis ellenállást a hangszóró elé. Ha csak látni szeretné a kimenetet, de nem hallani, csatlakoztassa a PB6 -ot az oszcilloszkóp piros vezetékéhez és a fekete vezetéket a földhöz.
10. lépés: Összerakni
Hozzáadtam a teljes kódot ehhez a lépéshez, mivel az összes lépést elmagyaráztam az előző lépésekben. Csak billentyűzet -bemenetre van szükség a különböző frekvenciákhoz, és kimeneteket ad ki a PB6 -ra. Remélem, élvezte, hogy az IDE -vel más módon kódolhat!
Ezenkívül kérjük, szavazzon erre a mikrokontroller versenyen: D
Ajánlott:
Arduino programozása másik Arduino használatával görgetett szöveg megjelenítéséhez könyvtár nélkül: 5 lépés
Arduino programozása Egy másik Arduino használatával görgethető szöveg megjelenítéséhez könyvtár nélkül: A Sony Spresense vagy az Arduino Uno nem olyan drága, és nem igényel sok energiát. Ha azonban a projektben korlátozottak a teljesítmény, a hely vagy a költségvetés, érdemes megfontolni az Arduino Pro Mini használatát. Az Arduino Pro Micro -tól eltérően az Arduino Pro Mi
RC5 távirányító protokoll dekódoló könyvtár nélkül: 4 lépés
RC5 távirányító protokoll dekódoló könyvtár nélkül: az rc5 dekódolása előtt először megbeszéljük, hogy mi az rc5 parancs és mi a felépítése. Tehát alapvetően az rc5 parancsot használják a távvezérlőkben, amelyeket televíziókban, cd -lejátszókban, d2h -ben, házimozi -rendszerekben stb. használnak. 13 vagy 14 bit van elrendezve egy
Futás képernyő / kijelző nélkül (fej nélkül) Raspberry Pi vagy más Linux / unix alapú számítógépeken: 6 lépés
Futás képernyő / kijelző nélkül (fej nélkül) Raspberry Pi vagy más Linux / unix alapú számítógépeken: Amikor a legtöbb ember Raspberry PI -t vásárol, úgy gondolja, hogy szüksége van egy számítógép képernyőjére. Ne pazarolja a pénzt felesleges számítógép -monitorokra és billentyűzetekre. Ne pazarolja az idejét billentyűzetek és monitorok számítógépek közötti mozgatására. Ne kösse össze a TV -t, ha nem
Arduino Hall Effect érzékelő megszakításokkal: 4 lépés
Arduino Hall Effect Sensor megszakításokkal: Szia mindenkinek, ma megmutatom, hogyan csatlakoztathat hall -effektus -érzékelőt egy Arduino -hoz, és megszakítással használhatja. A videóban használt eszközök és anyagok (Társult linkek): Arduino Uno: http : //s.click.aliexpress.com/e/biNyW0zKHall effekt érzékelők: h
Nulla költségű laptop hűtő / állvány (ragasztó nélkül, fúrás nélkül, anyák és csavarok nélkül, csavarok nélkül): 3 lépés
Zero Cost laptop hűtő / állvány (ragasztó nélkül, fúrás nélkül, anyák és csavarok nélkül, csavarok nélkül): FRISSÍTÉS: KÉRJÜK KINDLY SZAVAZZON BELÉPÉS A www.instructables.com/id/Zero-Cost-Aluminium-Furnace-No-Propane-No-Glue-/ VAGY LEHET SZAVAZNI A LEGJOBB BARÁTOMRA