วันศุกร์ที่ 29 สิงหาคม พ.ศ. 2557

Assignment1# Arduino LED::RGB


1# LED-RGB



Part.

  1. LED-RGB Commond Cathods          1               ตัว
  2. r 330 ohm                                      6               ตัว
  3. push_button                                   3               ตัว
  4. Arduino Broad                                1               บอร์ด
  5. สายไฟสำหรับต่อวงจร
  6. บอร์ดต่อทดลอง

Schematic.






Code.

1. TEST_SW : ทดสอบการทำงานของปุ่มกดทั้ง 3 โดย เมื่อปุ่มประจำสีใดๆ(R,G,B)ถูกกด จะทำให้ เพิ่มค่า Duty ของสีๆนั้นขึ้น ในช่วง 0-255 เมื่อครบแล้วจึงกลับไปเริ่มที่ 0 ใหม่

// file : Test_Push_Button.ino

#define red_in 10
#define green_in 9
#define blue_in 8

uint8_t red_duty = 0;   // RED_Duty (0-255)
uint8_t green_duty = 0; // GREEN_Duty (0-255)
uint8_t blue_duty = 0;  // BLUE_Duty (0-255)
boolean s1 = true;      // State_1
boolean s2 = false;     // State_2

void setup(){
  Serial.begin(9600);
  pinMode(red_in, INPUT);
  pinMode(green_in, INPUT);
  pinMode(blue_in, INPUT);
}

void loop(){
  if( s1 ){
    if((digitalRead(red_in) == LOW)||(digitalRead(green_in) == LOW)||(digitalRead(blue_in) == LOW)){ 
      delay(10); 
      s1 = false; 
      s2 = true; 
    }
  }
  if( s2 ){
    // Increase Duty ..
    if(digitalRead(red_in) == LOW){ delayMicroseconds(100); red_duty += 8; }
    else if(digitalRead(green_in) == LOW){ delayMicroseconds(100); green_duty += 8; }
    else if(digitalRead(blue_in) == LOW){ delayMicroseconds(100); blue_duty += 8; }
    
    if((digitalRead(red_in) == HIGH)||(digitalRead(green_in) == HIGH)||(digitalRead(blue_in) == HIGH)){ 
      delay(10); 
      s2 = false; 
      s1 = true; 
    }
  }
  
  // Check
  Serial.print("R");
  Serial.print( red_duty );
  Serial.print(", G");
  Serial.print( green_duty );
  Serial.print(", B");
  Serial.println(blue_duty );
}


( รูปการต่อวงจรทดสอบปุ่มกด )

( แสดงค่า Duty ของแต่ละสี ณ เวลานั้น )



2. Class RGB_LED : เป็น Class ที่เก็บหมายเลข Pin ของแต่ละสีเอาไว้ และมี Mathods สำหรับเขียนค่าให้ RGB_LED เปล่งแสงแต่ละสีออกมา

- ประกอบด้วย 
   - Constructors
      RGB_LEDint red_pin, int green_pin, int blue_pin )
      * ไว้ใช้เก็บหมายเลข Pin แต่ละสี
   -  Methods 
      set_Coloruint8_t redDuty, uint8_t greenDutyuint8_t blueDuty )
      * ไว้ใช้สำหรับกำหนดค่าสีของ LED_RGB ตามพารามิตเตอร์ที่รับมา

// file : RGB_LED.h

#include <Arduino.h>
#include <String.h>
#include <iostream>
using namespace std;

class RGB_LED {
 // Attribute
 private:
  int _red_pin;
  int _green_pin;
  int _blue_pin;
 public:
  RGB_LED(int red_pin, int green_pin, int blue_pin );
  void set_Color(uint8_t redDuty, uint8_t greenDuty, uint8_t blueDuty);
};

// file : RGB_LED.cpp

#include "RGB_LED.h"

RGB_LED::RGB_LED(int red_pin, int green_pin, int blue_pin ){ // Constructors Set Pin R,G and B
 _red_pin = red_pin;
 _green_pin = green_pin;
 _blue_pin = blue_pin;
 pinMode( _red_pin, OUTPUT );
   pinMode( _green_pin, OUTPUT );
   pinMode( _blue_pin, OUTPUT );
}

// Method Set_Color of RGB LED
void RGB_LED::set_Color(uint8_t redDuty, uint8_t greenDuty,uint8_t blueDuty){
 analogWrite( _red_pin, redDuty );
   analogWrite( _green_pin, greenDuty );
   analogWrite( _blue_pin, blueDuty );
}


3. Arduino_CODE : นำ 2 ส่วนที่กล่าวไปด้านบน มารวมกัน และใช้ Delay จากการนับตัวแปร Timer_1 ตั้ง Interrupt ไว้ที่ 1 ms

// file : RGB_LED_Ver1.ino 

#include <RGB_LED.h>

// Set_pin
#define red_in 10                            // input_SW_RED
#define green_in 9                           // input_SW_GREEN
#define blue_in 8                            // input_SW_BLUE

int redPin = 6;                              // output_RED
int greenPin = 5;                            // output_GREEN
int bluePin = 3;                             // output_BLUE

uint8_t red_duty = 0;                        // RED_Duty (0-255)
uint8_t green_duty = 0;                      // GREEN_Duty (0-255)
uint8_t blue_duty = 0;                       // BLUE_Duty (0-255)
boolean s1 = true;                           // State_1
boolean s2 = false;                          // State_2

// Delay
boolean state_debounce = false;
boolean debounce = false;
uint8_t count10ms = 10;
boolean state_100ms = false;
boolean past100ms = false;
uint8_t count100ms = 100;

RGB_LED obj( redPin, greenPin, bluePin );    // Create object from class RGB_LED

void setup(){
  T1_init();                                 // Set Timer_1 OverflowInterrupt 1 ms
  pinMode(red_in, INPUT);                    // Input red_sw
  pinMode(green_in, INPUT);                  // Input green_sw
  pinMode(blue_in, INPUT);                   // Input blue_sw
  Serial.begin(9600);
}

void loop(){
  
  // State_Input_SW
  if( s1 ){
    if((digitalRead(red_in) == LOW)||(digitalRead(green_in) == LOW)||(digitalRead(blue_in) == LOW)){
      state_debounce = true; 
      if( debounce ){                        // Debounce SW => Delay 10 ms
        s1 = false; 
        s2 = true;
        debounce = false;
      }
    }
  }
  if( s2 ){
    // Increase Duty ..(With Delay 100 ms)
    if(digitalRead(red_in) == LOW){
      state_100ms = true;                    
      if( past100ms ){ red_duty += 8; past100ms = false;}
    }
    else if(digitalRead(green_in) == LOW){ 
      state_100ms = true;
      if( past100ms ){ green_duty += 8; past100ms = false;}
    }
    else if(digitalRead(blue_in) == LOW){
      state_100ms = true;
      if( past100ms ){ blue_duty += 8; past100ms = false;}
    }
    
    if((digitalRead(red_in) == HIGH)||(digitalRead(green_in) == HIGH)||(digitalRead(blue_in) == HIGH)){ 
      state_debounce = true; 
      if( debounce ){                        // Debounce SW => Delay 10 ms
        s2 = false; 
        s1 = true;
        debounce = false;
      } 
    }
  }
  
  // Check
  Serial.print("R");
  Serial.print( red_duty );
  Serial.print(", G");
  Serial.print( green_duty );
  Serial.print(", B");
  Serial.println(blue_duty );
  
  obj.set_Color( red_duty, green_duty, blue_duty);      // Set Color
}

/* T1_init from Jannarong */
void T1_init()
{
   TCNT1  = 0;
   OCR1A  = 0;
   OCR1B  = 0;
   ICR1   = 0;
   TCCR1A = 0;
   TCCR1B = 0;
   TIMSK1 = 0; /* DISABLE ALL INTERRUPTS */
   TIFR1  = (1<<ICF1) | (1<<OCF1B) | (1<<OCF1A) | (1<<TOV1);
   
   TCNT1  = 65286; /* 2^16 - 250 = 65286 => 1 msec */
   /* USE TIMER/COUNT1 IN NORMAL MODE(NO OUTPUT COMPARE, NO PWM) */
   TCCR1B |= (1<<CS11) | (1<<CS10); /* PRESCALER = 64 */
   TIMSK1 = (1<<TOIE1); /* Timer/Countern, Overflow Interrupt Enable */
}

ISR(TIMER1_OVF_vect){
   TCNT1 = 65286;
   // Delay => debounce_SW
   if( state_debounce ){
     if( count10ms <= 0 ){
       count10ms = 10;
       state_debounce = false;
       debounce = true;
     }else{ count10ms -= 1; }
   }else{ count10ms = 10; }
   
   // Delay => increase_Duty
   if( state_100ms ){
     if( count100ms <= 0 ){
       count100ms = 100;
       state_100ms = false;
       past100ms = true;
     }else{ count100ms -= 1; }
   }else{ count100ms = 100; }
   
}



( รูปภาพแสดงการทำงาน )








วันศุกร์ที่ 22 สิงหาคม พ.ศ. 2557

Assignment- เปรียบเทียบข้อมูลของบอร์ด Arduino


รุ่นของบอร์ด Arduino ที่นำมาเปรียบเทียบ

ประเด็นที่นำมาเปรียบเทียบได้แก่

  • Processor
  • Operating Voltage/Input Voltage 
  • CPU Speed
  • Analog In/Out
  • Digital IO/PWM
  • EEPROM [KB]
  • SRAM[KB]
  • Flash[KB]
  • USB
  • UART

ตารางเปรียบเทียบ spec ของบอร์ด Arduino Uno,  Arduino Leonardo, Arduino Mega2560


กราฟแสดงระดับความนิยมของบอร์ด Arduino Uno, Arduino Leonardo, Arduino Mega2560


    ใช้ google เทรนด์ ช่วยในการเปรียบเทียบความนิยมของบอร์ด Arduino ทั้ง 3 รุ่น คือ 
    - Arduino Uno(สีฟ้า)
    - Arduino Leonardo(สีแดง)
    - Arduino Mega2560(สีเหลือง)
    * ซึ่งสามารถดูข้อมูลเชิงลึกด้านอื่นๆ ได้ที่นี่


อ้างอิง ref- http://www.google.com/trends/



อ้างอิง :





















ศึกษาข้อมูลของบอร์ด Arduino Mega2560

อ้างอิง ref - http://arduino.cc/en/Main/arduinoBoardMega2560


Overview
    Arduino Mega 2560 เป็นบอร์ดไมโครคอนโทรลเลอร์ที่ทำงานบนพื้นฐานของ ATmega2560 ซึ่งประกอบด้วย
   
    - 54 digital input/output pins ( 15 pin สามารถใช้เป็น PWM output ได้ )
    -  16 analog inputs
    -
4 UARTs
    - 16 MHz crystal oscillator ( ใช้สำหรับกรองความถี่ให้กับบอร์ดไมโครคอนโทรลเลอร์ )
    - USB connection
    - ช่องเสียบแหล่งจ่าย
    - ICSP header :In-Circuit Serial Programming  (ส่วนที่เป็น AVR ขนาดเล็กสำหรับการโปรแกรม Arduino ซึ่งประกอบด้วย MOSI, MISO, SCK, RESET, VCC,GND  )
    - ปุ่มกด reset
    
    โดยบอร์ด Arduino  Leonardo นี้มีทุกสิ่งที่ไมโครคอนโทรลเลอร์จำเป็นต้องใช้อย่างการต่อไฟเลี้ยงสามารถทำได้ทั้งการเชื่อมต่อเข้ากับ USB cable หรือ จ่ายไฟด้วย AC-DC adapter หรือ การใช้แบตเตอรี่ ซึ่ง Mega เป็นบอร์ดที่เข้ากันได้กับ shield ที่ออกแบบมาเพื่อ Arduino Duemilanove หรือ Diecimila

    Mega 2560 นี้มีความแตกต่างจากบอร์ดก่อนหน้าตรงที่ไม่ใช้ FTDI USB-to-serial driver chip แต่จะมี ATmega16U2 เข้ามาเป็นโปรแกรมแปลง USB-to-serial

   Arduino Mega2560 Revision 2 มี ATmega8U2 ทำให้อัพเดท firmware ผ่าน USB protocal ที่เรียกว่า DFU( Device Firmware Update ) ได้ง่ายขึ้น

   Arduino Mega Revision 3 มี featureใหม่ๆเพิ่มขึ้นมาดังนี้
    - 1.0 pinout:  เพิ่ม SDA และ SCL (อยู่ใกล้กับ AREF pin) และอีกสอง pins ใหม่คือ IOREF เป็น pin ที่ใช้ในการเชื่อมต่อกับ shields เพื่อแปลงเป็นแรงดันที่ได้จากบอร์ด ส่วนอีก 1 pin ที่เหลือมีไว้สำหรับใช้ร่วมกับ AVR ในอนาคต
    - วงจร Reset ที่ดีขึ้น
    - ใช้ ATmega 16U2 แทน 8U2

อ้างอิง ref - http://forum.arduino.cc/index.php/topic,146511.0.html 


Power 
    Arduino Mega สามารถเชื่อมรับพลังงานโดยการเชื่อมต่อ micro USB connector หรือ จาก power supply จากภายนอกได้ โดยแหล่งพลังงานจะถูกเลือกโดยอัตโนมัติ

    แหล่งจ่ายจากภายนอกสามารถมาได้จาก AC-to-DC adapter หรือจากแบตเตอรี่ โดยต่อเข้ากับ 2.1mm center-positive plug ไปยังช่องเสียบแหล่งจ่าย และการต่อเข้ากับแบตเตอรี่สามารถทำได้โดยการต่อเข้ากับ GND และ Vin pin header ของ power conecter

    บอร์ดสามารถทำงานได้ในช่วงแรงดัน 6 ถึง 20 volts ถ้า แหล่งจ่ายมีค่าต่ำกว่า 7 V อาจส่งผลให้ 5 V pin มีแรงดันที่ต่ำกว่า 5V และ บอร์ดอาจจะไม่เสถียร แต่ถ้าหากแรงดันมีค่าสูงกว่า 12 V อาจส่งผลให้บอร์ด Overheat และอาจทำให้บอร์ดเสียหายได้  ดังนั้นช่วงแรงดันที่เหมาะสมกับบอร์ดคือ  7 V ถึง 12 V

    - VIN เป็น input voltage ของบอร์ด Arduino โดยใช้แหล่งจ่ายจากภายนอก 
    - 5V เป็น output pin ที่ควบคุม 5 V จากบอร์ด 
    - 3V3 เป็น 3.3 volt supply ที่สร้างขึ้นจาก regulator บนบอร์ด และให้กระแสได้สูงสุด 50 mA
    - GND เป็น groud pin
    - IOREF เป็น pin ที่ให้ voltage reference กับไมโครคอนโทรลเลอร์ เพื่อเลือกค่าแรงดันให้กับ shield ที่มาเชื่อมต่อกับบอร์ด

Memory
    ATmega2560 มีหน่วยความจำ 256 KB (8 KB ใช้สำหรับ bootloader ) นอกจากนี้ยังมีอีก 8 KB สำหรับ   SRAM และ 4 KB สำหรับ EEPROM

Input and Output
    ในแต่ละ digital pins ทั้ง 54 pins บนบอร์ด Arduino Uno สามารถเป็นได้ทั้ง input และ output โดยจะทำงานที่แรงดัน 5 V และให้กระแสสูงสุด 40 mA      
    ฟังก์ชันอื่นๆเพิ่มเติม 
    Serial: 0 (Rx) และ 1(Tx); Serial 1: 19(Rx) และ 18 (Tx); Serial 2: 17 (Rx) และ 16(Tx); Serial 3:15 (Rx) และ 14 (Tx)  ใช้สำหรับรับ (Rx) และส่ง(Tx) TTL serial data โดย pin 0 และ 1 จะถูกเชื่อมต่อไปยัง corresponding pins ของ ATmega16U2 USB-to-TTL serial  chip
       
    External Interrupts: 2 (interrupt 0) , 3 (interrupt 1), 18 (interrupt 5), 19 (interrupt 4), 20 (interrupt 3), 21 (interrupt 2). pins เหล่านี้สามารถที่จะกำหนดค่าที่เรียก interrupt ในค่าต่ำๆ, ขอบขาขึ้นและลง หรือเปลี่ยนแปลงค่า

    PWM: 2 ถึง 13 และ 44 ถึง 46 ให้ output PWM output 8-bits 

    SPI: 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS) ใช้สำหรับรองรับการสื่อสารแบบ SPI โดยที่ไม่เกี่ยวข้องกันกับ ICSP header ซึ่งจะมีลักษณะคล้ายกับ Uno, Duemilanove และ Diecimila

    LED 13 : เป็น build-in LED ที่เชื่อมต่อกับ digital pin 13 เมื่อ pin มีค่าเป็น HIGH LED จะติด , แต่เมื่อ pin เป็น LOW LED จะดับ

    TWI : 20 (SDA) and 21 (SCL). รองรับการเชื่อมต่อแบบ TWI(I2C)

    บอร์ด Mega2560  มี 16 analog inputs  แต่ละ pins ให้ความละเอียด 10 bits  
    
    AREF. แรงดันอ้างอิง สำหรับ analog input

    Reset ใช้ในการ reset ไมโครคอนโทรลเลอร์  โดยทั่วไปจะใช้โดยการเพิ่มปุ่ม reset ไว้บน sheild เพื่อป้องกันปุ่มที่อยู่บนบอร์ด

Communication
    Arduino Uno สามารถสื่อสารกับคอมพิวเตอร์ ,Arduino ตัวอื่นๆ หรือ microcontroller ได้ โดยที่ไมโครคอนโทรลเลอร์บนบอร์ด คือ ATmega32U4 จะให้การสื่อสารแบบอนุกรม UART TTL (5 V) ซึ่งมีอยู่ใน pins 0 (Rx) และ 1 (Tx) นอกจากนี้ 32U4 สามารถใช้การสื่อสารแบบอนุกรมผ่าน USB และจะปรากฏเป็น COM port เสมือนไปยัง Software แต่อย่างไรก็ตามต้องใช้ ไฟล์ .inf บนระบบปฏิบัติการ Windows  แต่ OSX และ Linux สามารถ recognize ได้โดยอัตโนมัติ


Programming 
    Arduino Uno สามารถรองรับการโปรแกรมด้วย Arduino Software โดยสามารถใช้ได้ทั้งในระบบปฏิบัตการ Windows , Mac OS X และ Linux

อ้างอิงจาก:

http://arduino.cc/en/Main/arduinoBoardMega2560


ศึกษาข้อมูลของบอร์ด Arduino Leonado

อ้างอิง ref - http://arduino.cc/en/Main/arduinoBoardLeonardo


Overview

    Arduino Leonardo เป็นบอร์ดไมโครคอนโทรลเลอร์ที่ทำงานบนพื้นฐานของ ATmega32u4 ซึ่งประกอบด้วย
   
    - 20 digital input/output pins ( 7 pin สามารถใช้เป็น PWM output ได้ )
    -  12 analog inputs
    - 16 MHz crystal oscillator ( ใช้สำหรับกรองความถี่ให้กับบอร์ดไมโครคอนโทรลเลอร์ )
    - micro USB connection
    - ช่องเสียบแหล่งจ่าย
    - ICSP header :In-Circuit Serial Programming  (ส่วนที่เป็น AVR ขนาดเล็กสำหรับการโปรแกรม Arduino ซึ่งประกอบด้วย MOSI, MISO, SCK, RESET, VCC,GND  )
    - ปุ่มกด reset
    
    โดยบอร์ด Arduino  Leonardo นี้มีทุกสิ่งที่ไมโครคอนโทรลเลอร์จำเป็นต้องใช้อย่างการต่อไฟเลี้ยงสามารถทำได้ทั้งการเชื่อมต่อเข้ากับ USB cable หรือ จ่ายไฟด้วย AC-DC adapter หรือ การใช้แบตเตอรี่


    บอร์ด Arduino Leonardo นี้มีความแตกต่างจากบอร์ดก่อนหน้านี้ โดยที่  ATmega32u4 มี built-in USB communication ซึ่งไม่จำเป็นต้องใช้หน่วยประมวลผลสำรอง ทำให้ Leonardo มีสามารถเชื่อมต่อกับเมาส์และคีย์บอร์ด นอกเหนือจากการเชื่อมต่อแบบ virtual(CDC) serial / COM port นอกจากนี้ยังมีความสามารถในด้านอื่นๆอีก

อ้างอิง ref - www.arduitronics.com


Power 
    Arduino Leonardo สามารถเชื่อมรับพลังงานโดยการเชื่อมต่อ micro USB connector หรือ จาก power supply จากภายนอกได้ โดยแหล่งพลังงานจะถูกเลือกโดยอัตโนมัติ

    แหล่งจ่ายจากภายนอกสามารถมาได้จาก AC-to-DC adapter หรือจากแบตเตอรี่ โดยต่อเข้ากับ 2.1mm center-positive plug ไปยังช่องเสียบแหล่งจ่าย และการต่อเข้ากับแบตเตอรี่สามารถทำได้โดยการต่อเข้ากับ GND และ Vin pin header ของ power conecter

    บอร์ดสามารถทำงานได้ในช่วงแรงดัน 6 ถึง 20 volts ถ้า แหล่งจ่ายมีค่าต่ำกว่า 7 V อาจส่งผลให้ 5 V pin มีแรงดันที่ต่ำกว่า 5V และ บอร์ดอาจจะไม่เสถียร แต่ถ้าหากแรงดันมีค่าสูงกว่า 12 V อาจส่งผลให้บอร์ด Overheat และอาจทำให้บอร์ดเสียหายได้  ดังนั้นช่วงแรงดันที่เหมาะสมกับบอร์ดคือ  7 V ถึง 12 V

    - VIN เป็น input voltage ของบอร์ด Arduino โดยใช้แหล่งจ่ายจากภายนอก 
    - 5V เป็น output pin ที่ควบคุม 5 V จากบอร์ด 
    - 3V3 เป็น 3.3 volt supply ที่สร้างขึ้นจาก regulator บนบอร์ด และให้กระแสได้สูงสุด 50 mA
    - GND เป็น groud pin
    - IOREF เป็น pin ที่ให้ voltage reference กับไมโครคอนโทรลเลอร์ เพื่อเลือกค่าแรงดันให้กับ shield ที่มาเชื่อมต่อกับบอร์ด

Memory
    ATmega32u4 มีหน่วยความจำ 32 KB (4 KB ใช้สำหรับ bootloader ) นอกจากนี้ยังมีอีก 2.5 KB สำหรับ   SRAM และ 1 KB สำหรับ EEPROM

Input and Output
    ในแต่ละ digital pins ทั้ง 20 pins บนบอร์ด Arduino Uno สามารถเป็นได้ทั้ง input และ output โดยจะทำงานที่แรงดัน 5 V และให้กระแสสูงสุด 40 mA      
    ฟังก์ชันอื่นๆเพิ่มเติม 
    Serial: 0 (Rx) และ 1(Tx) ใช้สำหรับรับ (Rx) และส่ง(Tx) TTL serial data โดย pin นี้จะถูกเชื่อมต่อไปยัง corresponding pins ของ ATmega8U2 USB-to-TTL serial  chip
   
    TWI : 2 (SDA) and 3 (SCL). รองรับการเชื่อมต่อแบบ TWI(I2C)

    External Interrupts: 2 and 3. pins เหล่านี้สามารถที่จะกำหนดค่าที่เรียก interrupt ในค่าต่ำๆ, ขอบขาขึ้นและลง หรือเปลี่ยนแปลงค่า

    PWM: 3,5,6,9,10,11 และ 13 ให้ PWM output 8-bits 

    SPI: on the ICSP header ใช้สำหรับรองรับการสื่อสารแบบ SPI โดยที่ไม่มี pins ใดเชื่อมต่อเข้ากับ digital I/O pins ซึ่งแตกต่างกับที่ใช้ใน Uno

    LED 13 : เป็น build-in LED ที่เชื่อมต่อกับ digital pin 13 เมื่อ pin มีค่าเป็น HIGH LED จะติด , แต่เมื่อ pin เป็น LOW LED จะดับ

    Analog inputs: A0-A5,A6-A11 ทั้งหมด 12 pins แต่ละ pins สามารถใช้เป็น digital I/O ได้ โดย A0 ถึง A5 จะอยู่ตำแหน่งเดียวกันกับ pin analog ของ Uno แต่ A6-A11 จะอยู่บน digital I/O pins 4,6,8,9,10 และ 12 โดย analog input แต่ละ pins จะให้ความละเอียด 10 bits
    
    AREF. แรงดันอ้างอิง สำหรับ analog input

    Reset ใช้ในการ reset ไมโครคอนโทรลเลอร์  โดยทั่วไปจะใช้โดยการเพิ่มปุ่ม reset ไว้บน sheild เพื่อป้องกันปุ่มที่อยู่บนบอร์ด

Communication
    Arduino Uno สามารถสื่อสารกับคอมพิวเตอร์ ,Arduino ตัวอื่นๆ หรือ microcontroller ได้ โดยที่ไมโครคอนโทรลเลอร์บนบอร์ด คือ ATmega32U4 จะให้การสื่อสารแบบอนุกรม UART TTL (5 V) ซึ่งมีอยู่ใน pins 0 (Rx) และ 1 (Tx) นอกจากนี้ 32U4 สามารถใช้การสื่อสารแบบอนุกรมผ่าน USB และจะปรากฏเป็น COM port เสมือนไปยัง Software บนคอมพิวเตอร์ อีกทั้งยังทำงานได้เช่นเดียวกับอุปกรณ์ที่เป็น full speed USB 2.0 และยังใช้ USB com driver ที่เป็นมาตรฐาน โดยไม่ต้องติดตั้ง driver จากภายนอก แต่อย่างไรก็ตามต้องใช้ ไฟล์ .inf บนระบบปฏิบัติการ Windows  


Programming 
    Arduino Uno สามารถรองรับการโปรแกรมด้วย Arduino Software โดยสามารถใช้ได้ทั้งในระบบปฏิบัตการ Windows , Mac OS X และ Linux
  
อ้างอิงจาก: