[Raharaha nahazo loka] Intelligent Cat Food Control System

——Avy amin'ny DWIN Developer Forum

Amin'ity laharana ity dia hampahafantatra anao ny tranga loharano misokatra nahazo loka avy amin'ny DWIN Developer Forum: Intelligent Cat Food Control System.Nampiasa ny écran smart DWIN ny injeniera mba hanaraha-maso ny maripana, ny hamandoana ary ny habetsahan'ny sakafon'ny saka, ary ny fitahirizana ny firaketana momba ny fihinanana sakafon'ilay saka.Izy ireo ihany koa dia nanamboatra andian-tsarimihetsika hosodoko amin'ny ranomainty, ary koa ny fiantraikan'ny tsindry ranomainty rehefa voakitika amin'ny rantsantanana, mba hanatsarana ny fahitana maso ny valin-kafatra mikasika.

Fampidirana:

1.Fitaovana sary UI

DWIN smart screen dia mameno ny fivoaran'ny UI mifototra amin'ny sary, feo ary fitaovana hafa mila omanina mialoha araka ny votoatin'ny efijery.

asv (2)

2. Fampandrosoana ny interface

Ny rindrambaiko DGUS dia mamerina ny fiantraikan'ny UI amin'ny alàlan'ny overlay sosona, manambatra ny fitaovana efa nomanina ho sary feno ao amin'ny rindrambaiko DGUS, ary mametraka ny fiasa fampisehoana sy fikasihana.

asv (1)

3. Ampiharo ny vokatry ny tsindry sy ny vokatry ny feo

Ny toeran'ny fikasihana dia azo amin'ny alàlan'ny programa 51, ny fiantraikany manindry dia manaraka ny fihetsiky ny rantsan-tànana, ary tratra ihany koa ny fiantraikan'ny feo miaraka amin'ny fanalahidy.

(1) Tadiavo ny kaody toerana fikasihana ary milalao feo:

void TouchDetect()

{

    u16 Va[3] = 0;

    u8 i = 0;

 

    for(i = 0;i < 3;i++)

    {

        Va[i] = Read_Dgus(0x0016 + i);

        raha(Va[0] == 0x5A01)

        {

        }

        hafa

        {

            tapaka;

        }

    }

    if(i != 0) //Tsindrio voalohany raha te hiditra

    {

        u16 play[2] = {0x0001, 0x4000};

        touchAnimationFlag = 1;

        touchAnimationCnt = 0;

        touchPosX = Va[1];

        touchPosY = Va[2];

        write_dgus_vp(0x00A0, milalao, 2);

    }

}

 

(2) Toy izao manaraka izao ny kaody ho an'ny fampisehoana vokatry ny fikasihana:

void TouchStart()

{

    raha(touchAnimationFlag == 1)

    {

        raha(touchAnimationCnt == 0)

        {

            Write_Dgus(0x5011, touchPosX - 100);

            Write_Dgus(0x5012, touchPosY - 100);

        }

 

        Write_Dgus(0x5000, touchAnimationCnt);

        touchAnimationCnt++;

 

        raha(touchAnimationCnt == 6)

        {

            touchAnimationFlag = 0;

            Write_Dgus(0x5011, 1024);

            Write_Dgus(0x5012, 600);

        }

    }

    

}

 

4. Ny dingana manaraka dia ny mametraka ny masontsivana mifanaraka amin'ny efijery, ary avy eo dia mamindra ny angon-drakitra amin'ny fanaraha-maso ny sakafo saka amin'ny alàlan'ny ESP32 mba hahatsapana ny fiasan'ny sakafo avy amin'ny saka.Ny code manokana dia toy izao manaraka izao:

//Mahazoa sata bokotra

void get_key_status()

{

    int i = 0;

    //u16 Va=Read_Dgus(addr);

    u16 Va=Read_Dgus(0x1000);

    raha(Va != 0x0000)

    {

        //Spejy tato

        if(Va == 0x0103) //Apetraho ny isa g

        {

            u16 switchpage[2] = {0x5A01, 19};

            setNum = placeGramNum;

            backPage = 1;//Miverena amin'ny pejy sata

            Write_Dgus(0x4000 + 0, setNum % 10);

            Write_Dgus(0x4000 + 2, setNum / 10 % 10);

            Write_Dgus(0x4000 + 4, setNum / 100 % 10);

            Write_Dgus(0x4000 + 6, setNum / 1000 % 10);

            write_dgus_vp(0x0084, switchpage, 2);

        }

        raha tsy izany (Va == 0x0102)

        {

            OneSendData3(placeGramNum);//Placesakafo saka, indray mandeha

        }

        raha tsy izany (Va == 0x0101) //Setting page

        {

            u16 switchpage[2] = {0x5A01, 3};

            for(i = 0;i < 6;i++)

            {

                raha(i == 0)

                {

                    Write_Dgus(0x3070 + i * 0x10 + 0, currentTime[i] % 10);

                    Write_Dgus(0x3070 + i * 0x10 + 2, currentTime[i] / 10 % 10);

                    Write_Dgus(0x3070 + i * 0x10 + 4, currentTime[i] / 100 % 10);

                    Write_Dgus(0x3070 + i * 0x10 + 6, currentTime[i] / 1000 % 10);

                }

                hafa

                {

                    Write_Dgus(0x3070 + i * 0x10 + 0, currentTime[i] % 10);

                    Write_Dgus(0x3070 + i * 0x10 + 2, currentTime[i] / 10 % 10);

                }

            }

            write_dgus_vp(0x0084, switchpage, 2);// Midira ao amin'ny pejin'ny fanovana

        }

        raha tsy izany (Va == 0x0100) //Rpejy ecord

        {

            u16 switchpage[2] = {0x5A01, 2};

            for(i = 0;i < 6;i++)

            {

                raha(i == 0)

                {

                    Write_Dgus(0x2000 + i * 0x10 + 0, eatFeedList[0][i] % 10);

                    Write_Dgus(0x2000 + i * 0x10 + 2, eatFeedList[0][i] / 10 % 10);

                    Write_Dgus(0x2000 + i * 0x10 + 4, eatFeedList[0][i] / 100 % 10);

                    Write_Dgus(0x2000 + i * 0x10 + 6, eatFeedList[0][i] / 1000 % 10);

                }

                hafa

                {

                    Write_Dgus(0x2000 + i * 0x10 + 0, eatFeedList[0][i] % 10);

                    Write_Dgus(0x2000 + i * 0x10 + 2, eatFeedList[0][i] / 10 % 10);

                }

            }

            write_dgus_vp(0x0084, switchpage, 2);// Ampidiro ny pejy firaketana

        }

        //Rpejy ecord

        raha tsy izany (Va == 0x0201) // Raketo ny pejy teo aloha

        {

            raha(lookEatCnt > 0)

            {

                lookEatCnt--;

                for(i = 0;i < 6;i++)

                {

                    raha(i == 0)

                    {

                        Write_Dgus(0x2000 + i * 0x10 + 0, eatFeedList[lookEatCnt][i] % 10);

                        Write_Dgus(0x2000 + i * 0x10 + 2, eatFeedList[lookEatCnt][i] / 10 % 10);

                        Write_Dgus(0x2000 + i * 0x10 + 4, eatFeedList[lookEatCnt][i] / 100 % 10);

                        Write_Dgus(0x2000 + i * 0x10 + 6, eatFeedList[lookEatCnt][i] / 1000 % 10);

                    }

                    hafa

                    {

                        Write_Dgus(0x2000 + i * 0x10 + 0, eatFeedList[lookEatCnt][i] % 10);

                        Write_Dgus(0x2000 + i * 0x10 + 2, eatFeedList[lookEatCnt][i] / 10 % 10);

                    }

                }

            }

        }

        else if(Va == 0x0202) //Raketo ny pejy manaraka

        {

            raha(lookEatCnt < eatCnt - 1)

            {

                lookEatCnt++;

                for(i = 0;i < 6;i++)

                {

                    raha(i == 0)

                    {

                        Write_Dgus(0x2000 + i * 0x10 + 0, eatFeedList[lookEatCnt][i] % 10);

                        Write_Dgus(0x2000 + i * 0x10 + 2, eatFeedList[lookEatCnt][i] / 10 % 10);

                        Write_Dgus(0x2000 + i * 0x10 + 4, eatFeedList[lookEatCnt][i] / 100 % 10);

                        Write_Dgus(0x2000 + i * 0x10 + 6, eatFeedList[lookEatCnt][i] / 1000 % 10);

                    }

                    hafa

                    {

                        Write_Dgus(0x2000 + i * 0x10 + 0, eatFeedList[lookEatCnt][i] % 10);

                        Write_Dgus(0x2000 + i * 0x10 + 2, eatFeedList[lookEatCnt][i] / 10 % 10);

                    }

                }

            }

        }

        //Fametrahana pejy

        raha tsy izany (Va == 0x0302)

        {

            raha(timeMode == 1)

            {

                TimeMode = 0;

                Write_Dgus(0x3A12, 139);

            }

        }

        raha tsy izany (Va == 0x0303)

        {

            raha(timeMode == 0)

            {

                TimeMode = 1;

                Write_Dgus(0x3A12, 242);

            }

        }

        raha tsy izany (Va >= 0x0304 && Va <= 0x0309)

        {

            u16 switchpage[2] = {0x5A01, 19};

            backPage = 3;

            backNum = Va;

            setNum = timrIntervalHour[Va - 0x0304];

            Write_Dgus(0x4000 + 0, setNum % 10);

            Write_Dgus(0x4000 + 2, setNum / 10 % 10);

            Write_Dgus(0x4000 + 4, setNum / 100 % 10);

            Write_Dgus(0x4000 + 6, setNum / 1000 % 10);

            write_dgus_vp(0x0084, switchpage, 2);

        }

        raha tsy izany (Va >= 0x030A && Va <= 0x030F)

        {

            u16 switchpage[2] = {0x5A01, 19};

            backPage = 3;

            backNum = Va;

            setNum = ora ankehitriny [Va - 0x030A];

            Write_Dgus(0x4000 + 0, setNum % 10);

            Write_Dgus(0x4000 + 2, setNum / 10 % 10);

            Write_Dgus(0x4000 + 4, setNum / 100 % 10);

            Write_Dgus(0x4000 + 6, setNum / 1000 % 10);

            write_dgus_vp(0x0084, switchpage, 2);

        }

        //Amanitsy ny pejy angona

        raha tsy izany (Va == 0x0400) //Manamarina

        {

            u16 switchpage[2] = {0x5A01, 0x0000};

            switchpage[1] = backpage;

            if(backPage == 1) //Miverena amin'ny pejy sata

            {

                placeGramNum = setNum;

                Write_Dgus(0x1140 + 0, placeGramNum % 10);

                Write_Dgus(0x1140 + 2, placeGramNum / 10 % 10);

            }

            raha tsy izany (backPage == 3)

            {

                raha(backNum >= 0x0304 && backNum <= 0x0309)

                {

                    u16 mifidy = 0;

                    mifidy = (backNum - 0x0304) * 0x10;

                    timrIntervalHour[backNum - 0x0304] = setNum;

                    Write_Dgus(0x3010 + select + 0, setNum % 10);

                    Write_Dgus(0x3010 + select + 2, setNum / 10 % 10);

                }

                raha tsy izany (backNum>= 0x030A && backNum <= 0x030F)

                {

                    u16 mifidy = 0;

                    mifidy = (backNum - 0x0304) * 0x10;

                    currentTime[backNum - 0x030A] = setNum;

                    

                    raha(backNum == 0x030A)

                    {

                        Write_Dgus(0x3010 + select + 0, setNum % 10);

                        Write_Dgus(0x3010 + select + 2, setNum / 10 % 10);

                        Write_Dgus(0x3010 + select + 4, setNum / 100 % 10);

                        Write_Dgus(0x3010 + select + 6, setNum / 1000 % 10);

                    }

                    hafa

                    {

                        Write_Dgus(0x3010 + select + 0, setNum % 10);

                        Write_Dgus(0x3010 + select + 2, setNum / 10 % 10);

                    }

                }

            }

            write_dgus_vp(0x0084, switchpage, 2);

        }

        raha tsy izany (Va == 0x0401) //indray

        {

            u16 switchpage[2] = {0x5A01, 0x0000};

            switchpage[1] = backpage;

            write_dgus_vp(0x0084, switchpage, 2);

        }

        raha tsy izany (Va == 0x0402) //Fampitomboana isa

        {

            setNum++;

            Write_Dgus(0x4000 + 0, setNum % 10);

            Write_Dgus(0x4000 + 2, setNum / 10 % 10);

            Write_Dgus(0x4000 + 4, setNum / 100 % 10);

            Write_Dgus(0x4000 + 6, setNum / 1000 % 10);

        }

        raha tsy izany (Va == 0x0403) // Ny fihenan'ny isa

        {

            raha(setNum > 0)

                setNum--;

            Write_Dgus(0x4000 + 0, setNum % 10);

            Write_Dgus(0x4000 + 2, setNum / 10 % 10);

            Write_Dgus(0x4000 + 4, setNum / 100 % 10);

            Write_Dgus(0x4000 + 6, setNum / 1000 % 10);

        }

        

        Write_Dgus(0x1000, 0);

    }

}


Fotoana fandefasana: Sep-19-2023