色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>平衡segway機(jī)器人開源項(xiàng)目

平衡segway機(jī)器人開源項(xiàng)目

2022-11-18 | zip | 0.12 MB | 次下載 | 免費(fèi)

資料介紹

描述

“Segbot”是 UIUC ME 461 級(jí)制造的平衡 segway 機(jī)器人segbot 由 Dan Block (d-block@illinois.edu) 教授設(shè)計(jì)的電路板和 F28379D 微控制器組成,該微控制器是德州儀器 C2000 系列的一部分。該項(xiàng)目的目標(biāo)是讓 segbot 播放歌曲和舞蹈以響應(yīng)檢測(cè)到不同的音符。

音符檢測(cè)

音符檢測(cè)是使用模數(shù)轉(zhuǎn)換完成的,將從麥克風(fēng)接收到的模擬信號(hào)轉(zhuǎn)換為數(shù)字值。沒有占空比輸出的脈寬調(diào)制被用作定時(shí)器,以 10 kHz 的采樣率觸發(fā) ADC 中斷。為了識(shí)別不同的頻率,使用Goertzel 算法一次對(duì) 1000 個(gè) ADC 值進(jìn)行離散傅里葉變換。如果算法的輸出超過某個(gè)閾值,則檢測(cè)到音符。閾值是一個(gè)稍微隨意的值,調(diào)整為在適當(dāng)?shù)臅r(shí)間做出響應(yīng),這意味著如果由于意外事件(例如落筆)而出現(xiàn)頻率,則不會(huì)檢測(cè)到音符。

// DFT with Goertzel Algorithm
float goertzel_mag(int numSamples,int TARGET_FREQUENCY,int SAMPLING_RATE, float* data)
{
    int     k,i;
    float   floatnumSamples;
    float   omega,sine,cosine,coeff,q0,q1,q2,magnitude,real,imag;

    float   scalingFactor = numSamples / 2.0;

    floatnumSamples = (float) numSamples;
    k = (int) (0.5 + ((floatnumSamples * TARGET_FREQUENCY) / SAMPLING_RATE));
    omega = (2.0 * PI * k) / floatnumSamples;
    sine = sin(omega);
    cosine = cos(omega);
    coeff = 2.0 * cosine;
    q0=0;
    q1=0;
    q2=0;

    for(i=0; i
    {
        q0 = coeff * q1 - q2 + data[i];
        q2 = q1;
        q1 = q0;
    }

    // calculate the real and imaginary results
    // scaling appropriately
    real = (q1 - q2 * cosine) / scalingFactor;
    imag = (q2 * sine) / scalingFactor;

    magnitude = sqrtf(real*real + imag*imag);
    return magnitude;
}

乒乓緩沖器

實(shí)現(xiàn)了一個(gè)乒乓緩沖器版本,以將 ADC 讀數(shù)存儲(chǔ)在單獨(dú)的陣列中,這樣一個(gè)可以收集數(shù)據(jù),而另一個(gè)可以在 Goertzel 函數(shù)中執(zhí)行計(jì)算。使用了三個(gè)這樣的數(shù)組,以便 Goertzel 算法在檢查對(duì)應(yīng)于三種不同歌曲和舞蹈的三個(gè)單獨(dú)音符之間交替。當(dāng)檢測(cè)到其中一個(gè)目標(biāo)頻率時(shí),它會(huì)發(fā)出歌舞開始的信號(hào)。

//Use three-part "Ping-Pong" Buffer in ADC interrupt
//Ping
    if(PingPong == 0){
        adcb_arrayPing[adcbcount] = adcb0result; // add ADC reading to array
        if(adcbcount == (n_samples-1)){
            adcbcount = -1; //incremented to 0 at end of interrupt
            RunPing = 1; //check in while loop
            PingPong = 1; //switch to Pong buffer
        }
    }
    //Pong
    if(PingPong == 1){
        adcb_arrayPong[adcbcount] = adcb0result;
        if(adcbcount == (n_samples-1)){
            adcbcount = -1; //incremented to 0 at end of interrupt
            RunPong = 1;
            PingPong = 2; //switch to Dong buffer
        }
    }
    //Dong
    if(PingPong == 2){
        adcb_arrayDong[adcbcount] = adcb0result;
        if(adcbcount == (n_samples-1)){
            adcbcount = -1; //incremented to 0 at end of interrupt
            RunDong = 1;
            PingPong = 0; //switch to Ping buffer
        }
    }

// IDLE loop. Use to pass arrays through Goertzel fxn and check for note detection
    while(1)
    {
        //after n samples, pass data through Goertzel fxn
        // use Ping Pong buffer

        if(RunPing == 1){
            goer_result = goertzel_mag(n_samples,NOTE,sampling_rate, adcb_arrayPing);
            RunPing = 0;
            if(goer_result > thresh){
                note_detected = 1;
            }
        }
        if(RunPong == 1){
            goer_result2 = goertzel_mag(n_samples,NOTE2,sampling_rate, adcb_arrayPong);
            RunPong = 0;
            if(goer_result2 > thresh){
                note2_detected = 1;
            }
        }
        if(RunDong == 1){
            goer_result3 = goertzel_mag(n_samples,NOTE3,sampling_rate, adcb_arrayDong);
            RunDong = 0;
            if(goer_result3 > thresh){
                note3_detected = 1;
            }
        }

歌舞

為了讓 segbot 播放歌曲,蜂鳴器由脈沖寬度調(diào)制控制。三個(gè) CPU 定時(shí)器中斷中的每一個(gè)都被設(shè)置為不同的周期以對(duì)應(yīng)歌曲的節(jié)奏。歌曲的音符組合成一個(gè)數(shù)組,用來改變PWM的周期,在檢測(cè)到第一個(gè)音符的情況下,每次發(fā)生定時(shí)器中斷時(shí),蜂鳴器都會(huì)播放相應(yīng)的音符。播放的歌曲是對(duì)披頭士的“Hey Jude”、夏奇拉的“Hips Don't Lie”和海灘男孩的“Little Saint Nick”的演繹。為了增強(qiáng)“小圣尼克”的表現(xiàn),增加了一個(gè)鈴鐺,并結(jié)合 RC 伺服電機(jī)使用 PWM,在歌曲的不同部分敲擊表面。

讓 segbot 平衡是在此項(xiàng)目中完成的,再次使用 PWM 觸發(fā) ADC,其中值通過 SPI 寫入,以便從 MPU-9250 讀取加速度和陀螺儀值。實(shí)施卡爾曼濾波器以在將值發(fā)送到平衡 segbot 的控制律之前對(duì)其進(jìn)行過濾。與播放歌曲類似,為了讓 segbot 跳舞,為轉(zhuǎn)彎速率和向前/向后偏移創(chuàng)建了一個(gè)數(shù)組。當(dāng)檢測(cè)到相應(yīng)的音符時(shí),在 CPU 定時(shí)器中斷中執(zhí)行舞蹈。

//Sing and dance when the Goertzel value exceeds threshold
if(note_detected == 1){

        GPIO_SetupPinMux(16, GPIO_MUX_CPU1, 5);// set up buzzer

        if (numtimer1calls < songsize){
            //play the song
            if(song[numtimer1calls]==0){
                GpioDataRegs.GPACLEAR.bit.GPIO16 = 1; // ground the buzzer
            }else{
                EPwm9Regs.TBPRD = (int)(3125000/song[numtimer1calls]/2);
            }
            //dance
            FwdBkOffset = fwddance[numtimer1calls];
            turnrate = turndance[numtimer1calls];
        }   else{
            GPIO_SetupPinMux(16, GPIO_MUX_CPU1, 0); // set GPIO16 back to GPIO
            GpioDataRegs.GPACLEAR.bit.GPIO16 = 1; // ground the buzzer
            note_detected = 0;
            numtimer1calls = 0;
            FwdBkOffset = 0;
            turnrate = 0;
        }

        numtimer1calls++; // only increment after note is detected
    }
?

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)
主站蜘蛛池模板: 少妇精油按摩| 久久国产高清视频| 久久精品伊人| 青草精品国产福利在线视频| 亚洲精品久久久午夜福利电影网| 欧美黑人巨大xxxxx| 无码人妻丰满熟妇啪啪网不卡| 越南女子杂交内射BBWXZ| 爱穿丝袜的麻麻3d漫画acg| 国产专区青青在线视频| 年轻的朋友4在线看中文字幕| 日韩吃奶摸下AA片免费观看| 亚洲午夜一区二区电影院| 成人国产亚洲欧美成人综合网| 久久不卡免费视频| 色综合a在线| 97国产成人精品视频| 国产人妻麻豆蜜桃色精| 欧美精品熟妇乱| 一个人免费视频在线观看高清版 | 亚洲乱码中文字幕久久孕妇黑人| 99热这里只有精品视频2| 国产在线精品亚洲第1页| 日本少妇无码精品12P| 中文字幕无线观看不卡网站 | 久久99影院| 天天影视色欲 影视| 99精品国产第一福利网站| 狠狠色狠狠色综合| 色怕怕| 2017日日干| 激情床戏揉胸吃胸视频| 日本高清二区| 99精品亚洲| 久久精品久精品99热| 色欲精品久久人妻AV中文字幕| 最近免费中文字幕完整版HD| 国产美女裸身网站免费观看视频 | 久久免费特黄毛片| 无限资源在线看影院免费观看| 69成人免费视频|