Tartalomjegyzék:
- Kellékek
- 1. lépés: A magánhangzók játékának fejlesztése az Arduino segítségével
- 2. lépés:
- 3. lépés:
- 4. lépés: A projektötlet
- 5. lépés:
- 6. lépés: A játék programozási logikájának felépítése
- 7. lépés:
- 8. lépés:
- 9. lépés: Az üresség beállítása () függvény
- 10. lépés: A fő funkció üres hurok ()
- 11. lépés:
- 12. lépés: Következtetés
- 13. lépés: Nyugtázás
Videó: Magánhangzók játék Arduino és YX5300 MP3 Catalex modullal: 13 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
El tudja olvasni ezt a kérdést? Ez fura! Szándékosan tettem fel ezt a kérdést. Ha el tudja olvasni ezt a szöveget, az azért van, mert ismeri a teljes ábécét, és természetesen megtanult minden magánhangzót.
A magánhangzók minden szóban jelen vannak. Lehetetlen menekülni mindegyikük elől. Most hadd tegyek fel egy kérdést. A gyerekkori tanulás szórakoztató volt és technológiai erőforrásokkal járt?
Biztos vagyok benne, hogy a tanulási források kevések voltak, és hagyományos módszerekkel tanulta meg a magánhangzókat és az ábécét.
Végül is lehetséges -e valamilyen technológiai erőforrást használni a magánhangzók tanulására?
Ebben a cikkben megtanítlak arra, hogyan tanítsd tanulóidnak és gyermekeidnek a magánhangzókat egy játék segítségével.
Megtanítom, hogyan hozzon létre egy hangos rendszert, ahol gyermeke/tanítványa hallja a betű hangját, és meg kell nyomnia egy gombot a helyes betű jelzésére.
Így játék közben tanulnak, és mindig motiváltak lesznek a tanulásra.
Most megmutatom nektek a lépésről lépésre a saját játék létrehozásának folyamatát, és megtanítom a magánhangzókat a gyerekeknek.
Kellékek
JLCPCB nyomtatott áramkör
Arduino Uno
Nyomógombos kapcsoló
10kR ellenállás
Férfi fej 2, 54 mm 1x7
1. lépés: A magánhangzók játékának fejlesztése az Arduino segítségével
A játék szíve a magánhangzók JLCPCB nyomtatott áramköri lapja. Elérheti ezt a linket, és letöltheti a projektfájlokat. 5 gombja van. Minden gombot használni fog egy magánhangzó ábrázolásához, és az Arduino -hoz csatlakoztatja.
A nyomtatott áramköri lap az 1. ábrán látható.
2. lépés:
Ezzel a NYÁK -projekttel összekapcsolhatja az Arduino -val, és létrehozhatja játékát. Ezután kínálok Önnek egy elektronikus vázlatot, amellyel összeszerelheti vagy felépítheti a projektet a protoboardon.
3. lépés:
Ebből a vázlatból állítottuk be az elektronikus kártya elrendezését. A 2. ábrán látható, és letöltheti a fájlokat, és elkészítheti a projektet.
Válasszon 5 tűt az Arduino -ból, és csatlakoztassa a táblán lévő ugrókat az Arduino -hoz. Vagy különben összeállíthatja az alábbi elektronikus diagramot.
4. lépés: A projektötlet
Megtanítom, hogyan kell MP3 hangrendszert összeállítani Arduino segítségével. Ez a rendszer lesz felelős a betűt beszélő hang reprodukálásáért. Az egyes betűk hangját 1 -től 5 -ig kell rajzolni, ahol 1 A -t és 5 U -t jelent.
Így amikor a gyermek meghallja a hangot, meg kell néznie a billentyűzetet, fel kell ismernie a magánhangzó helyesírását, és meg kell nyomnia a megfelelő gombot.
Ha nem sikerül, a rendszer háromszor felvillan a piros LED -et. Ellenkező esetben a rendszer 5 másodpercre bekapcsol egy hangjelzőt, és új magánhangzót rajzol.
Ehhez össze kell állítania a következő áramkört.
Ebben az áramkörben összekapcsolja az MP3 modult és az Arduino magánhangzó tábláját. A Bluetooth modult a Catalex MP3 modul képviseletére használták.
Az Arduino feladata lesz az 5 szám rendezése, majd a parancs küldése a rajzolt magánhangzó aktiválásához
5. lépés:
Ezt követően megvárjuk, amíg a gyermek meghallja és megnyom egy gombot, amint az a fenti ábrán látható.
Minden fenti gomb az ábécé magánhangzóját jelöli. Ezután megmutatom, hogyan építi fel a programozási logikát ehhez a projekthez.
6. lépés: A játék programozási logikájának felépítése
A magánhangzó játékrendszer az YX5300 modul működésén alapul. Ennek a modulnak van néhány funkciója, azonban a játék működési struktúrájának bemutatására összpontosítunk az YX5300 modul fő funkcióin keresztül.
Az alábbiakban bemutatom a projekt összes programozási logikáját.
7. lépés:
A következőkben lépésről lépésre elmagyarázom ennek a szórakoztató, gyerekeknek szóló játéknak a logikáját.
#befoglalni
#define ARDUINO_RX 5 // csatlakozzon a soros MP3 lejátszó modul TX -jéhez #define ARDUINO_TX 6 // csatlakozzon a SoftwareSerial mp3 modul RX -hez (ARDUINO_RX, ARDUINO_TX); static int8_t Send_buf [8] = {0}; // Puffer küldési parancsokhoz. // LOCALY JOBB statikus uint8_t ansbuf [10] = {0}; // Puffer a válaszokhoz. // LOCALY JOBB String mp3Answer; // Válasz az MP3 -ból. String válasz (void); Karakterlánc sbyte2hex (uint8_t b); / ************ Parancsbájt *************************/ #define CMD_NEXT_SONG 0X01 // Lejátszás következő dal. #define CMD_PREV_SONG 0X02 // Az előző dal lejátszása. #define CMD_PLAY_W_INDEX 0X03 #define CMD_VOLUME_UP 0X04 #define CMD_VOLUME_DOWN 0X05 #define CMD_SET_VOLUME 0X06 #define CMD_SNG_CYCL_PLAY 0X08 // Single Cycle Play. #define CMD_SEL_DEV 0X09 #define CMD_SLEEP_MODE 0X0A #define CMD_WAKE_UP 0X0B #define CMD_RESET 0X0C #define CMD_PLAY 0X0D #define CMD_PAUSE 0X0E #define CMD_PLAY_FOLDER_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FOLD_FILE_FILTER_FI #define CMD_FOLDER_CYCLE 0X17 #define CMD_SHUFFLE_PLAY 0x18 // #define CMD_SET_SNGL_CYCL 0X19 // Egy ciklus beállítása. #define CMD_SET_DAC 0X1A #define DAC_ON 0x00 #define DAC_OFF 0x01 #define CMD_PLAY_W_VOL 0X22 #define CMD_PLAYING_N 0x4C #define CMD_QUERY_STATUS 0x42 #define CMD_QUERY_VOLUME 0x43 #define CMD_QUERY_FLDR_TRACKS 0x4e #define CMD_QUERY_TOT_TRACKS 0x48 #define CMD_QUERY_FLDR_COUNT 0x4f / ********* *** Opciók *************************** / #define DEV_TF 0X02 / ************** ************************************************** *****/ int numero; byte estado; bájtzümmögő = 2; byte pin = 0; byte SortNumber = 0; bool gomb = 0; void setup () {Serial.begin (9600); mp3. kezdet (9600); késleltetés (500); for (pin = 8; 13 pin) {pin = 8; } Serial.println ("Varrendo …"); Serial.println (pin); // delay (1000); } while (gomb! = 1); Serial.println ("Saiu…"); if (gomb == 1 && (pin-1)! = SortNumber) {sendCommand (0x03, 0, 6); késleltetés (3000); } if (gomb == 1 && (pin-1) == Rendezési szám) {sendCommand (0x03, 0, 7); késleltetés (3000); } // Ellenőrizze a választ. if (mp3.available ()) {Serial.println (decodeMP3Answer ()); } késleltetés (100); //Serial.println("Tocando musica … "); } /************************************************ ******************************** / /*SendMP3Command parancs: keressen egy "c" parancsot és küldje el MP3 -ra * / /*Paraméter: c. Az MP3 parancs kódja, „h” segítségért. *// *Vissza: void */ void sendMP3Command (char c) {switch (c) {case '?': Case 'h': Serial.println ("HELP"); Serial.println ("p = Lejátszás"); Serial.println ("P = Szünet"); Serial.println ("> = Következő"); Serial.println ("': Serial.println (" Következő "); sendCommand (CMD_NEXT_SONG); sendCommand (CMD_PLAYING_N); // kérdezze meg a lejátszott fájl számát szünet; tok" Memóriakártya behelyezve. "; Break; case 0x3D: decodedMP3Answer + = " -> Befejezett lejátszási szám" + String (ansbuf [6], DEC); // sendCommand (CMD_NEXT_SONG); // sendCommand (CMD_PLAYING_N); // kérdezze meg a lejátszott fájlok számát szünet; eset 0x40: decodedMP3Answer += " -> Hiba"; break; case 0x41: decodedMP3Answer += " -> Az adatok helyesen visszaállítva."; break; case 0x42: decodedMP3Answer += " -> Állapot lejátszása:" +String (ansbuf [6], DEC); break; case 0x48: decodedMP3Answer + = " -> Fájlok száma:" + String (ansbuf [6], DEC); break; case 0x4C: decodedMP3Answer + = " -> Lejátszás:" + String (ansbuf [6], DEC); break; case 0x4E: decodedMP3Answer + = " -> Mappafájlok száma:" + String (ansbuf [6], DEC); break; case 0x4F: decodedMP3Answer + = " -> Mappaszám:" + String (ansbuf [6], DEC); break;} return dekódolt MP3Válasz;} /********************************** ************ ********************************* / / Funkció: Parancs küldése az MP3 -ra* / /*Paraméter: bájt parancs *// *Paraméter: bájt dat1 paraméter a parancshoz *// *Paraméter: bájt dat2 paraméter a parancshoz */ void sendCommand (bájt parancs) {sendCommand (parancs, 0, 0); } void sendCommand (bájt parancs, bájt dat1, bájt dat2) {delay (20); Send_buf [0] = 0x7E; // Küldés_buf [1] = 0xFF; // Küldés_buf [2] = 0x06; // Len Send_buf [3] = parancs; // Küldés_buf [4] = 0x01; // 0x00 NEM, 0x01 visszajelzés Send_buf [5] = dat1; // datah Send_buf [6] = dat2; // datal Send_buf [7] = 0xEF; // Serial.print ("Küldés:"); for (uint8_t i = 0; i <8; i ++) {mp3.write (Send_buf ); Serial.print (sbyte2hex (Send_buf ))); } Sorozat.println (); } /************************************************ ******************************** / /*Funkció: sbyte2hex. Bájtadatokat ad vissza HEX formátumban. * / /*Paraméter:- uint8_t b. Bájt HEX formátumra konvertáláshoz. *// *Return: String */ String sbyte2hex (uint8_t b) {String shex; héj = "0X"; ha (b <16) hatszög += "0"; hatszög += Karakterlánc (b, HEX); hatszög += ""; visszatérő hatszög; } /************************************************ ******************************** / /*Funkció: shex2int. Intet ad vissza egy HEX karakterláncból. * / /*Paraméter: s. char *s HEX -re konvertálni. * / /*Paraméter: n. char *s hossza. *// *Vissza: int */ int shex2int (char *s, int n) {int r = 0; mert (int i = 0; i = '0' && s = 'A' && s <= 'F') {r *= 16; r + = (s - 'A') + 10; }} return r; } /************************************************ ******************************** / /*Funkció: válasz. String választ ad vissza az mp3 UART modulból. * / /*Paraméter:- uint8_t b. üres. * / /*Vissza: karakterlánc. Ha a válasz jól megfogalmazott válasz. */ String sanswer (void) {uint8_t i = 0; String mp3answer = ""; // Csak 10 bájt lekérése, miközben (mp3.available () && (i <10)) {uint8_t b = mp3.read (); ansbuf = b; i ++; mp3 válasz> +sbyte2hex (b); } // ha a válasz formátuma helyes. if ((ansbuf [0] == 0x7E) && (ansbuf [9] == 0xEF)) {return mp3answer; } return "???:" + mp3answer; }
Először definiáljuk az YX5300 modul összes programváltozóját és hozzáférési nyilvántartási címét.
#befoglalni
#define ARDUINO_RX 5 // csatlakozzon a soros MP3 lejátszó modul TX -jéhez #define ARDUINO_TX 6 // csatlakozzon a SoftwareSerial mp3 modul RX -hez (ARDUINO_RX, ARDUINO_TX); static int8_t Send_buf [8] = {0}; // Puffer küldési parancsokhoz. // LOCALY JOBB statikus uint8_t ansbuf [10] = {0}; // Puffer a válaszokhoz. // LOCALY JOBB String mp3Answer; // Válasz az MP3 -ból. String válasz (void); Karakterlánc sbyte2hex (uint8_t b); / ************ Parancsbájt *************************/ #define CMD_NEXT_SONG 0X01 // Lejátszás következő dal. #define CMD_PREV_SONG 0X02 // Az előző dal lejátszása. #define CMD_PLAY_W_INDEX 0X03 #define CMD_VOLUME_UP 0X04 #define CMD_VOLUME_DOWN 0X05 #define CMD_SET_VOLUME 0X06 #define CMD_SNG_CYCL_PLAY 0X08 // Single Cycle Play. #define CMD_SEL_DEV 0X09 #define CMD_SLEEP_MODE 0X0A #define CMD_WAKE_UP 0X0B #define CMD_RESET 0X0C #define CMD_PLAY 0X0D #define CMD_PAUSE 0X0E #define CMD_PLAY_FOLDER_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FILE_FOLD_FILE_FILTER_FI #define CMD_FOLDER_CYCLE 0X17 #define CMD_SHUFFLE_PLAY 0x18 // #define CMD_SET_SNGL_CYCL 0X19 // Egy ciklus beállítása. #define CMD_SET_DAC 0X1A #define DAC_ON 0x00 #define DAC_OFF 0x01 #define CMD_PLAY_W_VOL 0X22 #define CMD_PLAYING_N 0x4C #define CMD_QUERY_STATUS 0x42 #define CMD_QUERY_VOLUME 0x43 #define CMD_QUERY_FLDR_TRACKS 0x4e #define CMD_QUERY_TOT_TRACKS 0x48 #define CMD_QUERY_FLDR_COUNT 0x4f / ********* *** Opciók *************************** / #define DEV_TF 0X02 / ************** ************************************************** *****/ int numero; byte estado; bájtzümmögő = 2; byte pin = 0; byte SortNumber = 0; bool gomb = 0;
8. lépés:
Ezek a regisztercímek a modul működésének konfigurálására szolgálnak. Lásd például ezt a regisztrációs címet alább.
#define CMD_PLAY_W_INDEX 0X03
A 0x03 cím CMD_PLAY_W_INDEX névvel van definiálva. Arra szolgál, hogy egy számot a számából indítson el, azaz adja meg a hang számát, és lejátszásra kerül.
Ezekkel az értékekkel fogjuk használni és konfigurálni a projektünk működését.
Miután meghatározta a használni kívánt különböző címeket, belépünk a beállítási funkcióba, és konfiguráljuk a projektünkhöz tartozó csapokat és soros kommunikációt.
9. lépés: Az üresség beállítása () függvény
Ezután nézze meg az üresség beállítási funkciót. Elvégeztem a gombcsapok összes beállítását, az MP3 modul soros kommunikációját és a kártya modul inicializálását az MP3 -ban.
üres beállítás ()
{Serial.begin (9600); mp3. kezdet (9600); késleltetés (500); for (pin = 8; pin <13; pin ++) {pinMode (pin, INPUT); } sendCommand (CMD_SEL_DEV, 0, DEV_TF); késleltetés (500); }
Elindítottam a soros kommunikációt, hogy adatokat nyomtassak a számítógép sorosra, majd elkezdtük a soros kommunikációt az mp3 objektumon keresztül.
Sorozat.kezdet (9600);
mp3. kezdet (9600); késleltetés (500);
Az mp3 modult az Arduino sorozat által kapott parancsok vezérlik. Ebben a folyamatban a SoftwareSerial könyvtárat használtuk, és sorozatot emuláltunk az Arduino digitális tüskéin.
Így az Arduino segítségével vezérelheti az MP3 modult a hozzá küldött parancsok segítségével.
Ezenkívül elvégeztük a digitális tűk konfigurálását és az MP3 kártya modul inicializálását
for (pin = 8; pin <13; pin ++) {pinMode (pin, INPUT); } sendCommand (CMD_SEL_DEV, 0, DEV_TF); késleltetés (500);
A konfiguráció elvégzése után el kell mennünk a void loop funkció fő logikájához.
10. lépés: A fő funkció üres hurok ()
A kód nagyon egyszerű, és a teljes logikai felépítést az alábbiakban mutatjuk be. A következőkben elmagyarázom Önnek a fő funkció teljes logikáját.
üres hurok ()
{pin = 8; randomSeed (analogRead (A0)); numero = véletlenszerű (8, 12); Rendezési szám = szám; numero = numero - 7; Serial.println (numero); sendCommand (0x03, 0, numero); késleltetés (1000); do {gomb = digitalRead (pin); Serial.println (gomb); pin ++; if (pin> 13) {pin = 8; } Serial.println ("Varrendo …"); Serial.println (pin); // delay (1000); } while (gomb! = 1); Serial.println ("Saiu…"); if (gomb == 1 && (pin-1)! = SortNumber) {sendCommand (0x03, 0, 6); késleltetés (3000); } if (gomb == 1 && (pin-1) == Rendezési szám) {sendCommand (0x03, 0, 7); késleltetés (3000); } // Ellenőrizze a választ. if (mp3.available ()) {Serial.println (decodeMP3Answer ()); } késleltetés (100); //Serial.println("Tocando musica … "); }
A hurok funkcióciklus minden indításakor új értéket generálunk 8 és 12 között a magánhangzó hangjának létrehozásához. A 8 és 12 közötti érték a magánhangzó digitális tűjére vonatkozik.
A véletlen érték előállításának kódja az alábbiakban látható.
csap = 8;
randomSeed (analogRead (A0)); numero = véletlenszerű (8, 12); Rendezési szám = szám;
Ezenkívül levonunk 7 -et a 8 és 12 között húzott összegből. Ez lehetővé teszi számunkra, hogy rámutassunk a memóriakártyára rögzített dalok 1-5 pozíciójára.
numero = numero - 7;
Ezt követően reprodukáltam az alábbi vonalra rajzolt magánhangzó hangját.
sendCommand (0x03, 0, numero);
késleltetés (1000);
Most eljött a fontos idő: az a pillanat, amikor elolvassuk a gyermek által megnyomott gombot. Az alábbiakban bemutatjuk a kódrészletet.
tedd
{gomb = digitalRead (pin); Serial.println (gomb); pin ++; if (pin> 13) {pin = 8; } Serial.println ("Varrendo …"); Serial.println (pin); // delay (1000); } while (gomb! = 1);
Ez a ciklus addig fut, amíg a felhasználó le nem nyomja a gombokat. A hurok lehetővé teszi az 5 digitális tű beolvasását, és abban a pillanatban, amikor a gyermek megnyomja az egyik gombot, kilép a hurokból, és ellenőrzi, hogy a gyermek helyesen válaszolt -e.
Az ellenőrzést az alábbi kód használatával végezheti el.
if (gomb == 1 && (pin-1)! = SortNumber)
{sendCommand (0x03, 0, 6); késleltetés (3000); } if (gomb == 1 && (pin-1) == Rendezési szám) {sendCommand (0x03, 0, 7); késleltetés (3000); }
Az első feltétel akkor kerül végrehajtásra, amikor a felhasználó hibát követ el, mert megnyomtak egy gombot, és a csap aktivált értéke eltér a húzott tűtől (SortNumber).
Ezen a ponton végre kell hajtania az alábbi parancsot.
sendCommand (0x03, 0, 6);
késleltetés (3000);
Ez a parancs a rossz válaszhang beindítására szolgál. Végül megvan a második feltétel, amellyel ellenőrizni fogjuk, hogy a gyermeknek igaza van -e.
if (gomb == 1 && (pin-1) == Rendezési szám)
{sendCommand (0x03, 0, 7); késleltetés (3000); }
11. lépés:
Ha megnyomott egy gombot, és a megnyomott digitális tű megegyezik a kihúzott tűvel, a rendszer helyes válasz hangot ad ki.
Ahogy elmagyarázom nektek, ez a kód nagyon egyszerű, és minden gyermeknek segíteni fog a magánhangzók ismereteinek fejlesztésében az Arduino játékkal.
A fenti ábrán a soundbox az YX5300 MP3 modul SD -kártyáján tárolt dalt hajtja végre.
12. lépés: Következtetés
Az osztálytermi oktatást folyamatosan változtatni kell, és az Arduino nagyszerű szövetséges lehet a szórakoztató feladatok létrehozásában.
Ennek a projektnek a segítségével olyan egyszerű tevékenységet lehetett kifejleszteni, amely az egyes magánhangzók hangjának és helyesírásának ismerete révén fejlesztheti a gyermekek készségeit.
A hagyományos tanítási módszerekkel ellentétben a gyerekek az osztálytermi szórakozáson keresztül tanulnak játékokon és elektronikán keresztül.
13. lépés: Nyugtázás
Ez a projekt a JLCPCB vállalat támogatásának és bátorításának köszönhetően jött létre. Bátorították az oktatást, és felkértek bennünket, hogy fejlesszük ki a magánhangzók játékát a gyermekek osztálytermi tanítására.
Ha meg szeretné vásárolni a magánhangzók játékának elektronikus tábláit, akkor kattintson erre a linkre, és vásároljon 10 egységet 2 dollárért a JLCPCB -n.
Ajánlott:
Interfész Arduino Mega GPS modullal (Neo-6M): 8 lépés
Interfész Arduino Mega GPS-modullal (Neo-6M): Ebben a projektben megmutattuk, hogyan kell a GPS-modult (Neo-6M) Arduino Mega-val összekapcsolni. A TinyGPS könyvtár a hosszúsági és szélességi adatok megjelenítésére szolgál, a TinyGPS ++ pedig a szélesség, hosszúság, magasság, sebesség és a műholdak megjelenítésére szolgál
Puha játék Bluetooth kocka és Android játék fejlesztése az MIT App Inventor segítségével: 22 lépés (képekkel)
Puha játék Bluetooth kocka és Android játék fejlesztése az MIT App Inventor segítségével: A kockajátéknak különböző módszerei vannak 1) Hagyományos játék fa vagy sárgaréz kockákkal. 2) Játssz mobilon vagy PC -n a mobil vagy a PC által véletlenszerűen létrehozott kockával. fizikailag játszani a kockával, és mozgatni az érmét a mobilon vagy a számítógépen
Simon játék - szórakoztató játék!: 5 lépés
Simon Game - Szórakoztató játék !: Referencia: IttHosszú hétvége után valóban keményen kell próbálnia elvégezni az összes feladatot és munkát, amelyekért Ön felelős. Itt az ideje, hogy edzjük az agyunkat, nem? Az unalmas és értelmetlen játékok mellett van egy Simon Game nevű játék
Minion Cubecraft játék (zseblámpa játék): 4 lépés
Minion Cubecraft játék (A zseblámpa játéka): Régóta fáklyát akartam készíteni, hogy sötétben is használhassam, de az ötlet, hogy csak egy hengeres alakú tárgy legyen, csak be-ki kapcsolóval, ellenállt, hogy ne csináljam. Túl mainstream volt. Aztán egy napon a bátyám hozott egy kis NYÁK -ot
A játék megvásárlása előtt ellenőrizheti, hogy fut -e egy játék a számítógépén .: 4 lépés
Hogyan lehet ellenőrizni, hogy a játék fut -e a számítógépen, mielőtt megvásárolná a játékot.: Nemrégiben beszereztem egy barátomtól a Call of Duty 4 -et (lehet, hogy ingyen), mert nem fut a számítógépén. Nos, a számítógépe meglehetősen új, és megdöbbentett, miért nem fut. Így pár órányi internetes keresés után találtam rá