Advertisement
Guest User

Untitled

a guest
Feb 21st, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.26 KB | None | 0 0
  1. #include <Servo.h> // biblioteka do obsługi serwomechanizmów
  2. #include <SoftwareSerial.h>
  3. #include "NewPing.h" // biblioteka do obsługi sonaru
  4. #include "ESP8266.h"
  5.  
  6. SoftwareSerial mySerial(A1, A2); // RX, TX
  7. String inputString = ""; // a string to hold incoming data
  8. boolean stringComplete = false;
  9.  
  10. ESP8266 wifi(Serial);
  11.  
  12. Servo myservo1;
  13. Servo myservo2;
  14.  
  15. unsigned int odleglosc;
  16. #define TRIG A3
  17. #define ECHO A4
  18.  
  19. void przod()
  20. {
  21. digitalWrite(7,HIGH);
  22. myservo1.writeMicroseconds(1700);
  23. myservo2.writeMicroseconds(1300);
  24. }
  25.  
  26. void zatrzymaj()
  27. {
  28. digitalWrite(7,LOW);
  29. }
  30.  
  31. void prawo()
  32. {
  33. digitalWrite(7,HIGH);
  34. myservo1.writeMicroseconds(1300);
  35. myservo2.writeMicroseconds(1300);
  36. }
  37.  
  38. void lewo()
  39. {
  40. digitalWrite(7,HIGH);
  41. myservo1.writeMicroseconds(1700);
  42. myservo2.writeMicroseconds(1700);
  43. }
  44.  
  45. void tyl()
  46. {
  47. digitalWrite(7,HIGH);
  48. myservo1.writeMicroseconds(1300);
  49. myservo2.writeMicroseconds(1700);
  50. }
  51.  
  52.  
  53. void sonar()
  54. {
  55. NewPing sonar( TRIG, ECHO, 150 );
  56. odleglosc = sonar.ping_cm();
  57. //Serial.print( "Odl : " ); // w celach debugowania
  58. //Serial.println( odleglosc );
  59. }
  60.  
  61. //funkcja inicjalizująca ESP
  62. void espInit(){
  63. Serial.begin(9600);
  64.  
  65. while (!Serial) {
  66. // czeka na podłączenie portu szeregowego, nie wykorzystywane w głównym programie
  67. }
  68. inputString.reserve(200); //rezerwuje pamiec dla zmiennej inputString
  69.  
  70.  
  71. //mySerial.begin(9600); //w celach debugowania, ustawia prędkość transmisji
  72. //dla programowego UARTa
  73. Serial.write("AT+RST\r\n"); // restartuje moduł ESP
  74.  
  75. delay(4000);
  76. Serial.write("AT+CIPMUX=1\r\n"); //konfiguracja ESP- ustawia tryb pracy
  77. //1- obsługa wielu połączeń na raz
  78.  
  79. delay(1500);
  80. Serial.write("AT+CWMODE=3\r\n"); //konfiguracja ESP - ustawia tryb pracy klient+ AP
  81.  
  82. delay(1500);
  83. Serial.write("AT+CWSAP=\"ESP_Biter\",\"1234abcd\",6,3\r\n");
  84. //ustawia nazwę sieci wifi na "ESP_BITER", hasło do połączenia na "1234abcd"
  85.  
  86. delay(1500);
  87. Serial.write("AT+CIPSERVER=1,1315\r\n"); // serwer na porcie 1315
  88.  
  89. delay(1500);
  90. Serial.write("AT+CIPSTO=10000\r\n"); //ustawia limit czasu oczekiwania na 10000s
  91.  
  92. delay(1500);
  93. // mySerial.println(wifi.getLocalIP().c_str()); //w celach debugowania, zwraca IP
  94.  
  95. }
  96.  
  97.  
  98. void setup() {
  99. // inicjalizacja układu
  100. espInit(); //wywołanie funkcji inicjalizującej ESP
  101. myservo1.attach(3); // dołącza silnik do wyjścia 3 //lewy
  102. myservo2.attach(5); // dołącza silnik do wyjścia 5 //prawy
  103. pinMode(7,OUTPUT); //ustawia PIN "enable" jako wyjście
  104. //digitalWrite(7,HIGH);
  105. // delay(2000);
  106. }
  107.  
  108. void loop() {
  109.  
  110. if (stringComplete) { //jeśli ciąg znaków jest kompletny
  111.  
  112. if(inputString.charAt(9)=='1'){ //na 9 znaku jest informacja przesyłana
  113. //przod
  114. sonar(); //funkcja zwracająca odległość czujnika od przeszkody
  115. if(odleglosc >=15 || (odleglosc==0)){
  116. przod();
  117. delay(500);
  118. }
  119. }else if(inputString.charAt(9)=='2'){
  120. //zatrzymaj
  121. zatrzymaj();
  122. delay(500);
  123. }else if(inputString.charAt(9)=='3'){
  124. //lewo
  125. sonar();
  126. if(odleglosc >=15 || (odleglosc==0)){
  127. lewo();
  128. delay(500);}
  129. }else if(inputString.charAt(9)=='4){
  130. //prawo
  131. sonar();
  132. if(odleglosc >=15 || (odleglosc==0)){
  133. prawo();
  134. delay(500);}
  135. }else if(inputString.charAt(9)=='5'){
  136. //do tylu
  137. tyl();
  138. delay(500);
  139. }else if(inputString.charAt(9)=='6'){
  140. //łuk w lewo
  141. sonar();
  142. if(odleglosc >=15 || (odleglosc==0)){
  143. luklewo();
  144. delay(500);}}
  145.  
  146.  
  147. // mySerial.println("input" + inputString);
  148. // clear the string:
  149. inputString = ""; //czyszczenie zmiennej
  150. stringComplete = false; // resetowanie flagi
  151. digitalWrite(7,LOW); // wyłączenie napędu, zatrzymanie robota
  152. }
  153. }
  154.  
  155.  
  156.  
  157.  
  158.  
  159. void serialEvent() { //obsługa przerwania
  160. while (Serial.available()) {
  161. // get the new byte:
  162. char inChar = (char)Serial.read();
  163. // mySerial.println(inChar); //debugowanie
  164. // kompletowanie wysłanego ciągu znaków
  165. inputString += inChar;
  166. // ustawienie flagi jeśli znak jest kompletny
  167. if (inChar == '\n') {
  168. stringComplete = true;
  169. }
  170. } }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement