【U008】Basra和Bigfish的特殊用法
作者:机器谱
接更多传感器 双主控板串联 监测传感器状态 接更多直流电机 |
而在连接只有1个信号引脚的传感器时,最外侧一根针是闲置不用的。理论上空置的那根可以再接一个传感器,从而增加Bigfish可同时连接的传感器数量。
示例一:
如下图所示,利用杜邦线将A4、A5两个信号引脚分别连到两个触碰传感器上,其中一个传感器还从2×5座坞上获得了VCC和GND引脚。
1. 利用闲置信号引脚
按照Bigfish的设计,有3个传感器口是有2个信号引脚的,分别是左上(A0/A1)、右上(A4/A5)、右下(A3/D2)传感器口均有两根信号针。这3个传感器口可以驱动多引脚的传感器(如超声波等)和示教编程时的中断判断。
示例二:
如下图所示,通过将A1、A2、A4、A5分开使用,我们用Bigfish扩展板的两个传感器口接了2个灰度传感器、1个超声测距传感器,其中超声测距传感器的VCC和GND引脚来自2×5座坞。
2. 利用Bigfish跳线
Bigfish背面有两组跳线帽,通过跳线可以改变接口的电压值。如下图红框内标注的就是这两组跳线帽,每组控制3根针。两组针上方分别印有“白”、“红”字样,分别对应Bigfish正面的白色端口(舵机口)和红色端口(传感器口)。“白”字对应的跳线口电压标注为“5/6V”,即白色端口的电压可以在5V和6V之间切换;“红”字对应的跳线口电压标注为“VIN/5V”,即红色端口的电压可以在电池实时电压和5V之间切换。
出厂时,“白”跳线口的跳线帽默认安装在6V一侧,即舵机端口设定为6V电压。“红”跳线口的跳线帽默认安装在5V一侧,即传感器端口设定为5V电压。
我们可以通过改变跳线帽的位置,来改变端口的电压,比如可以把“白”跳线口的跳线帽拔下来,改装在5V一侧,就可以把6个舵机口的供电针脚VIN的电压变成5V;或者把“白”跳线口的跳线帽拔下来,改装在VIN一侧,就可以把4个传感器口的供电针脚VIN的电压变成与电池实时电压一致了。
示例:
(1)把BigFish背面右侧的白色接口跳线帽,通过跳线,把电压从6V改成5V;
(2)将传感器用杜邦线连接到刚刚更改过跳线帽一侧的白色端口上,如图所示为D7端口。
序号 | 内容 |
1 | 测试报告-BigFish传感器口接更多传感器的测试(模拟量) |
2 | 测试报告-BigFish传感器口接更多传感器的测试(数字量) |
3 | 测试报告-BigFish舵机口跳线后接传感器的测试 |
以字母D开头的信号引脚,只能输入和输出开关量,因此只能接开关量的传感器,不能接模拟量传感器。
3. 资料清单
【整体打包】-【U008】Basra和Bigfish的特殊用法-接更多传感器-资料附件.zip | 1.71MB | 下载22次 | 下载 |
1. 将两个Basra板都装上Bigfish扩展板。
2.在Bigfish扩展板的右侧座坞上,找到TX和RX两个接口,如下图所示:
3. 用公对公杜邦线,将两个板子的TX口和RX口交错相连。即将A板的RX口连在B板的TX口上,A板的TX口连在B板的RX口上,然后用母对母杜邦线将两个板子的任意两个GND针相连接。如此,两个板子的串口硬件连接完毕。
4.选定其中一个板子为主机,另一个板子为从机。将host.ino(主机程序)和slave.ino(从机程序)分别烧录进两个主控板。在这个系统中,主机A0口安装一个传感器(如近红外),主机程序可以接收和判断来自A0口的数字量传感器信号,并通过串口向从机发送信号;从机程序可以根据接收到的主机信号情况,控制D5/D6接口直流电机的运动。即主机负责数据获取,从机负责运动控制。
源代码如下:
主机程序(host.ino)
/*********************************************************************** 实验功能: 当接受到上位机发送的数据1,电机转动500毫秒,之后,电机停止 实验接线: 电机接到BigFish的D5,D6引脚 data 2023-5-11 https://www.robotway.com/ **********************************************************************/ #define motor_pin1 5 //定义电机引脚1 #define motor_pin2 6 //定义电机引脚2 void setup() { pinMode(motor_pin1,OUTPUT); //init motor pin 1 pinMode(motor_pin2,OUTPUT); //init motor pin 2 Serial.begin(9600); // initialize serial: } void loop() { String receive_data = Serial.readStringUntil('\n'); if(receive_data.toInt() == 1){ Motor_Go();delay(500); Motor_Stop(); } } void Motor_Go(){ digitalWrite(motor_pin1,HIGH); digitalWrite(motor_pin2,LOW); } void Motor_Stop(){ digitalWrite(motor_pin1,LOW); digitalWrite(motor_pin2,LOW); } |
/*********************************************************************** 实验功能: 上位机近红外A0触发后,向下位机发送数据1 实验接线: 近红外接BigFish的A0引脚 data 2023-5-11 https://www.robotway.com/ **********************************************************************/ void setup() { Serial.begin(9600); pinMode(A0,INPUT_PULLUP); } void loop() { if(!digitalRead(A0)) { Serial.println(1); delay(1000); } } |
从机程序(slave.ino)
5. 读懂了代码之后,你可以根据设计需要改写这两个程序,利用此系统架构实现你的机器人的主从控制功能。
6. 资料清单
序号 | 内容 |
1 | 例程源代码 |
执行效果如下图所示:
【整体打包】-【U008】Basra和Bigfish的特殊用法-双主控板串联-资料附件.zip | 2.73KB | 下载16次 | 下载 |
有时候我们接传感器时希望能直观的看到传感器的触发状态,以确定传感器是否损坏或安装是否正确。本文主要是以安装了3个灰度传感器的循迹小车为例,通过8*8LED点阵实时监控传感器的触发状态,不同传感触发后分别对应LED点阵上的光条。
环境与配置:023号机构;Basra(Arduino Uno)主控板×1;Bigfish2.0扩展板×1;灰度传感器×3;软件:Arduino IDE;系统:Win10。
步骤:
1. 三个灰度传感器分别接023机构小车底部前端,分布于左侧,中间,右侧,传感器距离小车车轮越远效果越好,左侧传感器接Bigfish扩展版A0口,中间接A3口,右侧接A4口。
2. 编写以下程序(Sensor_Monitoring.ino),并向控制板烧录。
#include "LedControl.h" int pin[3]={A4,A3,A0}; int state[3]={1}; LedControl lc=LedControl(12,11,13,1); //初始化设备,设置DIN(dataPin)、CLK、CS的IO口及连接设备数量(既有多少块屏)并定义一个对象 //本例中:设置DIN口对应Arduino上12口;设置CLK口对应Arduino上11口;设置CS口对应Arduino上13口;设备连接数1 void setup() { Serial.begin(9600); lc.shutdown(0,false); //设置LED0节电模式关闭 lc.setIntensity(0,15); //设置LED0可显示的行数,可设置0-7,超过7变为8的余数 lc.clearDisplay(0); //设备0清屏 //使用0-7表示LED的1-8行,使用0,1表示LED亮灭 lc.setRow(0,0,10000001); //设置LED0第一行8个LED状态 lc.setRow(0,7,10000001); //设置LED0第八行8个LED状态 delay(1000); //LED灯亮1秒 lc.clearDisplay(0); //设备0清屏 } void loop() { lc.clearDisplay(0); for(int i = 0; i < 3;i++) { state[i]=!(digitalRead(pin[i])); //state[i]表示第i个传感器触发状态,1表示触发,0表示未触发 lc.setColumn(0, 6-2*i, byte(255*state[i])); //设置LED0 6-2i 列8个LED的开关状态,与setRow输出的图形正好旋转90度,byte(255*state[i])表示 传感器触发状态*255 后转二进制来控制LED0列中每个灯的亮灭 } |
左侧传感器触发
中间传感器触发
右侧传感器触发
4. 资料清单
序号 | 内容 |
1 | 例程源代码 |
【整体打包】-【U008】Basra和Bigfish的特殊用法-监测传感器状态-资料附件.zip | 2.14KB | 下载3次 | 下载 |
接更多直流电机
有时候我们需要接更多的直流电机,Bigfish扩展板原有的接口可能不够用,这时我们可以对Bigfish接口进行扩展,改变它们的用途。Bigfish扩展板背面有两组跳线帽,通过跳线可以改变接口的电压值。通过观察可以发现,白色接口电压可以在5V和6V之间变换,红色接口电压可以在5V和VIN之间变换。由于传感器工作电压为5V,舵机工作电压为6V,直流电机工作电压为电池电压(VIN),因此红色接口除了可以接传感器,还可以接直流电机。
1. 需要用到的电子硬件
主控板 | |
扩展板 | |
电池 | 7.4V锂电池 |
其它 | 直流电机x1 |
/*------------------------------------------------------------------------------------ 版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved. Distributed under MIT license.See file LICENSE for detail or copy at https://opensource.org/licenses/MIT by 机器谱 2023-05-30 https://www.robotway.com/ ------------------------------*/ void setup() { pinMode( 19 , OUTPUT); pinMode( 18 , OUTPUT); } void loop() { digitalWrite( 19 , HIGH ); digitalWrite( 18 , LOW ); delay( 1000 ); digitalWrite( 18 , HIGH ); digitalWrite( 19 , LOW ); delay( 1000 ); } |
/*------------------------------------------------------------------------------------ 版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved. Distributed under MIT license.See file LICENSE for detail or copy at https://opensource.org/licenses/MIT by 机器谱 2023-05-30 https://www.robotway.com/ ------------------------------*/ int _ABVAR_1_i = 0 ; void setup() { pinMode( 19, OUTPUT); pinMode( 18 , OUTPUT); } void loop() { for (_ABVAR_1_i= 1; _ABVAR_1_i<= ( 255 ); _ABVAR_1_i++ ) { analogWrite(19 , ( 255 - _ABVAR_1_i )); digitalWrite( 18 , LOW ); delay( 100 ); } } |
2. 操作步骤
如下图所示,可以看到红色方框内显示为BigFish扩展板背面的两组跳线帽,一组两个。每组上方均印有白红字样对应,白色为5/6v,红色为vin/5v。平常状态红色在5v,白色在6v(红色端口接传感器,白色端口接舵机),每侧跳线帽对应其所在边的端口。
当想在红色端口扩展直流电机时,首先我们需要先把BigFish扩展板背面所用一侧的红色接口跳线帽改成电压VIN,因为直流电机的工作电压为电池电压(VIN)。直流电机在BigFish扩展板的传感器接口上可以有两种接法:① 接在VCC和GND上;② 接在两根信号针上。
方法一:直流电机接在BigFish扩展板传感器接口的VCC和GND上
将BigFish扩展板背面左侧的红色接口跳线帽,通过跳线改成电压VIN。然后将直流电机连接到刚刚更改过跳线帽一侧的右上红色端口上,黑线接GND,红线接VCC。
实验现象:
当直流电机连接在BigFish扩展板右上红色端口VCC,GND上时,直流电机会直接转动,但是既无法控制其转向、也无法控制其转速(当将直流电机连接在其它三个红色端口VCC,GND上测试时,测试结果与上述一致)。
方法二:直流电机接在BigFish扩展板传感器接口的两根信号针上
将BigFish扩展板背面左侧的红色接口跳线帽,通过跳线改成电压VIN。然后将直流电机连接到刚刚更改过跳线帽一侧的右上红色端口的两根信号针(A4/A5)上。
编写并下载程序:
编程环境:Arduino 1.8.19
下面提供一个测试直流电机转向的参考程序(zhuanxiang.ino):
实验现象:
当直流电机连接在BigFish扩展板右上红色端口的两根信号针上,设定针脚数字值测试其转向时,直流电机可以转动并能实现正反转(当将直流电机接在端口A0,A3上的两根信号针上时,测试结果与上述一致)。
下面再给大家提供一个测试直流电机转速的参考程序(zhuansu.ino):
实验现象:
当直流电机连接在BigFish扩展板右上红色端口的两根信号针上,设定针脚模拟值测试其转速时,直流电机可以转动,但是其转速变化不明显,且直流电机转动一段时间后会停止,停止一段时间后直流电机又会重新转动,推测原因可能是电压不足引起的(当将直流电机接在端口A0,A3上的两根信号针上时,测试结果与上述一致)。
大家可根据自己的实际需要来选择连接方法。
3. 资料下载
序号 | 内容 |
1 | 程序源代码 |
【整体打包】-【U008】Basra和Bigfish的特殊用法-接更多直流电机-资料附件.zip | 4.58KB | 下载2次 | 下载 |
|