Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: Communication_Robot RTC-DS1307 iSerial mbed
Fork of Andante_v00 by
Diff: main.cpp
- Revision:
- 5:aae71a94cb41
- Parent:
- 4:42dc950d54f4
- Child:
- 8:af8fbf678f28
--- a/main.cpp Mon Mar 02 05:53:20 2015 +0000
+++ b/main.cpp Wed Jul 15 08:34:08 2015 +0000
@@ -7,6 +7,8 @@
#include "communication.h"
#include "protocol.h"
+#include "Rtc_Ds1307.h"
+
//control stearing
PwmOut heading_front(PIN_FRONT_SERVO);
@@ -27,6 +29,9 @@
COMMUNICATION pan_b(TX_PAN_B, RX_PAN_B,115200,1000,100); // tx, rx
+Rtc_Ds1307 rtc(RTC_SDA, RTC_SCL);
+Rtc_Ds1307::Time_rtc tm = {};
+
void Init_servo()
{
heading_front.period_ms(20);
@@ -36,8 +41,9 @@
void Init_foreground()
{
+ //Update_command.attach(&getCommand,0.1);
Update_command.attach(&getCommand,TIMER_UPDATE);
- Samping.attach(&getSensor,TIMER_SAMPING);
+ //Samping.attach(&getSensor,TIMER_SAMPING);
}
@@ -47,24 +53,26 @@
Init_servo();
+ Init_foreground();
ANDANTE_PROTOCOL_PACKET packet;
+ // test send datapacket
packet.robotId = 0xBB;
- packet.length = 8;
- packet.instructionErrorId = 0x01;
- packet.parameter[0] = 0x02;
- packet.parameter[1] = 0x03;
- packet.parameter[2] = 0x04;
- packet.parameter[3] = 0x05;
- packet.parameter[4] = 0x06;
- packet.parameter[5] = 0x07;
+ packet.length = 5;
+ packet.instructionErrorId = 0x07;
+ packet.parameter[0] = 255;
+ packet.parameter[1] = 255;
+ packet.parameter[2] = 255;
+
pan_a.sendCommunicatePacket(&packet);
-
+ while(1) {
+ // uint8_t status = pan_a.receiveCommunicatePacket(&packet);
-
+ // pan_a.sendCommunicatePacket(&packet);
+ }
}
@@ -75,23 +83,29 @@
ANDANTE_PROTOCOL_PACKET packet;
uint8_t status = pan_a.receiveCommunicatePacket(&packet);
+ myled=0;
+
+
if(status == ANDANTE_ERRBIT_NONE) {
- if(count >1) {
+ if(count >2 && count <10) {
count--;
} else {
count=0;
+
}
+ pan_a.sendCommunicatePacket(&packet);
//update command
setControl(&packet);
} else if(status == ANDANTE_ERRBIT_READ_TIMEOUT) {
count++;
-
}
if(count >= TIMEOUT_RESPONE_COMMAND) {
//stop robot
+ count++;
+ myled=1;
setSpeedControl(0.0);
}
}
@@ -103,6 +117,7 @@
void setControl(ANDANTE_PROTOCOL_PACKET *packet)
{
+
if(packet->instructionErrorId && ANDANTE_SPEED_CONTROL == ANDANTE_SPEED_CONTROL) {
setSpeedControl(((int16_t)packet->parameter[0]-127)/128.0);
}
@@ -125,9 +140,9 @@
return;
}
- if(precent <0) {
+ if(precent <0.0f) {
us = (FRONT_CENTER-FRONT_MIN)*precent +FRONT_CENTER;
- } else if(precent >0) {
+ } else if(precent >0.0f) {
us = (FRONT_MAX-FRONT_CENTER)*precent +FRONT_CENTER;
}
heading_front.pulsewidth_us(us);
@@ -159,9 +174,9 @@
return;
}
- if(precent <0) {
+ if(precent <0.0f) {
us = (RC_SPEED_CENTER-RC_SPEED_MIN)*precent +RC_SPEED_CENTER;
- } else if(precent >0) {
+ } else if(precent >0.0f) {
us = (RC_SPEED_MAX-RC_SPEED_CENTER)*precent +RC_SPEED_CENTER;
}
drive_motor.pulsewidth_us(us);
