BULME_BERTL14
/
func_Bertl
Bertl Robot with fiunctions
Revision 9:8e3392380915, committed 2015-02-09
- Comitter:
- bulmecisco
- Date:
- Mon Feb 09 09:20:58 2015 +0000
- Parent:
- 8:baa918b0f64c
- Commit message:
- line sensor added - function BottomIsBlack()
Changed in this revision
config.h | Show annotated file Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/config.h Thu Feb 05 12:39:34 2015 +0000 +++ b/config.h Mon Feb 09 09:20:58 2015 +0000 @@ -60,6 +60,11 @@ DigitalIn SensorR(P1_13); // motor sensor right HCSR04 usensor(p21,p22); // HC-SR04 ultrasonic sensor +PwmOut mg1(P1_15); //PWM Ausgang zum Motor Links +PwmOut mg2(P0_21); //PWM Ausgang zum Motor Rechts +const int PERIOD = 20; +const int SPEED = 3; + #if defined(DEBUG) && DEBUG > 0 #define DEBUG_PRINT(fmt, args...) fprintf(stderr, "DEBUG: %s:%d:%s(): " fmt, \ __FILE__, __LINE__, __func__, ##args)
--- a/main.cpp Thu Feb 05 12:39:34 2015 +0000 +++ b/main.cpp Mon Feb 09 09:20:58 2015 +0000 @@ -9,10 +9,12 @@ #include "mbed.h" #include "config.h" -bool Start(); +//bool Start(int speed); +bool Start(float speed); void ShutOff(); void Move(); bool FrontIsClear(); +bool FrontIsClearU(); // with ultra sonic sensor bool MoveMeasure(int time, int& left, int& right); bool MoveTicks(int ticks); void TurnBack(); @@ -24,39 +26,32 @@ void MoveMore(int anzahl); void Back(); bool WaitUntilButtonPressed(); +int BottomIsBlack(); // with line sensor // Eigene Funktionsdefinitionen hier -bool FrontIsClearU() + +void LedAround() { - int dist = 0; - usensor.start(); - wait_ms(10); - dist=usensor.get_dist_cm(); - if(dist < 5) - return false; - else - return true; - -// pc.printf("\r\nCount =%d",count); -// pc.printf("Distance: %d",dist ); -} + int i=10; + int led = 0; + + led = LED_FL1; // 0x01 + + while(i-- > 0) { + TurnLedOn(led); + wait(1); + led *= 2; + if(led > 0x80) + led = LED_FL1; // 0x01 + } +} + // ************* Hauptprogramm ************ int main() { - int dist = 0; - unsigned char count=0; -/* while(count < 20) { - usensor.start(); - wait_ms(500); - dist=usensor.get_dist_cm(); - pc.printf("\r\nCount =%d",count); - pc.printf("Distance: %d",dist ); - count++; - - } -*/ // while(!Start()) {} // wait to start - wait_ms(200); - while(FrontIsClearU()) + Start(0.3); // speed between 0.2 (low) and 1.0 (normal) + //Move(); + while(!BottomIsBlack()) { MoveTicks(40); } @@ -66,23 +61,34 @@ MoveTicks(40); } - // TurnLeftTicks(2000); // Anzahl der MotorSensorwerte - + TurnLeftTicks(200); // Anzahl der Motorsensorwerte + Move(); ShutOff(); return 0; } +// Line sensor at bottom of Bertl +int BottomIsBlack() +{ + int detect; + + detect = linesensor; + wait_ms(5); + return detect; +} -bool Start() +bool Start(float speed) { + pc.baud(9600); + pc.printf("Hello"); + DEBUG_PRINT("Debug level: %d", (int) DEBUG); i2c.frequency(40000); // I2C Frequenz 40kHz - - while(WaitUntilButtonPressed()) { } + mg1 = mg2 = speed; +// while(WaitUntilButtonPressed()) { } return true; } - void ShutOff() { MotorR_FORWARD = MotorL_FORWARD = 0; // motor OFF @@ -105,7 +111,7 @@ count++; wait_ms(1); // wait for 1 ms } - //DEBUG_PRINT("SensorL: %d SensorR: %d\right\n", left, right); + DEBUG_PRINT("SensorL: %d SensorR: %d\right\n", left, right); MotorR_FORWARD = MotorL_FORWARD = 0; // both motor off MotorR_EN=MotorL_EN=0; @@ -133,7 +139,19 @@ DEBUG_PRINT("\right\nWERT: %d \right\n", wert); return wert; } - +// with ultra sonic sensor +bool FrontIsClearU() +{ + int dist = 0; + usensor.start(); + wait_ms(10); + dist=usensor.get_dist_cm(); + if(dist < 5) + return false; + else + return true; + DEBUG_PRINT("Distance: %d", dist); +} /* use in main(): int left=0, right=0; @@ -242,11 +260,13 @@ { MotorR_EN=1; // motor right ENABLE - MotorR_FORWARD = 1; // motor right forward ON + MotorR_FORWARD = MotorL_REVERSE = 1; + //MotorR_FORWARD = 1; // motor right forward ON wait_ms(500); // wait 500 ms (90°) - MotorR_FORWARD = 0; // motor right forward OFF - MotorR_EN=0; - + //MotorR_FORWARD = 0; // motor right forward OFF + //MotorR_EN=0; + MotorL_REVERSE = MotorR_FORWARD = 0; + MotorL_EN=MotorR_EN=0; wait_ms(250); // only to step the robot } @@ -292,6 +312,22 @@ wait(0.5); } +void ManuelDistancMeasure() +{ + int dist = 0; + unsigned char count=0; + + while(count < 20) { + usensor.start(); + wait_ms(500); + dist=usensor.get_dist_cm(); + pc.printf("\r\nCount =%d",count); + pc.printf("Distance: %d",dist ); + count++; + + } +} + /* void TurnAllLedOff() {