아두이노 활용

Etc/Atelier 2013. 6. 22. 05:59

// 아두이노 (Arduino) 활용


RX1, TX1 : 5V 시리얼 통신
AREF : Reference voltage for the analog inputs
IOREF : 보드 전압을 쉴드(애드온 보드)에 알려줌
Vin : 전원 입력
SLC, SDA : TWI 통신
    TWI(Two-wire Serial Interface) = I2C(Inter-Integrated Circuit ) 시리얼 통신
SPI : Serial Peripheral Interface Bus , 시리얼 통신
ICSP : 다른 AVR의 부트로더를 굽는 기능

//================================================================================
* loop stop(멈추기), 무한루프 방지
    - 방법1 : setup()의 마지막에 실행할 코드를 넣고 loop()에는 코드를 넣지 않는다.
    - 방법2 : loop()의 마지막에 while(1) delay(1000); 를 넣는다.

//================================================================================
* LED 깜빡이기
int led = 11;//13번은 내장LED

void setup() {               
  pinMode(led, OUTPUT);
  blink();//무한루프 방지하기위해 요기에 위치
}

void blink()
{
  for(int i=0; i<3; i++){
  digitalWrite(led, HIGH);   // 켜기
  delay(100);              
  digitalWrite(led, LOW);    // 끄기
  delay(500);
  }
}

void loop() {
  // while(1) delay(1000);//실행 중단
}


//================================================================================
* 조명(빛) 감지(조도센서)
    - 결과 시리얼 출력

int led =11;
int sensor =0;
int ison=0, prest=0, count=0;
 
void setup()
{
  pinMode(led, OUTPUT);
}

void loop()
{
  String str;
  char sStatus[10];

  int val= analogRead(sensor);
  if( val < 900){
    //str="on-"+val;
    sprintf(sStatus,"%d-on-%d", count,val);
    ison=1;
    digitalWrite(led, HIGH);
   
  }else if( val >= 900){
    //str="off-"+val;
    sprintf(sStatus,"%d-off-%d", count, val);
    ison=0;
    digitalWrite(led, LOW);
  }
  if( prest != ison){
    prest = ison;
    Serial.println(sStatus);//시리얼 출력
  }
  delay(500);
 
  //if( count++ > 5){    while(1) delay(1000);  }
}

//================================================================================
* 서보 모터  제어

    - 모터 : HiTec HS-55
        - 전압 : 4.8V ~ 6.0V
        - 전류 : 5.4mA ~ 150mA
        - 토크 : 1.1kg.cm


#include <Servo.h>

Servo myservo; 

int angle = 0;    //

void setup()
{
  myservo.attach(9); 
  //myservo.write( 0 );
  roll();
}


void roll()
{
  for(angle = 0; angle < 180; angle += 10)  // goes from 0 degrees to 180 degrees
  {                                       
    myservo.write(angle);    // tell servo to go to position in variable 'angle'
    delay(300);                      
  }
 
  for(angle = 180; angle >= 1; angle -= 10) // goes from 180 degrees to 0 degrees
  {
    myservo.write(angle);            // move  servo in opposite direction
    delay(300);                      
  }
 
}
     
void loop()
{



//================================================================================
    - 참고 자료
    - 모터 : NK201-01AT
http://www.motorbank.co.kr/ab-1486255-124&category_1=~A
        HYBRID TYPE
        Bipolar : A-:Blue , A+:Red ,
                  B+:Green , B-:Black
        - 전압 : 4.8V, 200mA, 24옴, 토크 : 80gf-cm

    - 모터 : HiTec HS-311
        - 전압 : 4.8V ~ 6.0V
        - 전류 : 7.4mA ~ 180mA
        - 토크 : 3.0 ~ 3.7kg.cm

    - 모터드라이버 : NT-BST2402
http://www.devicemart.co.kr/goods/view.php?seq=35997
    바이폴라용 드라이버. 입력:12V~30V, 최대전류:1.5A, 1/8 MicroStepping(딥스위치설정), 최대입력주파수:100Khz,


    - 참고 : USB245-DO
    http://www.eleparts.co.kr/EPX34338
    http://www.c-linktech.co.kr/index_item_view.html?pgCode=018036-000009
    http://www.c-linktech.co.kr/board4.html?tbl_name=c_linktech_co_kr&bbs_name=board4&func_name=view&idx=446&pageno=1&scrt=
    외부전원 전압 : 5V ~ 40V, 500mA
   
//================================================================================
* 스위치 입력 읽기
const int ledPin = 13;            // choose the pin for the LED
const int inputPin = 2;           // choose the input pin (for a pushbutton)

void setup() {
  pinMode(ledPin, OUTPUT);         // declare LED as output
  pinMode(inputPin, INPUT);        // declare pushbutton as input
}

void loop(){
  int val = digitalRead(inputPin);  // read input value
  if (val == HIGH)                  // check if the input is HIGH
  {
    digitalWrite(ledPin, HIGH);     // turn LED on if switch is pressed
    Serial.println("on");
  }
  else
  {
    digitalWrite(ledPin, LOW);      // turn LED off
    Serial.println("off");
  }
  delay(1000);
}


//================================================================================
* 가변저항 읽기
    - 아날로그 값읽기

const int potPin = 0;    // select the input pin for the potentiometer
const int ledPin = 13;   // select the pin for the LED
int val = 0;             // variable to store the value coming from the sensor

void setup()
{
  pinMode(ledPin, OUTPUT);  // declare the ledPin as an OUTPUT
}

void loop() {
  val = analogRead(potPin);   // read the voltage on the pot

  Serial.println( val );
  delay(1000);
 
}    




반응형

'Etc > Atelier' 카테고리의 다른 글

야광시계, 연기감지기 방사능량  (0) 2013.06.29
전선 굵기 AWG(American wire gauge)  (0) 2013.06.27
라즈베리파이 활용  (0) 2013.06.17
모터 정보  (0) 2013.06.12
라즈베리 파이 (Raspberry Pi)  (2) 2013.04.14
Posted by codens