Advertisement
Guest User

bono 4

a guest
Dec 4th, 2017
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.47 KB | None | 0 0
  1. #define ENA 5
  2. #define ENB 6
  3. #define IN1 7
  4. #define IN2 8
  5. #define IN3 9
  6. #define IN4 11
  7. #define LED 13
  8.  
  9. #include <Servo.h>  //servo library
  10. Servo myservo;      // create servo object to control servo
  11.  
  12. bool state = LOW;
  13. char getstr;
  14. int speedy = 150;
  15.  
  16. int Echo = A4;  
  17. int Trig = A5;
  18. long dauer = 0; //funduino.de Nr.10
  19. long entfernung = 0; //funduino.de Nr.10
  20. int rightDistance = 0, leftDistance = 0, middleDistance = 0;
  21. int currentDirection = 0; //0 = stop, 1 = forward, 2 = reverse, 3 = left, 4 = right
  22. bool distForwardOk = false;
  23.  
  24. void forward()
  25. {  
  26.   digitalWrite(ENA,HIGH);
  27.   digitalWrite(ENB,HIGH);
  28.   digitalWrite(IN1,HIGH);
  29.   digitalWrite(IN2,LOW);
  30.   digitalWrite(IN3,LOW);
  31.   digitalWrite(IN4,HIGH);
  32.   currentDirection = 1;
  33.   Serial.println("Forward");
  34. }
  35.  
  36. void back()
  37. {
  38.   digitalWrite(ENA,HIGH);
  39.   digitalWrite(ENB,HIGH);
  40.   digitalWrite(IN1,LOW);
  41.   digitalWrite(IN2,HIGH);
  42.   digitalWrite(IN3,HIGH);
  43.   digitalWrite(IN4,LOW);
  44.   currentDirection = 2;
  45.   Serial.println("Back");
  46. }
  47.  
  48. void left()
  49. {
  50.   analogWrite(ENA,speedy);
  51.   analogWrite(ENB,speedy);
  52.   digitalWrite(IN1,LOW);
  53.   digitalWrite(IN2,HIGH);
  54.   digitalWrite(IN3,LOW);
  55.   digitalWrite(IN4,HIGH);
  56.   currentDirection = 3;
  57.   Serial.println("Left");
  58. }
  59.  
  60. void right()
  61. {
  62.   analogWrite(ENA,speedy);
  63.   analogWrite(ENB,speedy);
  64.   digitalWrite(IN1,HIGH);
  65.   digitalWrite(IN2,LOW);
  66.   digitalWrite(IN3,HIGH);
  67.   digitalWrite(IN4,LOW);
  68.   currentDirection = 4;
  69.   Serial.println("Right");
  70. }
  71.  
  72. void stop()
  73. {
  74.   digitalWrite(ENA,LOW);
  75.   digitalWrite(ENB,LOW);
  76.   currentDirection = 0;
  77.   Serial.println("Stop!");
  78. }
  79.  
  80. void stateChange()
  81. {
  82.   state = !state;
  83.   digitalWrite(LED, state);
  84.   Serial.println("Light");  
  85. }
  86.  
  87. void speedDown()  
  88. {
  89.   speedy = (speedy-50);
  90.  
  91.   if (speedy <=100)
  92.     speedy = 100;
  93. }
  94.  
  95. void speedUp()
  96. {
  97.   speedy = (speedy+50);
  98.  
  99.   if (speedy >=200)
  100.     speedy = 200;
  101. }
  102.  
  103.   //Ultrasonic distance measurement Sub function
  104. int Distance_test() {
  105.   digitalWrite(Trig, LOW);  
  106.   delayMicroseconds(2);
  107.   digitalWrite(Trig, HIGH);  
  108.   delayMicroseconds(20);
  109.   digitalWrite(Trig, LOW);  
  110.   float Fdistance = pulseIn(Echo, HIGH);  
  111.   Fdistance= Fdistance / 58;      
  112.   return (int)Fdistance;
  113. }
  114.  
  115. void setup() {
  116.   Serial.begin(9600);
  117.   pinMode(LED, OUTPUT);
  118.   pinMode(IN1,OUTPUT);
  119.   pinMode(IN2,OUTPUT);
  120.   pinMode(IN3,OUTPUT);
  121.   pinMode(IN4,OUTPUT);
  122.   pinMode(ENA,OUTPUT);
  123.   pinMode(ENB,OUTPUT);
  124.   pinMode(Trig, OUTPUT); // Trigger-Pin ist ein Ausgang
  125.   pinMode(Echo, INPUT); // Echo-Pin ist ein Eingang
  126.   stop();
  127. }
  128.  
  129. void loop()
  130. {
  131.  
  132.     digitalWrite(Trig, LOW);
  133.     delay(5);
  134.     digitalWrite(Trig, HIGH);
  135.     delay(10);
  136.     digitalWrite(Trig, LOW);
  137.     dauer = pulseIn(Echo, HIGH);
  138.     entfernung = (dauer/2) * 0.03432;
  139.     distForwardOk = false;
  140.    
  141.     if (entfernung >= 1000 || entfernung <= 0)
  142.     {
  143.         Serial.println("Kein Messwert");
  144.     }
  145.     else
  146.     {
  147.         Serial.print(entfernung);
  148.         Serial.println(" cm");
  149.  
  150.         if (entfernung >= 80)
  151.         {
  152.             distForwardOk = true;
  153.         }
  154.     }
  155.  
  156.  
  157.     getstr = Serial.read();
  158.    
  159.     switch(getstr)
  160.     {
  161.         case 'a':
  162.             stateChange();
  163.             break;
  164.         case 'f':
  165.             if (distForwardOk)
  166.             {
  167.                 forward();
  168.             }
  169.             break;
  170.            
  171.         case 'b':
  172.             back();
  173.             break;
  174.            
  175.         case 'l':
  176.             left();
  177.             break;
  178.            
  179.         case 'r':
  180.             right();
  181.             break;
  182.            
  183.         case 's':
  184.             stop();
  185.             break;
  186.            
  187.         default:  
  188.             break;
  189.    
  190.     }
  191.          
  192.          
  193.     if (currentDirection == 1 &&
  194.         !distForwardOk)
  195.     {
  196.         stop();
  197.     }
  198.  
  199.     delay(100);
  200. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement