블로그 이미지
fiadot_old

칼퇴근을 위한 게임 서버 개발 방법론에 대한 심도있는 고찰 및 성찰을 위한 블로그!

Rss feed Tistory
Hardware 2009. 1. 28. 13:11

마이크로마우스 Jina의 캐릭터 LCD(LC1621) 제어 소스 공개

2007년에 만들었던 프로젝트 소스들이 다 날아간걸로 생각하고 있었는데, 어느분의 OCR관련 메일을 계기로 백업해두었던 DVD, CD를 모두 뒤져 보고 마이크로마우스 관련 소스를 다시 찾게 되었다.

예전에 LC1621의 소스를 요청하셨던 분이 계셨는데 시간이 많이 지났으니 해결하셨으리라 생각하지만, 이제 시작하는 다른 분들에게 도움이 됐으면 하는 바람에서 소스를 올린다.


fiaavr_def.h : 포트별 연결된 정보와 기본 정의를 담고 있다.
[code]
/**                                                                 
 @file        fiaavr_def.h
 @date    2007/3/7
 @author 이근호(fiadot@gmail.com)
 @brief    Atmega128 개발용 공통 헤더 헤더 
*/


/*****************************************************
This program was produced by the
CodeWizardAVR V1.24.8d Professional
Automatic Program Generator
?Copyright 1998-2006 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : jINa
Version : 1.2.0
Date    : 2007-03-04
Author  : LEE GUNHO
Company :                   
Comments: Started at 2007.1.7

Chip type           : ATmega128
Program type        : Application
Clock frequency     : 16.000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 1024
*****************************************************/

#ifndef  __FIAAVR_DEF_H__
#define  __FIAAVR_DEF_H__

///////////////////////////////////////////////////////////
// [Ports Information]
///////////////////////////////////////////////////////////


/*           

Port A
0 -  (LCD)RS
1 -  (LCD)RW
2 -  (LCD)E
3 -  (부저)
4 -  (LCD)DB4
5 -  (LCD)DB4
6 -  (LCD)DB4
7 -  (LCD)DB4
  
Port B
0 -
1 - (ISP) SCK
2 - (ISP) MOSI - 확실치 않음 --;; 회로보고 검증해봐!
3 - (ISP) MISO
4 -
5 -
6 -
7 -

Port C
0 - (MotorL) A B A' B' 2 0 3 1
1 - (MotorL)
2 - (MotorL)
3 - (MotorL)
4 - (MotorR) A B A' B' 6 4 7 5
5 - (MotorR)
6 - (MotorR)
7 - (MotorR)
 
Port D
0 -
1 -
2 -
3 -
4 - (초음파1) Triger Pulse 앞
5 - (초음파2) Triger Pulse 우 (위에서 봤을때)
6 - (초음파3) Triger Pulse 좌
7 -  

Port E
0 - 테스트용 LED
1 -
2 - (블루투스)RX1
3 - (블루투스)TX1
4 - (초음파1) Echo Pulse - 인터럽트 4   앞
5 - (초음파2) Echo Pulse - 인터럽트 5   우 (위에서 봤을때)
6 - (초음파3) Echo Pulse - 인터럽트 6   좌
7 -  

Port F (ADC)
0 - (가스센서) ADC0
1 - (온도센서) ADC1
2 -
3 -
4 -
5 -
6 -
7 -  

*/

///////////////////////////////////////////////////////////
// [Headers]
///////////////////////////////////////////////////////////
#include <mega128.h>      
#include <delay.h>
#include <stdio.h>
#include <stdlib.h>    
#include <string.h>


///////////////////////////////////////////////////////////
// [Definitions]
///////////////////////////////////////////////////////////


// Boolean
#define FALSE  0
#define TRUE   1   
                
// 테스트 LED ON, OFF       
#define DEBUG_LED_ON          PORTF.1 = 1;      // LED On
#define DEBUG_LED_OFF         PORTF.1 = 0;
              
// 부저 ON,OFF
#define SPEAKER_ON            //PORTD.5 = 1;   PORTD.6 = 1;
#define SPEAKER_OFF           //PORTD.5 = 0;   PORTD.6 = 0;
          
// 이동 방향
#define    DIR_FORWARD      0
#define    DIR_RIGHT            1
#define    DIR_LEFT              2
#define    DIR_TOTAL           3


///////////////////////////////////////////////////////////
// [Variables]
///////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////
// [Functions]
///////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////
// [Etc]
/////////////////////////////////////////////////////////// 

// [Reference Sites]
// http://cafe.naver.com/carroty
// http://en.wikipedia.org/wiki/Atmel_AVR


#endif // __FIAAVR_DEF_H__

[/code]


fiasvr_lcd.h : 캐릭터LCD 관련 정의부
[code]
/**                                                                 
 @file        fiaavr_lcd.h
 @date    2007/3/4
 @author 이근호(fiadot@gmail.com)
 @brief    jINa - LCD출력및 디버깅 4비트 제어
*/

#ifndef  __FIAAVR_LCD_H__
#define  __FIAAVR_LCD_H__


///////////////////////////////////////////////////////////
// [Ports Information]
///////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////
// [Headers]
///////////////////////////////////////////////////////////
#include "fiaavr_def.h"


///////////////////////////////////////////////////////////
// [Definitions]
///////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////
// [Variables]
///////////////////////////////////////////////////////////
extern flash unsigned char *Logo;    //  로고 글귀
extern unsigned char pszData[16];  // LCD출력을 위한 스트링

///////////////////////////////////////////////////////////
// [Functions]
///////////////////////////////////////////////////////////

void fialcd_Init(); // LCD초기화 작업!
void fialcd_DrawLogo();
void fialcd_Debug(int nSeq, int nMsg);  // 숫자값을 출력하기 위해서
// 글자하나 찍어볼때   lcd_putchar(getchar1())

///////////////////////////////////////////////////////////
// [Etc]
/////////////////////////////////////////////////////////// 

#endif // __FIAAVR_LCD_H__


[/code]

fiasvr_lcd.cpp : 캐릭터LCD 관련 구현부
[code]
/**                                                                 
 @file        fiaavr_lcd.c
 @date    2007/3/4
 @author 이근호(fiadot@gmail.com)
 @brief    jINa - LCD출력및 디버깅
*/                


///////////////////////////////////////////////////////////
// [Headers]
///////////////////////////////////////////////////////////
#include "fiaavr_lcd.h"


///////////////////////////////////////////////////////////
// [Definitions]
///////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////
// [Variables]
///////////////////////////////////////////////////////////
flash unsigned char *Logo="   Hello!            I'm jINa"; //  로고 글귀
unsigned char pszData[16];  // LCD출력을 위한 스트링


///////////////////////////////////////////////////////////
// [Functions]
///////////////////////////////////////////////////////////

// LCD초기화 작업!

void fialcd_Init()
{
   lcd_init(16);
}
                                       
void fialcd_DrawLogo()
{
   lcd_clear(); 
   lcd_gotoxy(0,0);
   lcd_putsf(Logo);  
}

// 숫자값을 출력하기 위해서
// ex) 초음파 센서 거리출력!
void fialcd_Debug(int nSeq, int nMsg)
{
   lcd_clear(); 
   lcd_gotoxy(0,0);       
   sprintf(pszData, "%d : %d ", nSeq, nMsg);  
   lcd_puts(pszData);
}         


///////////////////////////////////////////////////////////
// [Etc]
/////////////////////////////////////////////////////////// 


[/code]


jina_ver120.c  : 메인 파일에 해당한다.
[code]
/**                                                                 
 @file   ver120.c
 @date  2007/3/4
 @author 이근호(fiadot@gmail.com)
 @brief  jINa
*/

///////////////////////////////////////////////////////////
// [Headers]
///////////////////////////////////////////////////////////
#include "fiaavr_def.h"

#include "fiaavr_lcd.h"     
#include "fiaavr_sensor_gas.h"              
#include "fiaavr_sensor_supersonic.h"              
#include "fiaavr_serial.h"              
#include "fiaavr_stepmotor.h"              
#include "fiaavr_util.h"    
     
     
// LCD부분은 다른곳에 넣으면 안됨!     
// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x1B ;PORTA
#endasm
#include <lcd.h>

///////////////////////////////////////////////////////////
// [Definitions]
///////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////
// [Variables]
///////////////////////////////////////////////////////////
                   
unsigned char pszGasData[16];


///////////////////////////////////////////////////////////
// [Functions]
///////////////////////////////////////////////////////////


// Port initialization
void InitPorts()
{
// Input/Output Ports 초기화
 
//   DDRA=0xFF;  
//   PORTA=0x00;

   DDRC = 0xFF;
   PORTC = 0x00;                 

   DDRD = 0xFF;
   PORTD = 0x00;

   DDRE = 0x00;
   PORTE =0x00;

//   PORTA = 0xFF;
}


// Entry Point!
void main(void)
{
   // Declare your local variables here       
   InitPorts();
  
   fialcd_Init();    
   fialcd_DrawLogo();
   delay_ms(1500);
   lcd_clear(); 

   UARTInit(9600);
     
   SS_InitSensor();       
   InitMotor();
   SS_InitTimer();  
         
   // Timer(s)/Counter(s) Interrupt(s) initialization
   TIMSK=0x41;     // 0,2번 타이머 사용!
   ETIMSK=0x00;

   InitGas();
 
  
   #asm("sei")  // Global enable interrupts


   
  Tx1_String2("jINa Start \r\n");    
 
  while(1)
  {
    
  };
}

[/code]




관련 링크

Atmega128 마이크로마우스 위험인식로봇(http://www.fiadot.com/TatterTools/1849)
16x2캐릭터 LCD(LC1621)에 글자찍기 성공!!!(http://www.fiadot.com/TatterTools/1835)

,
Hardware 2007. 5. 5. 11:11

jINa 완성기념 스샷~

학교에서 3월 30일날 발표하고 그때 찍어둔 사진들이

보고서 작성하면서 발견되서 이렇게 올려본다.

Home Robot
Free moveable robot
Avoiding wall and other things.
Detecting gas leak in your home
To give a person warning of the gas leak.

뭐 이런 구질구질한 수식어는 집어치우고

다양한 각도에서 찍은 동영상...에서 캡쳐한것들 ^^;

01234567891011


한 3달동안 띄엄띄엄 작업하면서 가장 크게 느낀점은...

HW는 아무나 하는게 아니구나 -_-;; 으하하

멤버쉽의 많은 사람들이 도와줬다.

민걸이햄, 성하햄, 깡, 완회씨.. 외에도

모두모두 캄사~ (__)


사용자 삽입 이미지

허접하게 나마 OrCAD로 만든 schematic도 첨부해본다..

,
Hardware 2007. 1. 31. 05:57

적외선 LED 테스트

적외선 수광부 발광부를 PORTE 0,1번핀에 각각 연결해서 330옴 저항달고 연결했다.
물론 수광부는 +, -를 반대로 꽂고...

ADC를 이용해서 10비트를 받아서 스트링으로 변환해서 찍었는데
최대 1023이 나와야 한다고 하는데 44밖에 안나온다 -_-;;

센싱은 되는데 값이 부정확하니 나중에 이를 어찌할꼬~ 흐흐

#define SetBit(ADDRESS,BIT)        (ADDRESS |= (1<<BIT))
#define ClearBit(ADDRESS,BIT)        (ADDRESS &= ~(1<<BIT))

#include <mega128.h>
#include <delay.h>
#include <stdlib.h>
#include <math.h>
 
 
#include <stdio.h>
#include <string.h>
                 

#include "lcd.h"  
#include "util.h"
#include "uart.h"

void AD_disp(int);

void main(void)
{
        unsigned char pszData[4]; 
        unsigned char string[20];
                        
        int ad_val;
  //      unsigned char receive_data = NULL;
        // LCD 포트 초기화
      LCDPortInit();
      // LCD 초기화 명령     
        LCDInit();    
      LCDControl(LCDCLEAR);
      LCDControl(LCDCLEAR);
   /*
          delay_ms(20);
          // 블루투스가 19200으로 셋팅되어 있으므로.
          UARTInit(19200);
*/       
       delay_ms(20);  
      
       LCDControl(LCDLINE1);
     LCDStringOut2("FIA");
      
//       #asm("sei");
       //블루투스를 통해 받을 거 밖에 없으므로 따로 작업할 것이 없다.
                    
//        PF.0 = 수광부
//        PF.1 = 발광부
      
       DDRF = 0x7F;
       PORTF = 0x40;
//        PORTF.1 = 1;

       ADMUX = 0x20;
       ADCSRA = 0x87;
       delay_ms(5);
      
       while(1)
       {  
           ADCSRA = 0xC7;
   
          while( ( ADCSRA & 0x10) == 0 );
           ad_val = ADCH;
           LCDControl(LCDLINE2);                
           itoa(ad_val, string);
           LCDStringOut(string);
           //AD_disp(ad_val);
           delay_ms(20); 
       }
}


void AD_disp(int val)
{
  unsigned char pszData[16];  

  float fval;
  int ival, buf;
  char N100, N10, N1;
 
  fval = (float)val * 5.0 / 1023.0;
  ival = (int)(fval * 100.0 + 0.5);
 
  N100 = ival / 100 + 48;
  buf = ival %100;
 
  N10 = buf / 10 + 48;
  N1 = buf % 10 + 48;   
 
           
// LCDControl(LCDCLEAR);
  LCDControl(LCDENTRY);
 
       
  LCDCharOut(N100);
  LCDCharOut(N10);
  LCDCharOut(N1); 
 
//  sprintf(pszData, "%c %c %c", N100, N10, N1);
//  LCDStringOut(pszData);
  delay_ms(300);  
}

,
Hardware 2007. 1. 29. 10:21

16x2캐릭터 LCD(LC1621)에 글자찍기 성공!!!

사용자 삽입 이미지


Atmega162 + 16x2캐릭터 LCD(LC1621)

V0(Contrast)에 GND 안물리면 안나온다는걸 뼈저리게 느끼는 순간 --;

핀배열은 다음과 같다.


핀: LC1621 - Atmega162
1 : GND - GND
2 : VCC - VCC (5V)
3 : V0 - GND
4 : RS - PA0
5 : RW - PA1
6 : E(Enable) - PA2
7 : DB0
8 : DB1
9 : DB2
10 : DB3
11 : DB4 - PA4
12 : DB5 - PA5
13 : DB6 - PA6
14 : DB7 - PA7
15 : 백라이트 VCC(5V)
16 : 백라이트 GND


4비트 제어를 하기 위해서 DB0~3까지 안쓰고 했는데~
궂이 4비트로 할필요는 없을듯한데 ;; 그렇게까지 핀수가 모자라다면
그냥 Atmega128로 넘어가는게 나을듯~

이상 3시간 반의 삽질결과~

관련 링크
마이크로마우스 Jina의 캐릭터 LCD(LC1621) 제어 소스 공개 (http://www.fiadot.com/TatterTools/1909)
Atmega128 마이크로마우스 위험인식로봇(http://www.fiadot.com/TatterTools/1849)

,
Hardware 2007. 1. 28. 06:32

스텝모터 제어~

SLA7024를 모터 드라이버를 사용하는 스텝모터(바디포함)를 구해서
모터를 돌렸다.

핀 배열은 다음과 같다.

200펄스당 1.8도인가 .. 그렇다고 한다;;(카더라~ 통신)

1 - VCC(AVR 5V)
2 - GND
3 - CLK A(클럭 : 딜레이 줘서 0,1주면 된다)
4 - CLK B
5 - ENABLE A(활성화 여부 : 1주면 켜진다)
6 - ENABLE B
7 - DIR A(방향 : 0이면 전진, 1이면 후진)
8 - DIR B
9 - PHASE (사용안함)
10 - VCC (Motor 10V)

데이터시트보고 가르쳐준 성하와 민경이 한테 감사의 마음을 ^^
모터빌려준 하지도 물론~ ㅋㅋ

,
Hardware 2007. 1. 27. 05:40

첫번째 AVR Atmega162 프로젝트~~ 뚜둥~

[결과]
mms://wm-002.cafe24.com/lovydayz/heart0005.mp4


[소스]


#include <mega162.h>
#include <delay.h>                          



#define NORMAL_DELAY 100   // delay per each led
#define MODE_DELAY   200   // mode change

#define LED_MAX      18    // total LED count


void InitLED();    
void SetLED(int nPos, int nStatus);
void SetAllLED(int nStatus);    // 전체 LED                   

void RightShiftLED(int nAcc, int bInc);   // 가속도, 누적
void LeftShiftLED(int nAcc, int nInc);             

void SplashLED(int nDelay, int nRepeat); // 번쩍 번쩍
       
void UpToDownLED(int nAcc);
void DownToUpLED(int nAcc);   

void StarSplashLED(int nAcc, int nRepeat);


int n;
int nDelay; // for calcuration accelation

void main()
{
DDRA = 0xff;
PORTA = 0x00;

DDRB = 0xff;
PORTB = 0x00;

DDRC = 0xff;
PORTC = 0x00;
 

while(1)
{               
// pattern 1
     nDelay = 150;
     RightShiftLED(-3,0);

     nDelay = 200;
     RightShiftLED(0,1);      
    
     nDelay = 150;
     LeftShiftLED(-3,0);
 
     nDelay = 200;
     LeftShiftLED(0,1); 
    
    
// pattern 2           
     SplashLED(500, 3);
    
// pattern 3
   
     nDelay = 100;
     UpToDownLED(100);          

     nDelay = 100;          
     DownToUpLED(100); 
                    
// pattern 4
     nDelay = 300;
     StarSplashLED(0,5);
}
}                

     

void InitLED()
{      
  PORTA = 0x00;
  PORTB = 0x00;
PORTC = 0x00;
       
  SetAllLED(0);  // 이거 없으니까 버그 생긴다-_-
  n = 0;        
}


void SetLED(int nPos, int nStatus)

  switch ( nPos )
  {
case 0: PORTA.0 = nStatus; break;
case 1: PORTA.1 = nStatus; break;
case 2: PORTA.2 = nStatus; break;
case 3: PORTA.3 = nStatus; break;
case 4: PORTA.4 = nStatus; break;
case 5: PORTA.5 = nStatus; break;
case 6: PORTA.6 = nStatus; break;
case 7: PORTC.0 = nStatus; break;
case 8: PORTC.1 = nStatus; break;
case 9: PORTC.2 = nStatus; break;
case 10: PORTC.3 = nStatus; break;
case 11: PORTC.4 = nStatus; break;
case 12: PORTC.5 = nStatus; break;
case 13: PORTC.6 = nStatus; break;
case 14: PORTC.7 = nStatus; break;
case 15: PORTB.0 = nStatus; break;
case 16: PORTB.1 = nStatus; break;
case 17: PORTB.2 = nStatus; break;  
  default: break;  
  }
 
}
 
void  SetAllLED(int nStatus)

  int nLedCnt;
  for(nLedCnt=0;nLedCnt<LED_MAX;nLedCnt++)
  { 
     SetLED(nLedCnt, nStatus);
  }                                       
}  

// whole LED on or off ..  
void SplashLED(int nDelay, int nRepeat)
{
  int bStatus = 1;
  int j=0;

  InitLED();
                    
  for(j=0;j<nRepeat*2;j++)
  { 
     SetAllLED(bStatus);
     bStatus = bStatus == 0 ? 1 : 0;
     delay_ms(nDelay); 
  }
}

     
void RightShiftLED(int nAcc, int bInc)

  InitLED();
 
  for(n=0;n<18;n++)
  {   
     if ( 0 == bInc )
        SetLED(n-1, 0);
       
     SetLED(n, 1); 
        
     if ( 0 < nDelay+nAcc && 5000 >= nDelay+nAcc )
        nDelay += nAcc;
     delay_ms(nDelay);                        
  }
 
//   delay_ms(MODE_DELAY);
}
 
void LeftShiftLED(int nAcc, int bInc)
{             
  InitLED();  
 
  for(n=17;n>=0;n--)
  { 
     if ( 0 == bInc )
        SetLED(n+1, 0);
       
     SetLED(n, 1);
     if ( 0 < nDelay+nAcc && 5000 >= nDelay+nAcc )
        nDelay += nAcc;   
     delay_ms(nDelay);        
  }       
 
//   delay_ms(MODE_DELAY);
}
                        

void UpToDownLED(int nAcc)
{
  InitLED();
 
  for(n=0;n<9;n++)
  {         
     SetLED(n,1);
     SetLED(LED_MAX-n,1);
         
     if ( 0 < nDelay+nAcc && 5000 >= nDelay+nAcc )
        nDelay += nAcc;
     delay_ms(nDelay);                        
  }  
 
  SetLED(n,1);
  delay_ms(nDelay);

   
void DownToUpLED(int nAcc)
{
  InitLED();
 
  SetLED(9,1);
  delay_ms(nDelay);
    
  for(n=8;n>=0;n--)
  {         
     SetLED(n,1);
     SetLED(LED_MAX-n,1);
         
     if ( 0 < nDelay+nAcc && 5000 >= nDelay+nAcc )
        nDelay += nAcc;
     delay_ms(nDelay);
  } 
}                        
 
void StarSplashLED(int nAcc, int nRepeat)
{  
  int nStatus = 0;         
  int t=0;

  InitLED();
 
for(t=0;t<nRepeat;t++)

for(n=0;n<18;n++)
{          
  if ( 0 == nStatus )
  {
   if ( 0 == n%2 )
    SetLED(n,1);
   else
    SetLED(n,0);
  }      
  else
  {
   if ( 1 == n%2 )
    SetLED(n,1);        
   else
    SetLED(n,0);           
  }                           

nStatus = nStatus == 0 ? 1 : 0;                              

if ( 0 < nDelay+nAcc && 5000 >= nDelay+nAcc )
  nDelay += nAcc;
delay_ms(nDelay);
}
}

,
Hardware 2007. 1. 27. 01:19

AVR의 세계~ 유후~

누리 프로젝트와 개인적인 일로 AVR Atmega를 해야만 한다!!
24일 서울에 교육갔다왔더니 부품이 와있군~ 으흐흐~

앞으로 AVR에 대해서 공부하는걸 이 분류에 넣고자 추가해보았다.
최종 목표는 몇가지 센서를 부착하고 있는 마이크로 마우스~!!!

진행상황과 알게된 지식을 정리하고자 한다.


현재까지 진해상황

24일 : AVR-ISP(Atmega에 케이블을 통해 프로그램을 심을수 있는 In system Programming)
        2시간 수소문 끝에 구함 +_+;;  빵판에 LED 불켜봄  앗싸~조쿠나
        민걸이햄이 atmega128보드를 던져줘서 그놈으로 LED테스트~ 잘되네~

       CodeVisionAVR 1.24.8d 기본셋팅
       Setting - Programmer Settings 에서
          AVR Chip Programmer Type : Kanda Systems STK200+/300
          Printer Port : LPT1: 378h
          Delay Multiplier : 1
          Atmega169 CKDIV8 Fuse Warning : 체크

              

25일 : ISP를 통해 Atmega162에 프로그램하기 위해서 ISP케이블과 10핀을 이용해
        납땜. 핀 구조를 몰라서 개삽질함.
        __ -__    (위에가 뽈록한 컨넥터를 기준으로 )
        13579  
        24680
           
        1 : SCK 8핀
        2 : ACC(+)
        3 : GND(-)
        4 : X
        5 : TXD0 11핀
        6 : GND
        7 : RXD0 10핀
        8 : GND
        9 : RESET 9핀

        이거 한다고 민걸이햄 보드 핀 배열과 온갖 책 뒤짐 -_-;
        책에 있는게 맞는지 몰라서 몇번 삽질~ 흐흐흐

        XTAL1,2(19,18핀)에 크리스탈 16MHz짜리 박고 20pF 콘덴서 2개 박고 GND연결
        2핀으로 전원부 연결(입력은 5V)
        4핀짜리 소켓하나 박아서 GND, ACC, 17핀, x) 해서 LED로 테스트

        테스트 소스~

#include <mega128.h>
            
void FiaDelay(int nRemain);

void main()
{         
      
       DDRD = 0xFF;
      
       while(1)
       {
       PORTD = 0xFF;       
       FiaDelay(50);
      
       PORTD = 0x00;
       FiaDelay(50);
       }  
}     

void FiaDelay(int nRemain)
{  
     int i,j,k;


    for(i=0;i<200;i++)
        for(j=0;j<200;j++)
               for(k=0;k<nRemain;k++); 
}



26일 : LED18개를 제어하기 위해 새로운 만능기판에 땜질 시작 했다.
        전윈 2핀짜리를 빼서 7805에 연결하고(나중에 9V건전지로 할 예정) 스위치 연결.
        대략 땜질하는데 3시간 소요 -_-;; 아고 어깨야~
        불이 3개가 안들어와서 포트 문젠가 싶었더니
        완회씌가 include를 Atmega128로 해놔서 그랬다는군 ;;; 난또 PE포트가 전류가 약한줄 알았3;;
         
        오늘남은거는 LED하나씩 제어해보는거~ 타이머까지 하면 좋고~
       
 
,
TOTAL TODAY