“(SKU:RB-01C076)CarDuino UNO R3(直插芯片)”的版本間的差異

來自ALSROBOT WiKi
跳轉(zhuǎn)至: 導(dǎo)航、 搜索
?模塊測試
第42行: 第42行:
  
 
==應(yīng)用例程==
 
==應(yīng)用例程==
?
===模塊測試===
+
此程序用于測試CarDuino UNO R3的所有I/O口狀態(tài)
?
我們使用Arduino控制器來做個測試,要用到硬件設(shè)備如下:
+
===示例代碼===
?
# Arduino控制器×2
+
<pre style='color:blue'>int val;//定義模擬讀數(shù)變量
?
# Arduino 傳感器擴展板×2
+
int i;//定義變量i
?
# 紅外發(fā)射模塊×1和紅外接收模塊×1
+
int ledpin[]={1,3,5,7,9,11,13,15,17,19,21};//定義led腳 1,3,5,7,9,11,13,15,17,19,21
?
# 電位計模塊×1和 LED 發(fā)光模塊×1
+
int ledpin1[]={0,2,4,6,8,10,12,14,16,18,20,22};//定義led腳1 0,2,4,6,8,10,12,14,16,18,20,22
?
# 通用3P傳感器連接線×4
+
void setup()
?
# USB 數(shù)據(jù)通信線×2
+
?
[[文件:3232-4.jpg|500px|有框|居中]]
+
?
:如圖所示,使用傳感器連接線將電位計模塊連接到作為發(fā)射部分的Arduino傳感器擴展板的模擬口0 上,紅外發(fā)射頭連接到 Arduino傳感器擴展板的數(shù)字口2 上。然后使用傳感器連接線將紅外發(fā)射頭連接到作為接收部分的Arduino傳感器擴展板的數(shù)字口2上,將LED 發(fā)光模塊連接到Arduino傳感器擴展板的數(shù)字口9 上。
+
?
:將發(fā)送部分代碼編譯后下載到作為發(fā)送部分的Arduino里,將接收部分代碼編譯后下載到作為接收部分的Arduino里,就可以在串口助手窗口上顯示接收到的當(dāng)前值(注:串口助手波特率調(diào)到115200 )。Arduino實驗代碼如下。
+
?
:發(fā)送部分程序:
+
?
<pre style='color:blue'>#define ADD 0x00
+
?
int IR_S = 2;   // 定義數(shù)字口2 為發(fā)射模塊接口
+
?
int a;  
+
?
void setup()
+
?
{  
+
?
pinMode(IR_S, OUTPUT); //定義IR_S為輸出模式
+
?
Serial.begin(115200); //定義頻率為115200
+
?
}
+
?
void loop()
+
?
{
+
?
    uint8_t dat,temp; 
+
?
{  
+
?
      a=analogRead(0); // 讀取模擬口0 的值
+
?
      temp =a/4;
+
?
      Serial.println(temp,DEC ); // 將讀取的數(shù)值打印到串口上
+
?
      IR_Send38KHZ(280,1);//發(fā)送9ms 的起始碼
+
?
      IR_Send38KHZ(140,0);//發(fā)送4.5ms 的結(jié)果碼
+
?
   
+
?
      IR_Sendcode(ADD);//用戶識別碼
+
?
      dat=~ADD;
+
?
      IR_Sendcode(dat);//用戶識別碼反嗎
+
?
      IR_Sendcode(temp);// 操作碼
+
?
      dat=~temp;
+
?
      IR_Sendcode(dat);//操作碼反碼
+
?
   
+
?
      IR_Send38KHZ(21,1);// 發(fā)送結(jié)束碼
+
?
    }
+
?
    delay(200);
+
?
+
?
+
?
void IR_Send38KHZ(int x,int y) //產(chǎn)生38KHZ紅外脈沖
+
 
{   
 
{   
?
for(int i=0;i<x;i++)//15=386US
+
   for(i=0;i<13;i++)
?
  
+
     {
?
      if(y==1)
+
      pinMode(ledpin[i],OUTPUT);//將led腳設(shè)置為輸出
?
        {
+
      pinMode(ledpin1[i],OUTPUT);//將led腳1設(shè)置為輸出
?
      digitalWrite(IR_S,1);
+
?
          delayMicroseconds(9);
+
?
          digitalWrite(IR_S,0);
+
?
          delayMicroseconds(9);
+
?
        }
+
?
      else 
+
?
        {
+
?
          digitalWrite(IR_S,0);
+
?
          delayMicroseconds(20);
+
?
        }
+
?
  }                                                           
+
?
}
+
?
 
+
?
void IR_Sendcode(uint8_t x) 
+
?
{
+
?
    for(int i=0;i<8;i++)  
+
?
     {  
+
?
      if((x&0x01)==0x01)
+
?
        {
+
?
            IR_Send38KHZ(23,1);  
+
?
            IR_Send38KHZ(64,0);             
+
?
        }
+
?
        else 
+
?
        {
+
?
            IR_Send38KHZ(23,1);
+
?
            IR_Send38KHZ(21,0); 
+
?
        }
+
?
        x=x>>1;
+
?
    } 
+
?
} </pre>
+
?
:此代碼的功能是從模擬口0 讀取電位計的值,并通過紅外發(fā)射頭將讀取的數(shù)值發(fā)送出去。
+
?
接收部分程序:
+
?
<pre style='color:blue'>#define IR_LED  2  //IR 接收數(shù)字口2
+
?
#define MAX  128
+
?
#define MICRO_STEP  10
+
?
#define IDLE_PULSE  4000
+
?
unsigned long pulses[MAX];
+
?
unsigned char IRCOM[7];
+
?
unsigned long z;
+
?
int w;
+
?
byte f=B00000000; // 定義f 為位
+
?
int n;
+
?
int ledpin=9; // 定義數(shù)字口9 為LED 模塊接口
+
?
void setup()
+
?
{
+
?
  pinMode(IR_LED, INPUT);
+
?
  Serial.begin(115200);
+
?
  pinMode(ledpin,OUTPUT); //定義ledpin 為輸出模式
+
?
}
+
?
                                                           
+
?
void loop()
+
?
+
?
  if( digitalRead(IR_LED) == LOW)
+
?
  {
+
?
    // 開始接收數(shù)據(jù)
+
?
        int count = 0;
+
?
        int exit = 0;
+
?
    while(!exit)
+
?
    {
+
?
      while( digitalRead(IR_LED) == LOW )
+
?
        delayMic roseconds(MICRO_STEP);
+
?
      unsigned long start = micros();
+
?
      int max_high = 0;
+
?
      while( digitalRead(IR_LED) == HIGH )
+
?
      {
+
?
        delayMic roseconds(MICRO_STEP);
+
?
        max_high += MICRO_STEP;
+
?
        if( max_high > IDLE_PULSE )
+
?
        {
+
?
          exit = 1;
+
?
          break;
+
?
        }
+
?
      }
+
?
      unsigned long duration = micros() - start;
+
?
      pulses[count++] = duration;
+
 
     }
 
     }
?
    for(int i=3; i<4; i++)  
+
}
?
    {  
+
 
?
      for(int j=0;j<8;j++)  
+
void loop()
?
      {
+
{
?
        if(pulses[ i*8+j+1] < IDLE_PULSE)  
+
  for(val=0;val<13;val++)
?
        {
+
    digitalWrite(ledpin[val],HIGH);//將led腳設(shè)置為高電平
?
            IRCOM[i]=IRCOM [i] >> 1;          
+
  for(val=0;val<13;val++)
?
            if((pulses[i*8+j+1])>1000)  
+
    digitalWrite(ledpin1[val],LOW);//將led腳1設(shè)置為低電平
?
              {IRCOM[i] = IRCOM[i] | 0x80;}           
+
    delay(500);                    //延遲5s
?
        }
+
   for(val=0;val<13;val++)
?
      z= pulses[i*8+j+1];
+
    digitalWrite(ledpin[val],LOW);//將led腳設(shè)置為低電平
?
/***************************************************/  
+
  for(val=0;val<13;val++)
?
    //將接收到的脈沖數(shù)據(jù)轉(zhuǎn)換成十進制                                                                   
+
     digitalWrite(ledpin1[val],HIGH);//將led腳1設(shè)置為高電平
?
/***************************************************/    
+
    delay(500);                     //延遲5s
?
      if(z<800)  
+
}
?
          w=10000000; //如果Z 小于800  w=10000000
+
</pre>
?
      else
+
===程序效果===
?
          w=00000000; //如果Z 大于800  w=00000000
+
:連接在CarDuino UNO R3引腳的LED小燈呈流水狀交替閃爍
?
      f=f>>1;         // 將f 右移1 位
+
?
      f=f+w;     
+
?
/***************************************************/
+
?
    }
+
?
     }
+
?
  n=int(f);
+
?
  Serial.print(n);// 將接收到的數(shù)據(jù)打印到串口上
+
?
  analogWrite(ledpin,n); //將接收到的數(shù)據(jù)寫入ledpin 接口,控制LED 亮度
+
?
  }  
+
?
} </pre>
+
?
:此部分代碼功能是通過紅外接收頭接收發(fā)送部分發(fā)送出的電位計的值來控制LED的亮度變化并通過串口助手顯示當(dāng)前接收到的值。如下圖所示左側(cè)串口助手(串口號為:117 )顯示的是紅外發(fā)送部分當(dāng)前發(fā)送出的電位計的值,右側(cè)串口助手(串口號為:88)顯示的是紅外接收部分接收到的數(shù)值。
+
?
[[文件:3232-5.jpg|500px|有框|居中]]
+
  
 
==產(chǎn)品相關(guān)推薦==
 
==產(chǎn)品相關(guān)推薦==

2015年6月12日 (五) 09:35的版本


RB01C076CarduinoUnoR3.jpg

目錄

產(chǎn)品概述

Carduino UNO R3是Arduino USB接口系列的最新版本, Carduino Uno R3與Arduino Uno R3一樣的AREF邊緣增加了SDA和SCL端口,此外,RESET邊上還有兩個新的端口。一個端口是IOREF,它能夠使擴展板適應(yīng)主板的電壓,另一個空的端口預(yù)留給將來擴展的可能。Carduino UNO R3能夠兼容傳感器擴展板v5.0并且能用它額外的端口適應(yīng)新的擴展板。 Carduino可以用于做項目開發(fā)的控制核心也可以與PC進行直接的USB連接完成與電腦間的互動,運行于開源的IDE開發(fā)環(huán)境,軟件可以在Arduino官網(wǎng)直接下載(支持Window,Linux以及Max系統(tǒng)),處理器核心是ATmega328,同時具有14路數(shù)字輸入/輸出口(其中6路可作為PWM輸出),6路模擬輸入,一個16MHz晶體振蕩器,一個USB口,一個電源插座,一個ICSP header和一個復(fù)位按鈕。

規(guī)格參數(shù)

  • 工作電壓:5V
  • 輸入電壓:接上USB時無須外部供電或外部7V~12V DC輸入
  • 輸出電壓:5V DC輸出和3.3V DC輸出 和外部電源輸入
  • 微處理器:ATmega328
  • Bootloader:Carduino Uno
  • 時鐘頻率:16 MHz
  • 輸入電壓:7-12V(推薦)
  • 輸入電壓:6-20V(限制)
  • 支持USB接口協(xié)議及供電(不需外接電源)
  • 支持ISP下載功能。
  • 14路數(shù)字輸入輸出口:工作電壓為5V,每一路能輸出和接入最大電流為40mA。

(1)串口信號RX(0號)、TX(1號): 與內(nèi)部 ATmega8U2 USB-to-TTL 芯片相連,提供TTL電壓水平的串口接收信號。
(2)外部中斷(2號和3號):觸發(fā)中斷引腳,可設(shè)成上升沿、下降沿或同時觸發(fā)。
(3)脈沖寬度調(diào)制PWM(3、5、6、9、10 、11):提供6路8位PWM輸出。
(4)SPI(10(SS),11(MOSI),12(MISO),13(SCK)):SPI通信接口。
(5)LED(13號):Arduino專門用于測試LED的保留接口,輸出為高時點亮LED,反之輸出為低時LED熄滅。

  • 6路模擬輸入A0到A5:每一路具有10位的分辨率(即輸入有1024個不同值),默認(rèn)輸入信號范圍為0到5V
  • AREF:模擬輸入信號的參考電壓。
  • Reset:信號為低時復(fù)位單片機芯片。
  • 直流電流:40mA(I/O端口)
  • 直流電流:50mA(3.3V端口)
  • Flash 內(nèi)存:32 KB (ATmega328其中0.5 KB用于引導(dǎo)程序)
  • SRAM:2 KB (ATmega328)
  • EEPROM:1 KB (ATmega328)
  • 尺寸:75x55x15mm

使用方法

1.引腳說明

Carduino UNO控制器管腳說明圖

2.編譯環(huán)境下載(當(dāng)前最新版本IDE是Arduino1.6.4)
Arduino IDE編譯環(huán)境下載
3.驅(qū)動安裝
Arduino驅(qū)動安裝方法
4.程序下載
程序下載方法

應(yīng)用例程

此程序用于測試CarDuino UNO R3的所有I/O口狀態(tài)

示例代碼

int val;//定義模擬讀數(shù)變量
int i;//定義變量i
int ledpin[]={1,3,5,7,9,11,13,15,17,19,21};//定義led腳 1,3,5,7,9,11,13,15,17,19,21
int ledpin1[]={0,2,4,6,8,10,12,14,16,18,20,22};//定義led腳1 0,2,4,6,8,10,12,14,16,18,20,22
void setup()
{  
   for(i=0;i<13;i++)
    {
      pinMode(ledpin[i],OUTPUT);//將led腳設(shè)置為輸出
      pinMode(ledpin1[i],OUTPUT);//將led腳1設(shè)置為輸出
    }
}

void loop()
{
  for(val=0;val<13;val++)
    digitalWrite(ledpin[val],HIGH);//將led腳設(shè)置為高電平
  for(val=0;val<13;val++)
    digitalWrite(ledpin1[val],LOW);//將led腳1設(shè)置為低電平
    delay(500);                    //延遲5s
  for(val=0;val<13;val++)
    digitalWrite(ledpin[val],LOW);//將led腳設(shè)置為低電平
  for(val=0;val<13;val++)
    digitalWrite(ledpin1[val],HIGH);//將led腳1設(shè)置為高電平
    delay(500);                     //延遲5s
}

程序效果

連接在CarDuino UNO R3引腳的LED小燈呈流水狀交替閃爍

產(chǎn)品相關(guān)推薦

1.購買地址
CarDuino UNO R3 控制器購買地址
2.相關(guān)書籍
首本Arduino中文教材 入門必讀
3.學(xué)習(xí)套件
愛上Arduino 互動入門套件