|
本帖最后由 yongyuan824 于 2013-12-15 22:24 编辑
本人是初学者,代码写的若有问题请多多指教,经过2个月的努力,本人第一个作品。pc控制端用的jqueryui+html写的在附件里。(后续会继续完善,实现远程时时视频传送,避障等功能)。控制端pc,手机移动设备等。。废话不说直接上代码---------------------------中间遇到点小问题,没查出原因,希望知道的多多赐教。问题如下:pwm调速口开始用的是10和11,10口get给w5100发送数据时网页一直处于发送状态且arduino主机无响应但w5100的指示灯闪烁也能ping通。11口的问题是设置0-255值对电机转速控制无效。代码如下,只是pwm口更换之后就正常了。开始以为代码问题反复修改代码花了几天时间才发现这两个口有这种状况,希望高人给出解释现在还一头雾水...
[pre lang="arduino" line="5" file="webcar"]
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 1, 177 }; // ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(80); //server port
String readString;
/////////////////////////////////////////////////
int pinI1=2;//定义I1接口
int pinI2=3;//定义I2接口
int speedApin=6;//定义EA(PWM调速)接口
int pinI3=4;//定义I3接口
int pinI4=5;//定义I4接口
int speedBpin=9;//定义EB(PWM调速)接口
void setup()
{
//start Ethernet
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
//enable serial data print
Serial.begin(9600);
Serial.println("servertest1"); // so I can keep track of what is loaded
pinMode(pinI1,OUTPUT);
pinMode(pinI2,OUTPUT);
pinMode(speedApin,OUTPUT);
pinMode(pinI3,OUTPUT);
pinMode(pinI4,OUTPUT);
pinMode(speedBpin,OUTPUT);
}
void motorA(int sp,boolean tf){
analogWrite(speedApin,sp);//输入模拟值进行设定速度
if(tf){
digitalWrite(pinI1,LOW);//使直流电机(左)顺时针转
digitalWrite(pinI2,HIGH);
}
else
{
//analogWrite(speedApin,sp);//输入模拟值进行设定速度
digitalWrite(pinI1,HIGH);//使直流电机(左)逆时针转
digitalWrite(pinI2,LOW);
}
if(sp<10){
digitalWrite(pinI1,HIGH);//使直流电机(左)刹车
digitalWrite(pinI2,HIGH);
}
}
void motorB(int sp,boolean tf){
analogWrite(speedBpin,sp);//输入模拟值进行设定速度
if(tf){
digitalWrite(pinI4,LOW);//使直流电机(右)逆时针转
digitalWrite(pinI3,HIGH);
}
else
{
//analogWrite(speedBpin,sp);//输入模拟值进行设定速度
digitalWrite(pinI4,HIGH);//使直流电机(右)顺时针转
digitalWrite(pinI3,LOW);
}
if(sp<=10){
digitalWrite(pinI4,HIGH);//使直流电机(右)刹车
digitalWrite(pinI3,HIGH);
}
}
void loop()
{
// Create a client connection
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
//read char by char HTTP request
if (readString.length() < 100) {
//store characters to string
readString += c;
Serial.print(c);
}
//if HTTP request has ended
if (c == '\n') {
///////////////
Serial.println(readString);
client.println("OK");
delay(1);
//stopping client
client.stop();
/////////////////////
//readString= readString.substring(5,readString.length()-11);
readString.replace("GET /","");
readString.replace("HTTP/1.1","");
readString.trim();//qu diao liang duan kong ge
Serial.println(readString);
boolean isforward=true;//shi fou qian jin
if(readString.indexOf('-')>-1){
isforward=false;
//int sp=speedb.toInt();
}
if(readString.indexOf("motora") >-1)//checks for on
{
int sp = abs(readString.substring(7).toInt());//abs qu jue dui zhi wu lun zheng fu
Serial.println(sp);
motorA(sp,isforward);
}
if(readString.indexOf("motorb") >-1)//checks for on
{
int sp = abs(readString.substring(7).toInt());
Serial.println(sp);
motorB(sp,isforward);
}
//clearing string for next read
readString="";
}
}
}
}
}[/code] |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|