Page 77 - MDP2020-3
P. 77

················································································  명장양성프로젝트  【MDP】  과제발표회  자료집  Ⅲ    |  71


            제  3  장  소프트웨어  설계


            1.  개요
                code  vision을  이용하여  모터의  동작을  제어하여  통의  움직임을  제어하고  android  studio를
            이용하여  어플  구성  및  와이파이  모듈과  통신할  때  사용한다.  외부에  나가  있을  경우  핸드폰을

            사용한  앱  제어를  통해  원격으로  사료를  공급할  수  있다.


            2.  소프트웨어
                1)  코드  비전:  ATmega2560과  모터를  제어할  때  사용할  프로그램이다.

                2)  Android  studio:  어플  구성  및  와이파이  모듈과의  통신을  위해  사용할  프로그램이다


            3.  사용한  소프트웨어  코드
            #include  <delay.h>
            #include  <mega128.h>
            #include  <lcd.h>
            #asm
            .equ  __lcd_port=0x1B;                                                //PORTA에  LCD연결
            #endasm


            unsigned  int  levelsensor_A,  levelsensor_B,  watersensor;      //센서  값  저장  변수
            void  init()  {                                                              //초기값  함수
                    lcd_init(16);
                    DDRA  =  0xff;                                                  //LCD로  사용
                    PORTA  =  0xff;

                    DDRB  =  0x00;                                                //수발광센서  A통  0~2번핀에  연결    B통  4~6  핀  연결
                    PORTB  =  0x00;                                              //초기값은  0으로  설정

                    DDRC  =  0x83;                  //부저를  7번  핀에  연결  모터를  0~1  스위치를  2~3에  연결
                    PORTC  =  0x80;                 //부저  7핀에  연결(초기값은  0)      모터를  0~1번핀(초기값  0)

                    DDRF  =  0x00;                                                //수위감지센서입력을    0~2번  핀에서  받아옴
                    PORTF  =  0x00;                                              //초기값은  0으로  설정
            }
            void  sensor_A()  {                                                  //A  사료의  량  감지  함수
                levelsensor_A  =  0b00000111  &  PINB;
                          switch  (levelsensor_A)  {                            //사료의  량  감지  함수
                                case  0b00000111:                                    //연산  값이  0b00000111  일때
                                          PORTC  =  0x00;                              //  부저를  울림
                                          lcd_gotoxy(0,0);
                                          lcd_putsf("feed_A:NO  HAVE");    //LCD에  'feed_A:NO  HAVE'  출력
                                          delay_ms(300);    break;

                                case  0b00000000:                                      //연산  값이  0b00000000  일때
   72   73   74   75   76   77   78   79   80   81   82