久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1448|回復: 1
打印 上一主題 下一主題
收起左側

C51單片機滅火機器人源碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:497338 發表于 2019-3-24 16:42 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
float tim_1=0.0;   /*時間變量:不用*/
float gf_1=0.0;   /*速度功率值 */
int mic_1=0;    /*聲音值,AI8或AI12*/
int gi_1=0;     /*用控制是否跳出某房間循環的量:任務完成與否控制量*/
int gi_2=0;     /*相對的左邊火焰亮度值*/
int gi_3=0;     /*相對的左右邊火焰亮度值的差值*/
int gi_4=0;      /*相對的右邊火焰亮度值*/
int gi_5=0;    /*高中、小學程序切換*/
int gi_6=0;    /*二號房回家時用來數線的量*/
int gi_7=0;    /*第一次去二號房時看到的有沒有火的標記量*/
int gi_8=0;    /*地面灰度設置值*/
int gi_9=0;    /*側面PSD測距值*/
int gi_10=0;   /*區分環境光與蠟燭光的參考值*/
int ma_1=0;   /*前左PSD值AI0*/
int ma_2=0;   /*正前PSD值AI1*/
int ma_3=0;   /*前右PSD值AI2*/
int ma_4=0;   /*后右PSD值AI3*/
int ma_5=0;   /*正后PSD值AI4*/
int ma_6=0;   /*后左PSD值AI5*/
int ma_7=0;   /*前地面灰度值AI6*/
int ma_8=0;   /*后地面灰度值AI7*/
int ma_9=0;   /*回家時所用的地面灰度的二次測量值*/
int ma_10=0;   /*正前正后PSD測距值,例值 220*/
int sci_1=0;   /*指南針讀值*/
void main()
{
    SCI_Set(0,9600,0,8,1 );/*串口設置:指南針的端口設置,小學、初中不用*/
    /*****************************************************************************/
    /*以下為調試參數*****************************************************************/
    gi_10=450;      /*區分環境光與蠟燭光的參考值,約比環境光最小值小50,例值:450*/
    gi_8=310;     /*地面灰度設置值,原則:穩定地區分黑白,取黑白值的中間值,例值:300*/
    gi_9=280;    /*側面PSD測距值,例值: 280*/
    ma_10=280;  /*正前正后PSD測距值,例值 280*/
    gi_5=1;/*小學取1,初高中取0*****/

    gf_1=1.0;/*功率值,范圍0.0~1.0*/
    /*****************************************************************************/


    while(1)
    {
        mic_1=AI(8);
        if(mic_1 > 750)
        {
            break;
        }
    }
    //SetMotor(0x1111,100,100,0,0);
    SetMotor(0x1111,(int)(100*gf_1),(int)(100*gf_1),0,0);
    wait( 0.300000 );
    while(1)
    {                       /*四號房*****************************/
    /************************************************************/
        while(1)
        {
            ma_7 = AI(6);
            if(ma_7 < gi_8)
            {
                gi_2=AI(9);
                gi_4=AI(11);
                if((gi_2 < gi_10) || (gi_4 < gi_10))
                {
                    //SetMotor(0x1111,90,10,0,0);
                    SetMotor(0x1111,(int)(90*gf_1),(int)(10*gf_1),0,0);     /*有火時進四號房*************/
                    wait( 0.100000 );
                    //SetMotor(0x1111,80,80,0,0);
                    SetMotor(0x1111,(int)(80*gf_1),(int)(80*gf_1),0,0);     /*有火時進四號房*************/
                    wait( 0.050000 );
                    while(1)
                    {
                        ma_7 = AI(6);
                        gi_2=AI(9);
                        if((ma_7 < gi_8) && (gi_2 < 300))/*四號滅火*/
                        {
                            StopMotor(0x1111);
                            //SetMotor(0x1111,100,-100,0,0);
                            SetMotor(0x1111,(int)(100*gf_1),(int)(-100*gf_1),0,0);
                            wait( 0.080000 );
                            StopMotor(0x1111);
                            DO( 0x1, 1 );
                            tim_1 =seconds();
                            wait( 0.500000 );/*機器人停頓滅火時間*/
                            DO( 0x1, 0 );
                            /*gi_5=1;*小學***/
                            break;
                        }
                        else
                        {
    SubRoutine_2 ();

                        }
                    }
                    if(gi_5 == 1)
                    {
                        gi_1=1;
                        break;
                    }
    SubRoutine_3 ();

                    gi_1 = 1 ;
                    break;
                }
                else      /*出四號房*************/
                {
                    StopMotor(0x1111);
                    wait( 0.180000 );
                    //SetMotor(0x1111,-60,-100,0,0);
                    SetMotor(0x1111,(int)(-40*gf_1),(int)(-100*gf_1),0,0);
                    wait( 0.300000 );
                    break;
                }
            }
            else
            {
    SubRoutine_1 ();

            }
        }
        if(gi_1 == 1)
        {
            break;
        }
                              /*三號房*****************************/
      /************************************************************/
        while(1)
        {
            ma_8 = AI(7);
            if(ma_8 < gi_8)
            {
                gi_2=AI(13);
                gi_4=AI(15);
                if((gi_2 < gi_10) || (gi_4 < gi_10))
                {
                    //SetMotor(0x1111,-80,-10,0,0);
                    SetMotor(0x1111,(int)(-80*gf_1),(int)(-10*gf_1),0,0);   /*有火時進三號房*************/
                    wait( 0.100000 );
                    while(1)
                    {
                        ma_8 = AI(7);
                        gi_2=AI(15);
                        if((ma_8 < gi_8) && (gi_2 < 300))  /*三號滅火*/
                        {
                            StopMotor(0x1111);
                            DO( 0x10, 1 );
                            tim_1 =seconds();
                            wait( 0.500000 );/*機器人停頓滅火時間*/
                            DO( 0x10, 0 );
                            /*gi_5=1;*小學***/
                            break;
                        }
                        else
                        {
    SubRoutine_5 ();

                        }
                    }
                    if(gi_5 == 1)
                    {
                        gi_1=1;
                        break;
                    }
    SubRoutine_6 ();

                    gi_1 = 1 ;
                    break;
                }
                else
                {
                    StopMotor(0x1111);     /*沒火時出三號房*************/
                    wait( 0.180000 );
                    //SetMotor(0x1111,100,15,0,0);
                    SetMotor(0x1111,(int)(100*gf_1),(int)(15*gf_1),0,0);
                    wait( 0.400000 );
                    break;
                }
            }
            else
            {
    SubRoutine_4 ();

            }
        }
        if(gi_1 == 1)
        {
            break;
        }

                               /*一(-2-1)號房*****************************/
               /************************************************************/
        while(1)
        {
            ma_7 = AI(6);
            if(ma_7 < gi_8)
            {
                gi_2=AI(9);
                gi_4=AI(11);
                if((gi_2 < gi_10) || (gi_4 < gi_10))/*此處不用改(第一次去二號門口測光,不進)*/
                {
                    gi_7 = 1 ;
                }
                StopMotor(0x1111);    /*第一次從二號門出***********/
                wait( 0.180000 );
                //SetMotor(0x1111,-80,-20,0,0);
                SetMotor(0x1111,(int)(-10*gf_1),(int)(-80*gf_1),0,0);
                wait( 0.40000 );
                while(1)
                {
                    ma_8 = AI(7);
                    if(ma_8 < gi_8)
                    {
                        gi_2=AI(13);
                        gi_4=AI(15);
                        if((gi_2 < gi_10) || (gi_4 < gi_10))
                        {
                            //SetMotor(0x1111,-80,-15,0,0);
                            SetMotor(0x1111,(int)(-80*gf_1),(int)(-15*gf_1),0,0);  /*有火時進一號房*************/
                            wait( 0.200000 );
                            while(1)
                            {
                                ma_8 = AI(7);
                                gi_2=AI(15);
                                if((ma_8 < gi_8) && (gi_2 < 300))  /*一號滅火*/
                                {
                                    StopMotor(0x1111);
                                    DO( 0x10, 1 );
                                    tim_1 =seconds();
                                    wait( 0.500000 );  /*機器人停頓滅火時間*/
                                    DO( 0x10, 0 );
                                    /*gi_5=1;*小學***/
                                    break;
                                }
                                else
                                {
    SubRoutine_5 ();

                                }
                            }
                            if(gi_5 == 1)
                            {
                                gi_1=1;
                                break;
                            }
    SubRoutine_10 ();

                            gi_1 = 1 ;
                            break;
                        }
                        else
                        {
                            StopMotor(0x1111);
                            wait( 0.180000 );
                            //SetMotor(0x1111,-60,60,0,0);
                            SetMotor(0x1111,(int)(-60*gf_1),(int)(60*gf_1),0,0);  /**最后去2號房之前(即從一號去二號)**/
                            wait( 0.020000 );
                            StopMotor(0x1111);
                            //SetMotor(0x1111,100,55,0,0);
                            SetMotor(0x1111,(int)(100*gf_1),(int)(55*gf_1),0,0);
                            ma_2 = AI(1);
                            ma_3 = AI(2);
                            while((ma_2 <= ma_10) && (ma_3 <= gi_9))/**最后去2號房之前**/
                            {
                                ma_2 = AI(1);
                                ma_3 = AI(2);
                            }                            /**最后去2號房之前**/
                            SetMotor(0x1111,(int)(70*gf_1),(int)(70*gf_1),0,0);
                            wait( 0.2 );
                            SetMotor(0x1111,(int)(50*gf_1),(int)(-50*gf_1),0,0);
                            wait( 0.2 );                          

                            gi_1=2;
                            break;
                        }
                    }
                    else
                    {
    SubRoutine_4 ();

                    }
                    if((gi_1 == 2) || (gi_1 == 1))
                    {
                        break;
                    }
                }
                if((gi_1 == 2) || (gi_1 == 1))
                {
                    break;
                }
            }
            else
            {
    SubRoutine_7 ();

            }
        }
        if(gi_1 == 1)
        {
            break;
        }

                     /*二號房*****************************/
        /************************************************************/
        while(1)
        {
            ma_7 = AI(6);
            if(ma_7 < gi_8)
            {
                gi_2=AI(9);
                gi_4=AI(11);
                if(gi_7==1)gi_2=10;/*第一次已*/    /********************/
                if((gi_2 < 1023) || (gi_4 < gi_10))
                {
                    //SetMotor(0x1111,50,80,0,0);
                    SetMotor(0x1111,(int)(50*gf_1),(int)(80*gf_1),0,0);
                    wait( 0.100000 );
                    //SetMotor(0x1111,25,70,0,0);
                    SetMotor(0x1111,(int)(10*gf_1),(int)(100*gf_1),0,0);
                    wait( 0.3500 );
                    while(1)
                    {
                        ma_7 = AI(6);
                        gi_2=AI(11);
                        if((ma_7 < gi_8) && (gi_2 < 300))   /*二號滅火*/
                        {
                            StopMotor(0x1111);
                            DO( 0x1, 1 );
                            tim_1 =seconds();
                            wait( 0.500000 );   /*機器人停頓滅火時間*/
                            DO( 0x1, 0 );
                            /*gi_5=1;*小學***/
                            break;
                        }
                        else
                        {
    SubRoutine_2 ();

                        }
                    }
                    if(gi_5 == 1)
                    {
                        gi_1=1;
                        break;
                    }
                    StopMotor(0x1111);
    SubRoutine_9 ();

                    gi_1 = 1 ;
                    break;
                }
                else
                {
                    StopMotor(0x1111);
                    wait( 0.180000 );
                    break;
                }
            }
            else
            {
    SubRoutine_7 ();

            }
        }
        if(gi_1 == 1)
        {
            break;
        }
        break; /**/
    }
    StopMotor(0x1111);
}



機器人滅火程序.doc

90 KB, 下載次數: 4, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2019-3-24 22:54 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲网站在线播放 | 天天干视频| 久久精品小视频 | 精品国产乱码久久久久久88av | 欧美成人免费在线视频 | 碰碰视频 | 午夜激情在线 | 国产1区2区3区 | 久久99国产精一区二区三区 | 国产日韩久久久久69影院 | 91玖玖| 日韩av免费在线电影 | 亚洲一区在线免费观看 | 日韩精品一区二区三区在线观看 | 国产精品毛片一区二区在线看 | 99热精品国产 | 夜夜骚视频 | 成人深夜小视频 | www视频在线观看 | 在线成人免费视频 | 在线男人天堂 | 久久久久久久一区二区 | 一区二区三区视频在线观看 | 成人久久一区 | 成人国产在线视频 | 精品96久久久久久中文字幕无 | 亚洲一区二区三区在线播放 | 久久一级免费视频 | 欧美精品片 | 日韩在线电影 | 中文字幕av一区 | 国产精品久久av | 国产美女在线免费观看 | 日本久草| 日韩国产中文字幕 | 亚洲精品久久久久中文字幕欢迎你 | 日韩精品久久久久 | 在线日韩精品视频 | 国产精品爱久久久久久久 | 1级黄色大片| 伊人狠狠干 |