
小的而且可以直接插在面包板上使用。其处理器核心是ATmega168(Nano2.x)和ATmega328(Nano3.0),,同时具有14路数字
输入/输出口(其中6路可作为PWM输出),8路模拟输入,一个16MHz晶体振荡器,一个mini-B USB口,一个ICSP header和一个复位按钮。
14路数字输入输出口:工作电压为5V,每一路能输出和接入最大电流为40mA。
1) 外部中断(2号和3号):触发中断引脚,可设成上升沿、下降沿或同时触发。
2) 脉冲宽度调制PWM(3、5、6、9、10 、11):提供6路8位PWM输出。
3) SPI(10(SS),11(MOSI),12(MISO),13(SCK)):SPI通信接口。
4) LED(13号):Arduino专门用于测试LED的保留接口,输出为高时点亮LED,反之输出为低时LED熄灭。
5) 6路模拟输入A0到A5:每一路具有10位的分辨率(即输入有1024个不同值),默认输入信号范围为0到5V,可以通过AREF调整
输入上限。TWI接口(SDA A4和SCL A5):支持通信接口(兼容I2C总线)。
6) AREF:模拟输入信号的参考电压。
7) Reset:信号为低时复位单片机芯片。(使用方法:开关一头接RST引脚,另一头接GND引脚,按下开关后断开,实现单片机复位。
8) 串口:ATmega328内置的UART可以通过数字口0(RX接收)和1(TX发送)与外部实现串口通信;ATmega16U2可以访问数字口
实现USB上的虚拟串口。(使用方法:路由TX连接单片机RX,路由GND接单片机GND,目前703N暂时实现发送命令给单片机,对于单片机
发送的信号,路由模块无法正确接收,原因在于两个硬件系统TTL电平电压不同).
首先小车得有轮子一般为2轮或4轮,然后就要有相应数量的直流电机作为动力;有了电机了,就要有电机驱动的控制板,还要有控制电机驱动板,并且能与wifi发布设备通信的主控板(有用80c51单片机的,有用Arduino的),既然需要wifi发布的设备,就要有一个类似(就是)路由器这样的设备,目前大家都在用的是DB120或者703N,如果想进一步加个视频的话,还需要一个摄像头,支持最好的是中星微ZC0301摄像头,当然这个效果不好,有资金的话可以换天敏的S606(好像是这个),当然还需要一个小车的车体,并且需要对主控制器进行编程,最后就是调试了,看你的技术水平了!推荐个论坛http://www.wifi-robots.com/forum.php当然如果不想自己做,还可以淘宝网上掏一个,基本情况就这些!
希望对你有用!
//舵机和超声波调试代码#include <Servo.h>
#include <Metro.h>
Metro measureDistance = Metro(50)
Metro sweepServo = Metro(20)
unsigned long actualDistance = 0
Servo myservo //创建舵机
int pos = 60
int sweepFlag = 1
int URPWM = 3//PWM输出0-25000us,每50us代表1cm
int URTRIG= 10// PWM trigger pin PWM串口为10
uint8_t EnPwmCmd[4]={0x44,0x02,0xbb,0x01} // distance measure command 距离测量命令
void setup(){ // Serial initialization 串行初始化
myservo.attach(9) //舵机串口为9
Serial.begin(9600)// Sets the baud rate to 9600
SensorSetup()
}
void loop(){
if(measureDistance.check() == 1){
actualDistance = MeasureDistance()
// Serial.println(actualDistance)
// delay(100)
}
if(sweepServo.check() == 1){
servoSweep()
}
}
void SensorSetup(){
pinMode(URTRIG,OUTPUT)// A low pull on pin COMP/TRIG
digitalWrite(URTRIG,HIGH) // Set to HIGH
pinMode(URPWM, INPUT) // Sending Enable PWM mode command 发送使能控制模式命令
for(int i=0i<4i++){
Serial.write(EnPwmCmd[i])
}
}
int MeasureDistance(){// a low pull on pin COMP/TRIG triggering a sensor reading 触发传感器读数
digitalWrite(URTRIG, LOW)
digitalWrite(URTRIG, HIGH) // reading Pin PWM will output pulses读引脚脉宽调制将输出脉冲
unsigned long distance=pulseIn(URPWM,LOW)
if(distance==50000){ // the reading is invalid.阅读无效
Serial.print("Invalid")
}else{
distance=distance/50 // every 50us low level stands for 1cm
}
return distance
}
void servoSweep(){
if(sweepFlag ){
if(pos>=60 &&pos<=120){
pos=pos+1 // in steps of 1 degree 1度角度的转动
myservo.write(pos)// tell servo to go to position in variable 'pos' 告诉舵机转动的角度
}
if(pos>119) sweepFlag = false // assign the variable again 重新分配变量
}else {
if(pos>=60 &&pos<=120){
pos=pos-1
myservo.write(pos)
}
if(pos<61) sweepFlag = true
}
}
////////////////////////////////////////////////////////////
需要加载一个Metro.h的库,这只是调试机器,余下的完全看你的发挥了,加上电机
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)