tiny은 가격도 싸고 칩 단독으로 회로구성이 가능해서 꼭 한번 해보고 싶었는데
ISP를 구입하게 되서 프로그래을 해봤습니다.

간단히 LED 8개가 순차적으로 왔다 갔다 하는 예제 입니다.
tiny와 isp를 연결한 모습입니다.
tiny의 1, 2, 3, 5, 6, 10 번핀을 ISP에 각 핀에 연결합니다.
VTG가 VCC 입니다.
저는 매번 결선하기 귀찮아서 핀헤더로 연결했습니다.



led는 11 ~ 20번 즉 PA0 ~ PA7번에 저항과 같이 연결했습니다.
sw는 PB6에 풀다운저항으로 연결하였습니다.
핀헤더와 isp를 제거하고 칩과 led만 남아있는 모습입니다.
전원은 충전지 4개 4.8v를 연결했습니다.
ATTiny26L-8PI는 2.7-5.5V의 전압을 허용하므로 활용도가 높습니다. 
스위치를 누르면 led가 왔다 갔다 합니다.

bascom-avr 소스

저항 읽는 방법은 이전 포스팅 2009/04/08  저항값 읽기 를 참고 하세요.


일단 공식 V = IR  , W = VI


LED 스팩이 2V, 20mA 이고 전원으로 5V를 사용할 경우

R = V / I
   = (5 - 2) / 0.02
   = 3 / 0.02
   = 150

150옴을 사용해야한다.



소비전력은

W = V I
   = 2 x 0.02
   = 0.04

0.04 와트이다.

추가) 웹에 LED 저항 계산해 주는 곳이 있네요.



저항계산기
소스전압
LED 동작전압
LED 동작전류 (mA)

  1. BlogIcon christian louboutins 2013.04.17 17:45

    very good


    very good


    very good

설명도 안읽어 보고 대충 USB 케이블부터 연결했다.
드라이버 설치화면이 떠서 보니 다운 받은 개발 환경의 \arduino-0015\drivers\FTDI USB Drivers 폴더가 있어서 드라이버설치
문제는 이제 부터였다.

개발환경(arduino.exe)을 실행하고 대충 blink 예제(스케치)를 불러왔는데...
어떤게 컴파일 버튼인지 모르겠네...에라 모르겠다 아무거나 눌러보자 .. 플레이 버튼을 누르니 컴파일은 된다...

하드웨어로 프로그램을 다운 받아야하는데 어떤거지....
버튼을 보니 Upload to I/O board 라는 버튼이 있다 [ ->| ] 이렇게 생긴....
다운로드가 아니고 업로드구나.....^^a
엥 ...눌렀으나 오류가 난다. 설명 보자....ㅡㅡ;;;

장치관리자에서 USB Serial port 가 COM 몇번 포트로 잡혀 있는지 확인하고
tool / serial port / com? 에서 똑같이 설정한다.
tool / Board 메뉴에서 자신의 보드를 선택한다.
그리고 다시 업로드....

avrdude: stk500_get sync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

이런 시뻘건 오류가 뜬다....무서워라.....^^;

한참 씨름하다 다시보니 보드를 잘못 설정했다.
내 보드가 Duemilanove인데 처음 arduino를 실행하니 Arduino Diecimila or Duemilanove w/ATmega168 이 선택되어 있었는데 Duemilanove만 보고 어라 자동인식(자동은 개뿔ㅡㅡ+)하네 하고 뒤에 168을 확인 안한거다. 너무 많은걸 기대했나보다.
내 보드는 Arduino Duemilanove w/ATmega328 이다.
설정을 다시 하니 업로드가 잘 된다.


개발 환경은 너무 심플하다. 비주얼 스튜디오 쓰다 이거 쓰면 완전 노트패드 수준이다...
하다못해 에러 문구 복사는 가능해야 검색이라도 해볼텐데 그것도 안된다. ㅜㅜ

blink 예제

int ledPin = 13;                // LED connected to digital pin 13

void setup()                    // run once, when the sketch starts
{
  pinMode(ledPin, OUTPUT);      // sets the digital pin as output
}

void loop()                     // run over and over again
{
  digitalWrite(ledPin, HIGH);   // sets the LED on
  delay(1000);                  // waits for a second
  digitalWrite(ledPin, LOW);    // sets the LED off
  delay(1000);                  // waits for a second
}




보드 구성
led 의 긴 다리(+)를 13번핀에 짧은 다리를 GND에 꽂는다.
원래는 저항을 같이 연결해야 led가 타지 않는데 13번 핀은 내부적으로 저항이 들어가 있는것 같다.
또 한가지 보드 내부에 있는 led하나가 똑같이 동작하는 걸 보니 13번 핀에 연결되 있는것 같다.
즉 (arduino Duemilanove 보드의 경우) 아무것도 연결하지 않아도 보드만으로 위 소스의 결과를 확인가능하다.

 

arduino 설정 순서
1. http://arduino.cc/en/Main/Software 에서 개발 환경 다운로드 후 아무 폴더나 압축을 푼다.
2. arduino 보드를 연결, 장치인식 후 \arduino-0015\drivers\FTDI USB Drivers 경로에서 드라이버 설치
3. arduino.exe 실행
4. 장치관리자에서 USB Serial port 가 COM 몇번 포트로 잡혀 있는지 확인
5. arduino(개발환경)메뉴에서 tool / serial port / com? 에서 똑같이 설정한다.
6. tool / Board 메뉴에서 자신의 보드를 선택한다(328인지 168인지 정확히 확인하자 ^^;)
7. file / sketchbook / examples / digital / blink 를 연다.
8. Upload to I/O board 버튼을 누른다. [ ->| ]
9. 결과확인

 

arduino는 단순한 IO 보드로 만들어진 또는 임베디드컴퓨팅) 플렛폼이다.
메인칩은 AVR인 ATmega168을 주로 사용한다.

IO는 디지털 입출력핀이 14개, 아날로그 입력이 6개, PWM 6개, 시리얼 통신포트, usb 단자, 외부 전원단자를 갖추고 있다.

아르두이노의 장점은 전자회로, 또는 프로그래밍에 익숙치않은 사람도 
쉽게 접근 가능하게 그 문턱을 낮췄다는데 의의가 있다. 
기존 AVR 프로그래밍의 경우 코딩하고 컴파일하고, isp 같은 장치로 보드에 프로그램 업로드하고 오류나면 다시 디버깅하고를 반복해야 했으나 ,
아르두이노는 usb에 꽂기만하면 연결되고 개발환경에서 업로드 버튼만 누르면 보드에 프로그램이 업로드 되어 실행된다.
전원도 USB 자체에서 충당한다.
개발 언어도 자체 언어를 사용하여 직관적인 몇개의 명령만으로 원하는 결과를 얻을수 있다.
 


LED에 불을 켜려면 LED를13번 핀에 다리하나 연결하고,GND핀에 다리하나 연결하고 끝

프로그램은
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
두줄이면 됩니다. 

불을 끄려면 
digitalWrite(13, LOW);





두개를 번갈아 쓰면 불이 깜빡이겠죠?



각종 센서와 아날로그 입력단자를 사용하면 센서도 쉽게 사용할수 있다.
예로 온도 센서를 연결한다면 디지털 온도계가 되고, 나침판 센서나 적외서 거리 센서등도 이용할수 있다.

arduino에는 shield라고 불리는 확장 보드들이 존제한다. 이 보드들은 arduino 보드의 핀에 꽂는 형태로 만들어서 얹기만 하면 기능이 확장되는것으로 무선통신 모듈, 블루투스 모듈, 이더넷 모듈, lcd제어 모듈, 서보모터 제어 모듈등 여러가지가 있다.

소스 코드도 오픈, H/W도 오픈이게 때문에 회로도도 공개되어 있다.
이쯤 되면 머리속에 상상력이 마구마구 생기지 않는가?

평소에 머리속으로 이런게 되면 좋겠다. 싶은것을 arduino는 실생활에 가능하게 해둔다는데 매력이 있다.

당신에게 필요한건 상상력 뿐!!!

+ Recent posts