[AVR]전자레인지 동작 동영상

2021. 11. 9. 22:20코딩/AVR

Atmega128a사용

LCD , FND , BUZZER , BUTTON , MOTOR 사용

전자레인지 동작 동영상

main

 while (1)
	
    {
	    switch(modeState)
	    {
		    case mainmenu:
				setFndData(myTime.min*60 + myTime.sec);
				sprintf(buff," 1.cooking              ");
				I2C_LCD_write_string_XY(0, 0,buff);
				sprintf(buff," 2.defrosting           ");
				I2C_LCD_write_string_XY(1, 0,buff);
				
				if(getButton1State())
				{
					modeState = cook;
				}
				if(getButton2State())
				{
					modeState = defrost;
				}
				break;
				
				case cook:
				OCR3C = 100;
				setFndData(myTime.min*60 + myTime.sec );
				
				  sprintf(buff, "1.1m 2.10s 3.can              ");
				  I2C_LCD_write_string_XY(0, 0, buff);
		    
				  sprintf(buff, "cel 4.start                   ");
				  I2C_LCD_write_string_XY(1, 0, buff);
				  if(getButton1State())
				  {
					 myTime.min++;
				  }
				  if(getButton2State())
				  {
					 myTime.sec = myTime.sec+10;
					  if(myTime.sec >=60)
					  {	 
						  myTime.sec = myTime.sec%60;
						  myTime.min++;
					  }
					  
				  }
				  
				  if(getButton3State())
				  {	  myTime.sec =0;
					  myTime.min =0;
					  modeState = mainmenu;
				  }
				  if(getButton4State())
				  {
					  modeState = GO;
					  
				  }
				break;
				
		
				case defrost:
				OCR3C = 82;
				setFndData(myTime.min*60 + myTime.sec );
				
				sprintf(buff, "1.1m 2.10s 3.can              ");
				I2C_LCD_write_string_XY(0, 0, buff);
				
				sprintf(buff, "cel 4.start                   ");
				I2C_LCD_write_string_XY(1, 0, buff);
				if(getButton1State())
				{
					myTime.min++;
				}
				if(getButton2State())
				{
					myTime.sec = myTime.sec+10;
					if(myTime.sec >=60)
					{
						myTime.sec = myTime.sec%60;
						myTime.min++;
					}
					
				}
				
				if(getButton3State())
				{	  myTime.sec =0;
					myTime.min =0;
					modeState = mainmenu;
				}
				if(getButton4State())
				{
					modeState = GO;
					
				}
				break;
				
				case GO:
				setFndData(myTime.min*60 + myTime.sec);
				forward_fan();
				
				if(getButton1State())
				{
					myTime.min++;
				}
				if(getButton2State())
				{
					myTime.sec = myTime.sec+10;
					if(myTime.sec >=60)
					{
						myTime.sec = myTime.sec%60;
						myTime.min++;
					}
					
				}
				
				if(getButton3State())
				{	  myTime.sec =0;
					myTime.min =0;
					modeState = mainmenu;
				}
				
				if(myTime.min+myTime.sec == 0)
				{
					modeState = mainmenu;
					stop_fan();
					PORTG |= 1 << BUZZER1;
					_delay_ms(1000);
					PORTG &= ~(1 << BUZZER1);
					
				}
				break;
				
		}
	}
}

문제점

1. 조리,해동모드 선택시 디스플레이에 현재 모드가 표기되지 않기에 이를 수정해야합니다.

2. 취소버튼은 있으나 이시정지 버튼이 없기 때문에 추가하는것이 좋다고 생각합니다.

3. 부저의 소리가 작아서 잘 들리지 않기때문에 저항을 조정하여야 합니다.

'코딩 > AVR' 카테고리의 다른 글

[AVR]출입 통제 시스템  (3) 2021.11.09
[AVR] 계산기  (0) 2021.11.09
[AVR] 모터 속도제어 (선풍기)  (0) 2021.11.09
[AVR] UltraSonic 활용  (0) 2021.11.09
[AVR] DP Blink/Stopwatch,Clock 구분 LED표시 시간 표시 기능  (0) 2021.11.09