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 일때