kennyho-rass

quadruped_rass

May 29th, 2021 (edited)
1,097
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Arduino 18.43 KB | None
  1.  
  2. #include <SPI.h>
  3. #include <Wire.h>                             // knihovna pro WIRE komunikaci
  4. #include <I2Cdev.h>
  5. #include <ros.h>
  6. #include <std_msgs/String.h>
  7. #include <ArduinoHardware.h>
  8. #include <SoftwareSerial.h>                   // knihovna pro seriovou linku
  9. #include <Adafruit_SSD1306.h>                 // knihovna pro OLED
  10. #include <gfxfont.h>
  11. #include <MPU6050_tockn.h>                    // knihovna pro GYRO
  12. #include <Adafruit_BMP280.h>                  // knihovna pro BMP280
  13. #define BMP280_ADRESA (0x76)                  // nastavení adresy senzoru tlaku
  14. #include <HCPCA9685.h>                        // knihovna pro
  15. #define I2CAdd 0x40                           // nastaveni adresy SERVO SHIELDU PCA9685
  16. HCPCA9685 HCPCA9685(I2CAdd);                  // nastaveni adresy pca9685
  17.  
  18. //#define SERVO_TRIM_MIN 10
  19. //#define SERVO_TRIM_MAX 330
  20.  
  21. #define MPU6050_ADRESA (0x68)                 // nastavení adresy GYRA
  22. MPU6050 mpu6050(Wire);
  23. #define SCREEN_WIDTH 128                      // OLED display delka, v pixelech
  24. #define SCREEN_HEIGHT 32                      // OLED display vyska, v pixelech
  25. #define OLED_RESET    -1                      // Reset pin # (or -1 if sharing Arduino reset pin)
  26. Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
  27. #define SLAVE_ADDRESS 0x11
  28. int servo;                                   // promenna pro servo
  29. int uhel;                                    // promenna pro uhel
  30. int leduv2 = A2;
  31. int ledoci = A3;
  32. int leduv1 = A1;
  33. int laser = 4;
  34. int ledpasek = 3;
  35. int svetlo1 = 5;
  36. int svetlo2 = 6;
  37. int pTrig = 7;                              // pin pro připojení Trig z modulu HC-SR04
  38. int pEcho = 8;                              // pin pro připojení Echo z modulu HC-SR04
  39. int svetlo = 9;
  40. int led = 13;
  41. long odezva, vzdalenost;                    // inicializace proměnných, do kterých se uloží data
  42. byte data_to_echo = 0;
  43.  
  44. void kroky() {               //  Q
  45.   HCPCA9685.Servo(10, 150);         delay(500);
  46.   HCPCA9685.Servo(1, 300);          delay(500);
  47.   HCPCA9685.Servo(8, 190);          delay(500);
  48.   HCPCA9685.Servo(4, 180);          delay(500);
  49.   HCPCA9685.Servo(8, 170);          delay(500);
  50.   HCPCA9685.Servo(10, 180);         delay(500);
  51.   HCPCA9685.Servo(1, 20);           delay(500);
  52.   HCPCA9685.Servo(9, 200);          delay(500);
  53.   HCPCA9685.Servo(10, 150);         delay(500);
  54.   HCPCA9685.Servo(6, 140);          delay(500);
  55.   HCPCA9685.Servo(10, 190);         delay(500);
  56.   HCPCA9685.Servo(8, 110);          delay(500);
  57.   HCPCA9685.Servo(11, 170);         delay(500);
  58.   HCPCA9685.Servo(9, 140);          delay(500);
  59.   HCPCA9685.Servo(5, 130);          delay(500);
  60.   HCPCA9685.Servo(9, 220);          delay(500);
  61.   HCPCA9685.Servo(10, 170);         delay(500);
  62.   HCPCA9685.Servo(11, 120);         delay(500);
  63.   HCPCA9685.Servo(10, 210);         delay(500);
  64.   HCPCA9685.Servo(9, 170);          delay(500);
  65.   HCPCA9685.Servo(7, 210);          delay(500);
  66.   HCPCA9685.Servo(1, 340);          delay(500);
  67.   HCPCA9685.Servo(11, 110);         delay(500);
  68.   HCPCA9685.Servo(9, 150);          delay(500);
  69.   HCPCA9685.Servo(11, 190);         delay(500);
  70.   HCPCA9685.Servo(7, 200);          delay(500);
  71.   HCPCA9685.Servo(11, 140);         delay(500);
  72.   HCPCA9685.Servo(9, 200);          delay(500);
  73.   HCPCA9685.Servo(6, 90);           delay(500);
  74.   HCPCA9685.Servo(4, 250);          delay(500);
  75.   HCPCA9685.Servo(7, 270);          delay(500);
  76.   HCPCA9685.Servo(5, 80);           delay(500);
  77.   HCPCA9685.Servo(6, 90);           delay(500);
  78.   HCPCA9685.Servo(10, 170);          delay(500);
  79.  
  80.   HCPCA9685.Servo(4, 240);
  81.   HCPCA9685.Servo(5, 80);           delay(500);
  82.   HCPCA9685.Servo(6, 90);
  83.   HCPCA9685.Servo(7, 250);          delay(500);
  84.   HCPCA9685.Servo(8, 140);
  85.   HCPCA9685.Servo(9, 180);          delay(500);
  86.   HCPCA9685.Servo(10, 170);
  87.   HCPCA9685.Servo(11, 170);         delay(500);
  88.   HCPCA9685.Servo(1, 340);          delay(100);
  89. }
  90. void krok() {                //  K
  91.   HCPCA9685.Servo(10, 140);
  92.   HCPCA9685.Servo(11, 160);         delay(500);
  93.   HCPCA9685.Servo(8, 130);
  94.   HCPCA9685.Servo(9, 180);          delay(500);
  95.   HCPCA9685.Servo(6, 90);
  96.   HCPCA9685.Servo(7, 250);          delay(500);
  97.   HCPCA9685.Servo(4, 240);
  98.   HCPCA9685.Servo(5, 80);           delay(500);
  99.   HCPCA9685.Servo(1, 200);          delay(1000);
  100.  
  101.   HCPCA9685.Servo(8, 200);
  102.   HCPCA9685.Servo(10, 110);    delay(250);
  103.   HCPCA9685.Servo(4, 200);
  104.   HCPCA9685.Servo(6, 120);     delay(300);
  105.   HCPCA9685.Servo(8, 150);
  106.   HCPCA9685.Servo(10, 170);    delay(300);
  107.   HCPCA9685.Servo(9, 130);
  108.   HCPCA9685.Servo(11, 210);    delay(250);
  109.   HCPCA9685.Servo(5, 130);
  110.   HCPCA9685.Servo(7, 200);     delay(300);
  111.   HCPCA9685.Servo(9, 150);
  112.   HCPCA9685.Servo(11, 160);    delay(200);
  113.   HCPCA9685.Servo(10, 170);
  114.   HCPCA9685.Servo(11, 160);    delay(300);
  115.   HCPCA9685.Servo(8, 140);
  116.   HCPCA9685.Servo(9, 180);     delay(300);
  117.   HCPCA9685.Servo(6, 90);
  118.   HCPCA9685.Servo(7, 250);     delay(300);
  119.   HCPCA9685.Servo(4, 240);
  120.   HCPCA9685.Servo(5, 80);      delay(300);
  121.   HCPCA9685.Servo(1, 200);     delay(100);
  122. }
  123. void postoj() {              //  P
  124.   HCPCA9685.Servo(10, 210);
  125.   HCPCA9685.Servo(11, 140);         delay(500);
  126.   HCPCA9685.Servo(8, 130);
  127.   HCPCA9685.Servo(9, 200);          delay(500);
  128.   HCPCA9685.Servo(6, 100);
  129.   HCPCA9685.Servo(7, 250);          delay(500);
  130.   HCPCA9685.Servo(4, 240);
  131.   HCPCA9685.Servo(5, 80);           delay(500);
  132.   HCPCA9685.Servo(1, 200);          delay(100);
  133. }
  134. void postoj2() {             //  O
  135.   HCPCA9685.Servo(1, 200);        //  delay(200);
  136.   HCPCA9685.Servo(4, 240);
  137.   HCPCA9685.Servo(5, 80);           delay(200);
  138.   HCPCA9685.Servo(6, 90);
  139.   HCPCA9685.Servo(7, 250);          delay(200);
  140.   HCPCA9685.Servo(8, 140);
  141.   HCPCA9685.Servo(9, 180);          delay(200);
  142.   HCPCA9685.Servo(10, 170);
  143.   HCPCA9685.Servo(11, 160);         delay(200);
  144.   HCPCA9685.Servo(1, 350);          delay(100);
  145.   HCPCA9685.Servo(4, 200);
  146.   HCPCA9685.Servo(5, 120);          delay(200);
  147.   HCPCA9685.Servo(6, 120);
  148.   HCPCA9685.Servo(7, 210);          delay(200);
  149.   HCPCA9685.Servo(8, 60);
  150.   HCPCA9685.Servo(9, 270);          delay(200);
  151.   HCPCA9685.Servo(10, 240);
  152.   HCPCA9685.Servo(11, 80);          delay(200);
  153. }
  154. void vyskok()  {             //  E
  155.   HCPCA9685.Servo(4, 200);
  156.   HCPCA9685.Servo(5, 120);          delay(200);
  157.   HCPCA9685.Servo(6, 120);
  158.   HCPCA9685.Servo(7, 210);          delay(200);
  159.   HCPCA9685.Servo(8, 60);
  160.   HCPCA9685.Servo(9, 270);          delay(200);
  161.   HCPCA9685.Servo(10, 240);
  162.   HCPCA9685.Servo(11, 90);          delay(200);
  163.   HCPCA9685.Servo(11, 80);
  164.  
  165. }
  166. void lehni() {              //  L
  167.   HCPCA9685.Servo(1, 350);           delay(100);
  168.   HCPCA9685.Servo(10, 130);
  169.   HCPCA9685.Servo(11, 200);         delay(500);
  170.   HCPCA9685.Servo(9, 80);
  171.   HCPCA9685.Servo(8, 260);          delay(500);
  172.   HCPCA9685.Servo(10, 40);
  173.   HCPCA9685.Servo(11, 300);         delay(500);
  174.   HCPCA9685.Servo(6, 30);
  175.   HCPCA9685.Servo(7, 320);          delay(500);
  176.   HCPCA9685.Servo(9, 60);
  177.   HCPCA9685.Servo(8, 250);          delay(500);
  178.   HCPCA9685.Servo(4, 290);
  179.   HCPCA9685.Servo(5, 50);           delay(500);
  180. }
  181. void ulozit() {              //  w
  182.   HCPCA9685.Servo(1, 350);           delay(100);
  183.   HCPCA9685.Servo(9, 80);
  184.   HCPCA9685.Servo(8, 230);          delay(500);
  185.   HCPCA9685.Servo(10, 10);
  186.   HCPCA9685.Servo(11, 320);         delay(500);
  187.   HCPCA9685.Servo(6, 10);
  188.   HCPCA9685.Servo(7, 330);          delay(500);
  189.   HCPCA9685.Servo(9, 30);
  190.   HCPCA9685.Servo(8, 320);          delay(500);
  191.   HCPCA9685.Servo(4, 330);
  192.   HCPCA9685.Servo(5, 10);           delay(500);
  193. }
  194. void sedni() {               //  S
  195.   HCPCA9685.Servo(1, 340);           delay(100);
  196.   HCPCA9685.Servo(10, 40);
  197.   HCPCA9685.Servo(11, 300);         delay(500);
  198.   HCPCA9685.Servo(6, 10);
  199.   HCPCA9685.Servo(7, 330);          delay(500);
  200.   HCPCA9685.Servo(4, 170);
  201.   HCPCA9685.Servo(5, 140);          delay(500);
  202.   HCPCA9685.Servo(8, 100);
  203.   HCPCA9685.Servo(9, 190);          delay(500);
  204. }
  205. void cupnout() {            //  R
  206.   HCPCA9685.Servo(1, 340);           delay(100);
  207.   HCPCA9685.Servo(8, 120);
  208.   HCPCA9685.Servo(9, 180);          delay(500);
  209.   HCPCA9685.Servo(10, 160);
  210.   HCPCA9685.Servo(11, 160);         delay(500);
  211.   HCPCA9685.Servo(4, 160);
  212.   HCPCA9685.Servo(5, 160);          delay(500);
  213.   HCPCA9685.Servo(6, 160);
  214.   HCPCA9685.Servo(7, 160);          delay(500);
  215. }
  216. void vrteni() {             //  V
  217.   HCPCA9685.Servo(1, 80);           delay(100);
  218.   HCPCA9685.Servo(1, 280);          delay(100);
  219.   HCPCA9685.Servo(1, 80);           delay(100);
  220.   HCPCA9685.Servo(1, 280);          delay(100);
  221.   HCPCA9685.Servo(1, 80);           delay(100);
  222.   HCPCA9685.Servo(1, 280);          delay(100);
  223.   HCPCA9685.Servo(1, 80);           delay(100);
  224.   HCPCA9685.Servo(1, 280);          delay(100);
  225.   HCPCA9685.Servo(1, 340);           delay(100);
  226. }
  227. void mavani() {             //  M
  228.   HCPCA9685.Servo(10, 150);         delay(200);
  229.   HCPCA9685.Servo(8, 200);          delay(200);
  230.   HCPCA9685.Servo(4, 160);          delay(200);
  231.   HCPCA9685.Servo(8, 160);          delay(200);
  232.   HCPCA9685.Servo(8, 200);          delay(200);
  233.   HCPCA9685.Servo(8, 160);          delay(200);
  234.   HCPCA9685.Servo(8, 200);          delay(200);
  235.   HCPCA9685.Servo(4, 240);          delay(200);
  236.   HCPCA9685.Servo(8, 140);          delay(200);
  237.   HCPCA9685.Servo(10, 170);         delay(200);
  238. }
  239. void blikani() {            //  B
  240.   digitalWrite(led, HIGH);          delay (70);
  241.   digitalWrite(led, LOW);           delay (70);
  242.   digitalWrite(led, HIGH);          delay (70);
  243.   digitalWrite(led, LOW);           delay (70);
  244.   digitalWrite(led, HIGH);          delay (70);
  245.   digitalWrite(led, LOW);           delay (70);
  246.   digitalWrite(led, HIGH);          delay (70);
  247.   digitalWrite(led, LOW);           delay (70);
  248.   digitalWrite(led, HIGH);          delay (70);
  249.   digitalWrite(led, LOW);           delay (70);
  250. }
  251. void cas() {                //  A
  252.   Serial.print("Cas od spusteni Rasse: ");
  253.   Serial.print(millis() / 1000);
  254.   Serial.println(" vterin.");
  255. }
  256.  
  257.  
  258. void setup() {
  259.  Wire.begin(SLAVE_ADDRESS);
  260.  
  261.   Wire.onReceive(receiveData);
  262.   Wire.onRequest(sendData);
  263.   Serial.begin(115200);
  264.   Serial.println(" sestavuji projekt ");
  265.   HCPCA9685.Init(SERVO_MODE);              // prepnuti pca9685 do modu-SERVO
  266.   HCPCA9685.Sleep(false);                  // vypnout spanek PCA9685
  267.   Serial.println(" nastavuji Servo shield ");
  268.   lehni();
  269.   display.begin();
  270.   Serial.println(" nastavuji Oled ");
  271.   pinMode(laser, OUTPUT);
  272.   digitalWrite(laser, HIGH);
  273.   display.clearDisplay();                   // vycisteni displeje
  274.   Serial.println(" nastavuji vystupni piny");
  275.   pinMode(led, OUTPUT);
  276.   pinMode(leduv2, OUTPUT);
  277.   pinMode(ledoci, OUTPUT);
  278.   pinMode(leduv1, OUTPUT);
  279.   pinMode(pTrig, OUTPUT);                   // nastaveni Trig-pinu jako vystup
  280.   pinMode(pEcho, INPUT);                    // nastaveni Echo-pinu jako vstup
  281.   pinMode(ledpasek, OUTPUT);                // nastaveni pinu pro ledpasek jako vystup
  282.   pinMode(svetlo, OUTPUT);                  // nastaveni LED-pinu jako vystup
  283.   pinMode(svetlo1, OUTPUT);
  284.   pinMode(svetlo2, OUTPUT);
  285.   digitalWrite(leduv2, HIGH); delay(300);
  286.   digitalWrite(ledoci, HIGH); delay(300);
  287.   digitalWrite(leduv1, HIGH); delay(400);
  288.   digitalWrite(ledoci, LOW);
  289.   digitalWrite(leduv2, LOW);
  290.   digitalWrite(leduv1, LOW);
  291.   Serial.println(" nastavuji vstupni piny");
  292.   mpu6050.begin();                         // zapnuti komunikace s GYROSKOPEM
  293.   mpu6050.calcGyroOffsets(true);           // kalibrace GYRA
  294.   display.display();
  295.   Serial.println(" vse nastaveno. .. ");
  296.   Serial.println(" Pripraven : ");
  297.   digitalWrite(laser, LOW);
  298.   Serial.println(" Zadej povel ");
  299. }
  300.  
  301.  
  302. void loop() {
  303.   if (Serial.available() > 3)   {                 // pokud je na seriove lince buffer
  304.     servo =  Serial.readStringUntil('.').toInt(); // nacteni dat pred teckou do promenne
  305.     uhel =  Serial.readStringUntil('\n').toInt(); // nacteni dat za teckou s ukoncenim do promenne
  306.     Serial.print(servo);
  307.     Serial.print(" . ");
  308.     Serial.println(uhel);
  309.     HCPCA9685.Servo(servo, uhel);                 // provede nastaveni podle promennych
  310.   }                                               //   konec cteni
  311.   int x = Serial.available();
  312.   if ( x == 2 )
  313.   {
  314.     char pismeno = Serial.read();
  315.     Serial.println(pismeno);
  316.     switch (pismeno)
  317.     {
  318.       case 'z':
  319.         digitalWrite(leduv2, HIGH);
  320.         digitalWrite(leduv1, HIGH);
  321.         break;
  322.       case 'x':
  323.         digitalWrite(leduv2, LOW);
  324.         digitalWrite(leduv1, LOW);
  325.         break;
  326.       case 'c':
  327.         digitalWrite(ledoci, HIGH);
  328.         break;
  329.       case 'd':
  330.         digitalWrite(ledoci, LOW);
  331.         break;
  332.       case 'f':
  333.         digitalWrite(leduv1, HIGH);
  334.         break;
  335.       case 'g':
  336.         digitalWrite(leduv1, LOW);
  337.         break;
  338.       case 'j':
  339.         digitalWrite(laser, HIGH);      // zapne laser
  340.         break;
  341.       case 'n':
  342.         digitalWrite(laser, LOW);       //vypne laser
  343.         break;
  344.       case 't':
  345.         digitalWrite(ledpasek, HIGH);
  346.         break;
  347.       case 'y':
  348.         digitalWrite(ledpasek, LOW);
  349.         break;
  350.       case 'q':                        // pohyb pro KROKY
  351.         kroky();
  352.         break;
  353.       case 'o':                        // Postoj2
  354.         postoj2();
  355.         break;
  356.       case 'b':                        // LED13  BLIKANI
  357.         blikani();
  358.         break;
  359.       case 'v':                        // vrteni ocasem
  360.         vrteni();
  361.         break;
  362.       case 'k':                        // jeden krok
  363.         krok();
  364.         break;
  365.       case 's':                        // sedni
  366.         sedni();
  367.         break;
  368.       case 'p':                        // postoj
  369.         postoj();
  370.         break;
  371.       case 'l':                        // lehni
  372.         lehni();
  373.         break;
  374.         case 'w':                        // lehni
  375.         ulozit();
  376.         break;
  377.       case 'r':                        // povel  CUPNOUT NA KOLENA
  378.         cupnout();
  379.         break;
  380.       case 'm':                        // Mavani levou predni packou
  381.         mavani();
  382.         break;
  383.       case 'e':                       // vyskok
  384.         vyskok();
  385.         break;
  386.       case 'a':                        // v případě přejetí znaku 'a' vypíše  čas od spuštění Arduina
  387.         cas();
  388.         break;
  389.       /*    case '\r':         // přesun na začátek řádku - znak CR
  390.          break;
  391.         case '\n':         // odřádkování - znak LF
  392.          break;
  393.       */
  394.       case 10:        // přesun na začátek řádku - znak CR
  395.         break;
  396.       case 13:        // odřádkování - znak LF
  397.         break;
  398.       default:
  399.         Serial.println(" Neznam prikaz ");
  400.     }
  401.   }
  402.   display.clearDisplay();                             // vycisteni displeje
  403.   Adafruit_BMP280 bmp;                                // inicializace senzoru BME z knihovny
  404.   bmp.begin(0x76);                                    // Start the bmp
  405.   float T = bmp.readTemperature();                    // Read temperature in °C
  406.   float P = bmp.readPressure() / 100;                 // Read Pressure in Pa and conversion to hPa
  407.   float A = bmp.readAltitude(1013.26);                // Calthe Altitude, the "1019.66"  in (hPa)level at day in your region
  408.   mpu6050.update();                                   // nacteni novych dat z gyroskopu
  409.   digitalWrite(pTrig, LOW);                           // vypne Trig-pin
  410.   delayMicroseconds(2);                               // nastaví na 2 mikrosekundy výstup na GND (pro jistotu)
  411.   digitalWrite(pTrig, HIGH);                          // zapne Trig-pin
  412.   delayMicroseconds(5);                               // nastaví na 5 mikrosekund výstup rovný napájení
  413.   digitalWrite(pTrig, LOW);                           // vypne Trig-pin
  414.   odezva = pulseIn(pEcho, HIGH);                      // pomocí funkce pulseIn získáme následně délku pulzu v mikrosekundách
  415.   vzdalenost = odezva / 58.31;                        // přepočet získaného času na vzdálenost v cm
  416.   if (vzdalenost > 10) digitalWrite(svetlo2, LOW);
  417.   if (vzdalenost < 10) digitalWrite(svetlo2, HIGH);   // pokud je vzdalenost min nez 10cm rozsviti led2  cervena
  418.   if (vzdalenost > 15) digitalWrite(svetlo1, LOW);
  419.   if (vzdalenost < 15) digitalWrite(svetlo1, HIGH);   // pokud je vzdalenost min nez 15cm rozsviti led1  zluta
  420.   if (vzdalenost > 20) digitalWrite(svetlo, LOW);
  421.   if (vzdalenost < 20) digitalWrite(svetlo, HIGH);    // pokud je vzdalenost min nez 20cm rozsviti led   zelena
  422.   display.setTextColor(WHITE);                        // nastavi OLED na bilou barvu
  423.   display.setTextSize(2);                             // OLED display nastaveni velikosti pisma
  424.   display.setCursor(0, 0);                            // OLED display nastaveni pozice
  425.   display.print(T, 1);                                // OLED display vypis teploty
  426.   display.setTextSize(1);
  427.   display.setCursor(55, 0);
  428.   display.print(P, 0);
  429.   display.setCursor(100, 0);
  430.   display.print(A, 0);
  431.   display.setCursor(122, 0);
  432.   display.print("m");
  433.   display.setCursor(55, 8);
  434.   display.print(mpu6050.getTemp(), 1);
  435.   display.setCursor(90, 8);
  436.   display.print(vzdalenost);
  437.   display.setCursor(115, 10);
  438.   display.print("cm");
  439.   display.setCursor(0, 16);
  440.   display.print(mpu6050.getGyroX(), 1);
  441.   display.setCursor(40, 16);
  442.   display.print(mpu6050.getGyroY(), 1);
  443.   display.setCursor(90, 16);
  444.   display.print(mpu6050.getGyroZ(), 1);
  445.   display.setCursor(0, 24);
  446.   display.print(mpu6050.getAngleX(), 1);
  447.   display.setCursor(40, 24);
  448.   display.print(mpu6050.getAngleY(), 1);
  449.   display.setCursor(90, 24);
  450.   display.print(mpu6050.getAngleZ(), 1);
  451.   display.display();
  452.     Serial.print(mpu6050.getTemp() , 1); Serial.print("-°C CORE MPU, ");
  453.     Serial.print("\tgX "); Serial.print(mpu6050.getGyroX(), 1);
  454.     Serial.print("\tgY "); Serial.print(mpu6050.getGyroY(), 1);
  455.     Serial.print("\tgZ "); Serial.print(mpu6050.getGyroZ(), 1);
  456.     Serial.print("\tAX "); Serial.print(mpu6050.getAngleX(), 1);
  457.     Serial.print("\tAY "); Serial.print(mpu6050.getAngleY(), 1);
  458.     Serial.print("\tAZ "); Serial.print(mpu6050.getAngleZ(), 1);
  459.     Serial.print(" : ");
  460.     Serial.print(T, 2); Serial.print(" °C, ");
  461.     Serial.print(P, 2); Serial.print(" hPa, ");
  462.     Serial.print(A, 0); Serial.print(" mnm, ");
  463.     Serial.print(vzdalenost); Serial.println(" cm, ");
  464.   delay(10);
  465.  
  466. }
  467. void receiveData(int bytecount)
  468. {
  469.   for (int i = 0; i < bytecount; i++) {
  470.     data_to_echo = Wire.read();
  471.   }
  472. }
  473. void sendData()
  474. {
  475.   Wire.write(data_to_echo);
  476. }
RAW Paste Data Copied