Alex K
/
mbed-os5-press_23
On the i2c bus, Arduino Nano with address 2, transmits the weight value with a resolution of 1 kg.
Diff: main.cpp
- Revision:
- 11:86a18c130515
- Parent:
- 10:b6de15a30716
--- 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) {