SKU:RB-01C082 StarDuino 控制器

来自ALSROBOT WiKi
跳转至: 导航搜索
StarDuino01.jpg

目录

产品概述

StarDuino 是以 ATmega32U4 为主芯片,基于 Leonardo 内核的多功能控制板。StarDuino 不但具有完整兼容 Arduino Leonardo 的特性,还集成了 2 路电机驱动、4 路舵机驱动、模拟 IO 扩展口、数字 IO 扩展、I2C 总线接口、串口接口等功能。是一款功能全面的控制板,可以应用于小车驱动平台,可以单独驱动两路电机。

产品参数

  • 微控制器:ATmega32u4
  • 引导程序:Arduino Leonardo
  • 工作电压:5V
  • 直流输出:5V / 3.3V
  • DC 输入电压(推荐):7-12V
  • DC 输入电压(极限):6-24V
  • 数字端口外部电源电压:5-20V
  • Digital I/O(数字):23
  • Analog I/O(模拟):12
  • IO引脚直流电流:40mA
  • 3.3V引脚直流电流:50mA
  • 电机驱动模块恒定输出电流:2A
  • 产品尺寸:89 x 79 x 20 mm
  • 固定孔:4 * M3

接口介绍

StarDuino 控制器管脚说明图

1.Digital I/O(数字): D0 - D16,A0 - A5
2.Analog I/O(模拟): A0 - A5,A6 - A11(在数字接口 4,6,8,9,10,12 上))
3.PWM口:7 个 (数字引脚 3,5,6,9,10,11 和 13)
4.支持 USB 供电与外部供电自动切换
5.支持 ISP 下载功能
6.支持 1 组 I2C / TWI 接口
7.支持 2 路电机驱动,峰值电流 2A,6 个控制 I/O 使用跳线切换
8.支持 4 路舵机驱动
9.支持 1 路蜂鸣器驱动

基本例程

Arduino IDE的使用

Arduino IDE是Arduino产品的软件编辑环境。简单的说就是用它来写代码,下载代码的程序。任何基于Arduino产品都需要下载代码后才能运转。我们所搭建的硬件电路是辅助代码来完成的,两者是缺一不可的。如同人通过大脑来控制肢体活动是一个道理。如果控制器中的程序就是大脑的话,外围硬件就是肢体,肢体的活动取决于大脑,所以硬件功能实现取决于代码程序。

板载L灯实验

StarDuino和Arduino一样,有个连接到数字口13的板载测试LED(L)!把StarDuino连到电脑上后,打开Arduino IDE,选择板卡→Arduino Leonardo和串口→COM(选择如图2所示的端口号)。
Arduino IDE 设备端口号选择示意图

注:此界面需要你找到我的【电脑图标】→单击鼠标右键→选择【管理】
演示代码:

int ledPin = 13;                     // 定义LED为pin13

void setup()
{
    pinMode(ledPin, OUTPUT);       // 设置数字端口13为输出模式
}

void loop()
{
    digitalWrite(ledPin, HIGH);   // 数字端口置高,LED亮
    delay(1000);                     // 延时
    digitalWrite(ledPin, LOW);    // 数字端口置低,LED灭
    delay(1000);                     // 延时
}


程序功能:板载的L灯会每秒闪烁一次。
注:这个例子程序可以在【Arduino IDE→文件→示例→01.Basics→Blink】中找到;你也可以使用Arduino其他示例程序。

按键与LED的实验

做一个简单的互动实验,按键按下,板载 L 灯亮,松开,板载 L 灯熄灭。按图3所示接线方式连接大按键。

按键与StarDuino连接示意图


演示代码:

int buttonPin = A0;     // 定义按键为 pin A0  
int ledPin =  13;        // 定义LED为 pin 13

int buttonState = 0;    //定义并初始化按键状态

void setup() 
{
    pinMode(ledPin, OUTPUT);     // 设置数字端口13为输出模式  
    pinMode(buttonPin, INPUT);   // 设置数字端口14为输入模式    
}

void loop()
{
    buttonState = digitalRead(buttonPin);  //读取Pin 14的状态

if(buttonState == LOW) //判断是否为低
{      
        digitalWrite(ledPin, HIGH);   //如果是低,设置L灯亮
    } 
else 
{
        digitalWrite(ledPin, LOW);    //如果是高,设置LED灯灭
    }
}


程序功能:按下灯亮,松开灯灭。

舵机实验

如果想让东西动起来,就离不开机电类涉笔的控制。这节实验是利用Arduino提供的Servo库进行一个舵机的操控实验

硬件接线

单个舵机与StarDuino的连接示意图

例子程序

#include <Servo.h>       // 声明调用Servo.h库

Servo myservo;           // 创建一个舵机对象

int pos = 0;             // 变量pos用来存储舵机位置
  
void setup() 
{ 
    myservo.attach(10);  // 将引脚10上的舵机与声明的舵机对象连接起来
} 
 
void loop() 
{ 
for(pos = 0; pos < 180; pos += 1) // 舵机从0°转到180°,每次增加1°
{            
        myservo.write(pos);              // 给舵机写入角度   
        delay(15);                         // 延时15ms让舵机转到指定位置
    }
    
for(pos = 180; pos >= 1; pos -= 1) // 舵机从180°回到0°,每次减小1°
{                                    
        myservo.write(pos);              // 写角度到舵机     
        delay(15);                         // 延时15ms让舵机转到指定位置
    } 
}


程序效果

程序正常上传后,给控制器进行供电,舵机会从0°运动到 180°,再从180°转回 0°。

多舵机实验

StarDuino数字端口扩展插座是按照舵机的线序设计的,所以可以直接控制舵机。接四个以内的小舵机时由于电流不大(运行时电流总和不超过2A),所以可以暂时使用StarDuino的电源供电,但如果StarDuino控制器控制多个大电流舵机,用StarDuino供电就不够了,这时就需要从舵机控制端口外部电源输入端供电,电源电压取决于你所需舵机的正常工作电压。

硬件连接

多个舵机与StarDuino的连接示意图

例子程序

#include <Servo.h>

Servo servo1;
Servo servo2;
Servo servo3;

void setup()
{
    servo1.attach(10);               //定义舵机1控制口为Pin10
    servo2.attach(11);               //定义舵机2控制口为Pin11
    servo3.attach(12);               //定义舵机3控制口为Pin12
    Serial.begin(19200);             //设串口0置波特率
    Serial.print("Ready");
}

void loop()
{
    static int v = 0;
    if ( Serial.available()) 
{
        char ch = Serial.read();       //读取串口数据
        switch(ch) 
{
            case '0'...'9':
            v = v * 10 + ch - '0';  //字符换算成10进制
            break;
            case 'a':             //如果数据后带a,则表示是servo1的数据,比如串口发送85a
            servo1.write(v);
            v = 0;
            break;
            case 'b':             //如果数据后带b,则表示是servo2的数据,比如串口发送90b 
            servo2.write(v);
            v = 0;
            break;      
            case 'c':             //如果数据后带c ,则表示是servo3的数据,比如串口发送180c
            servo3.write(v);
            v = 0;
            break;
        }
    }
}


程序效果

通过IDE中的串口助手,发送舵机度数控制舵机转动的角度,比如发送字符85a表示舵机1转动85度,发送字符180c表示舵机3转动180度。
注:如何打开串口?
打开Arduino IDE,右上角有个放大镜的图标,鼠标放在上面会显示串口监视器,点击该图标。

StarDuino07.jpg


打开串口后,设置串口监视器的波特率为19200。

StarDuino08.jpg


就可以直接从串口输入相应的值了,比如我们这里输入"85a",让第一个舵机转85°。

StarDuino09.jpg

电机驱动实验

硬件接线

StarDuino上集成了2路电机驱动,单路峰值为2A,控制芯片采用L298P,电机的电源直接由StarDuino的总电源提供。
电机控制引脚与功能说明如下表1所示:


表1:电机控制引脚与功能说明表

StarDuino10.jpg


电机驱动电路控制端可以使用短路跳帽进行选通,用的时候接通,不用时可以断开。两个电机接线时注意将电机的两根控制线同向接入控制板的电机控制接口。

例子程序

int E1 = 5;     //定义M1使能端
int E2 = 6;     //定义M2使能端

int M1_2 = 4;    //定义M1控制端
int M1_1 = 7;    //定义M1控制端

int M2_1 = 8;    //定义M2控制端
int M2_2 = 9;    //定义M2控制端

void stop(void)//停止
{                 
    digitalWrite(E1,LOW);   
    digitalWrite(E2,LOW);      
}  

void advance(char a,char b)             //前进
{           
       analogWrite (E1,a);              //PWM调速
       digitalWrite(M1_2,HIGH);
       digitalWrite(M1_1,LOW);    
       analogWrite (E2,b);    
       digitalWrite(M2_1,HIGH);
       digitalWrite(M2_2,LOW);
}  
void back_off (char a,char b)           //后退
{          
    analogWrite (E1,a);
    digitalWrite(M1_2,LOW);
        digitalWrite(M1_1,HIGH);     
    analogWrite (E2,b);    
    digitalWrite(M2_1,LOW);
        digitalWrite(M2_2,HIGH);
}
void turn_L (char a,char b)             //左转
{           
    analogWrite (E1,a);
    digitalWrite(M1_2,LOW);
        digitalWrite(M1_1,HIGH);     
    analogWrite (E2,b);    
    digitalWrite(M2_1,HIGH);
        digitalWrite(M2_2,LOW);
}
void turn_R (char a,char b)             //右转
{           
    analogWrite (E1,a);
    digitalWrite(M1_2,HIGH);
        digitalWrite(M1_1,LOW);    
    analogWrite (E2,b);    
    digitalWrite(M2_1,LOW);
        digitalWrite(M2_2,HIGH);
}

void setup(void) 
{ 
    int i;                       //定义一个临时变量

    for(i = 4;i <= 9;i++)        //PIN4-PIN9管脚初始化
    {
        pinMode(i, OUTPUT);
    }
      
    Serial.begin(9600);          //设置串口0波特率
} 

void loop(void) 
{ 
    if(Serial.available() > 0)   //判断串口是否接收到数据
    {
        char val = Serial.read();//读取串口数据

        if(val!=-1)
        {
            switch(val)
            {
             case 'w'://前进
                    advance (100,100);   //PWM调速
                    break;
             case 's'://后退
                     back_off (100,100);
                     break;
             case 'a'://左转
                     turn_L (100,100);
                     break;       
             case 'd'://右转
                     turn_R (100,100);
                     break;          
            }     
         delay(40); 
        }
     else stop();  
    }
}


程序功能

串口输入"w","s","a","d",电机会有相应的前进、后退、左转、右转动作。

应用视频

Tao ci zhen dong01.png
Starduino 02.png


产品相关推荐

Erweima.png

产品购买地址

Starduino控制器

周边产品推荐

Starduino 透明亚克力外壳
Micro USB 数据线
百变之星 创意盒子套件

相关问题解答

starduino控制器在树莓派上的使用问题

相关学习资料

Starduino控制器产品介绍
奥松机器人技术论坛