On the i2c bus, Arduino Nano with address 2, transmits the weight value with a resolution of 1 kg.

Dependencies:   _24LCXXX

Files at this revision

API Documentation at this revision

Comitter:
Aleksk
Date:
Fri Oct 08 11:53:23 2021 +0000
Parent:
10:b6de15a30716
Commit message:
On the i2c bus, Arduino Nano with address 2, transmits the weight value with a resolution of 1 kg.

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Fri Mar 12 11:58:50 2021 +0000
+++ b/main.cpp	Fri Oct 08 11:53:23 2021 +0000
@@ -1,4 +1,5 @@
-// 10.03.2021 Продолжение (клон )mbed-os5-press21
+// 07.10.2021 Продолжение (клон )mbed-os5-press22
+// По шине i2c Arduino Nano с адресом 2, передает значение веса с дискретностью 1 кг.
 // digital pin 11, pin 12 as an input концевики теперь нормально замкнутые
 // Вернул timer_4. Теперь он периодически открывает выпускной клапан для контроля утечек воды.
 // Вместо pc.printf("Reset ALARM \r\n") теперь plotter.printf("Reset ALARM \r\n") это нужно для парсера программы  Setup_EEPROM
@@ -28,6 +29,8 @@
 
 I2C i2c(PB_9,PB_8);        // sda, scl
 _24LCXXX eeprom(&i2c, 0x50);
+const int addr7bit = 0x02;      // 7 bit I2C address slave Arduino_Nano
+const int addr8bit = 0x02 << 1; // 8bit I2C address, 0x90
 
 AnalogIn analog_value_0(A0);                                                      //подключение аналогового входа A0
 AnalogIn analog_value_1(A1);                                                      //подключение аналогового входа A1
@@ -472,6 +475,10 @@
     int time, time_2, time_3, time_4, ks, valve1, valve2, countValve1=0, countValve2=0, temp_valueSensor;
     int frequencyValve1, frequencyValve2;
     float raw_value_sum_0=0, raw_value_sum_1=0, raw_value_sum_2=0, raw_value_sum_3=0, raw_value_sum_4=0, raw_value_sum_5=0;
+    char cmd[1];                                                                //массив с весом, принятым от slave
+    //i2c.read( addr8bit, cmd, 1);                                                 //читаем вес по шине i2c  из slave Arduino_Nano
+    //pc.printf("cmd[0] = %x\n", cmd[0]);
+
     digital_4.write(0);                                                         //valve1  off;
     digital_7.write(0);                                                         //valve2  off;    
     digital_5.write(0);                                                         //valve3,4  off; 
@@ -494,11 +501,11 @@
     timer_2.start();
     timer_3.start();
     timer_4.start();
-    
+       
   while (true){                                                                 //бесконечный цикл
     // kick watchdog regularly within provided timeout (сброс собаки в начало счёта)
     watchdog.kick();
-    
+        
     if (flag_stopRegulator == 1){ event_N = 255;}                               //сброс события через кнопку Стоп в программе оператора 
     
     if (flag_stopRegulator == 1 || event_N < 255) {                             //полный останов регулятора и принудительное запирание всех клапанов
@@ -591,7 +598,7 @@
     if (counter_cycle1 >= 20 ) {
       counter_cycle1=0;
       
-      WL = raw_value_sum_0/10 * 3300;                                           // преобразование в напряжение 0-3300 mV  с усреднением
+      //WL = raw_value_sum_0/10 * 3300;                                           // преобразование в напряжение 0-3300 mV  с усреднением
       raw_value_sum_0 = 0 ;
       sensor_value = raw_value_sum_1/10 * 3300;                                 // преобразование в напряжение 0-3300 mV  с усреднением
       raw_value_sum_1 = 0 ;
@@ -636,13 +643,16 @@
         }
         //--------------regulator end-------------------------
       }
-      time=timer.read_us();
+      time=timer.read_us();                                                     //условие будет выполнятся ровно один раз в секунду
       if (time > 1000000) {
         timer.reset();                                                          //начало счёта времени
         frequencyValve1 =  countValve1;                                         //частота (Гц) срабатывания клапана 1 
         frequencyValve2 =  countValve2;                                         //частота (Гц) срабатывания клапана 2 
         countValve1=0;
         countValve2=0;
+        i2c.read( addr8bit, cmd, 1);                                            //читаем вес по шине i2c  из slave Arduino_Nano
+        WL=cmd[0];
+        //plotter.printf("cmd[0] = %x\n", cmd[0]);
       }
       //--------------------==_ALARM_scope_Begin==----------------------
        if (Pd >= Pd_eeprom) {