The weight is now transmitted in Newtons. For this, two bytes are transferred over the i2c bus instead of one.
Revision 12:de8c39bf5da3, committed 2021-10-15
- Comitter:
- Aleksk
- Date:
- Fri Oct 15 10:15:22 2021 +0000
- Parent:
- 11:86a18c130515
- Commit message:
- The weight is now transmitted in Newtons. For this, two bytes are transferred over the i2c bus instead of one.
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Fri Oct 08 11:53:23 2021 +0000 +++ b/main.cpp Fri Oct 15 10:15:22 2021 +0000 @@ -1,27 +1,28 @@ -// 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 -// Удалена команда pc.printf, посылающая пустую строку раз в секунду и связанный с ней timer_4, т.к. изменена программа оператора (Loc()). -// Суммирование значений каналов А0 А1 А2 было 9 раз, исправлено на 10. -// Передаваемые через pc.printf сообщения в РС дополнены контрольными суммами для увеличения надёжности связи. -// Введена команда pc.printf, посылающая пустую строку раз в секунду, на случай потери (порчи )данных при пересылке и +// 11.10.2021 Продолжение (клон )mbed-os5-press22 +//19. Теперь вес принимается по шине i2c в Ньютонах, как на дисплее динамометра. +//18. По шине i2c Arduino Nano с адресом 2, передает значение веса с дискретностью 1 кг, приём происходит раз в секунду, используется timer. +//17. digital pin 11, pin 12 as an input концевики теперь нормально замкнутые. +//16. Вернул timer_4. Теперь он периодически открывает выпускной клапан для контроля утечек воды. +//15. Вместо pc.printf("Reset ALARM \r\n") теперь plotter.printf("Reset ALARM \r\n") это нужно для парсера программы Setup_EEPROM. +//14. Удалена команда pc.printf, посылающая пустую строку раз в секунду и связанный с ней timer_4, т.к. изменена программа оператора (Loc()). +//13. Суммирование значений каналов А0 А1 А2 было 9 раз, исправлено на 10. +//12. Передаваемые через pc.printf сообщения в РС дополнены контрольными суммами для увеличения надёжности связи. +//11. Введена команда pc.printf, посылающая пустую строку раз в секунду, на случай потери (порчи )данных при пересылке и // возможного зависания программы оператора при ожидании символа из serial порта (для этого добавлен timer_4). -// Значения уставок EEPROM2 выводяться в pc.print в специальной строке с текущими данными диагностики -// Сделан дополнительный блок в парсере для декодирования приходящих аварийных уставок, они пишутся в EEPROM2 -// Сделан timer_2 для отсчёта времени открытого состояния вентиля 1 -// Сделан timer_3 для отсчёта времени открытого состояния вентиля 2 -// Подключены цифровые входы D11,D12,D13. Реализованы условия остановки по 10 аварийным событиям. -// Реализован сброс события (event_N = 255) через кнопку Стоп в программе оператора -// Принимается флаг от кнопки Стоп - полной остановки регулятора - закрытие всех 4-х клапанов и передача статуса кнопки в программу оператора -// Принимается флаг от кнопок включения - выключения компрессора, - идет команда на дискретный выход digital_6(PB_10) -// Принимается новая уставка num_chan - переключение номера активного измерительного канала для обратной связи регулятора. -// Эта уставка, как и все остальные, пишется в EEPROM. -// Включены все шесть аналоговых входа, читаются пять -// при получении командной строки с нулевой суммой, по новому флагу flag_zerostart, передаётся в сериал текущие уставки и величины -// (важно для старта программы на PC), эти нулевые уставки не вводятся в регулятор и не записываются в EEPROM. -// сторожевой таймер, истекает через 100мс +//10. Значения уставок EEPROM2 выводяться в pc.print в специальной строке с текущими данными диагностики. +//9. Сделан дополнительный блок в парсере для декодирования приходящих аварийных уставок, они пишутся в EEPROM2. +//8. Сделан timer_2 для отсчёта времени открытого состояния вентиля 1. +// Сделан timer_3 для отсчёта времени открытого состояния вентиля 2. +//7. Подключены цифровые входы D11,D12,D13. Реализованы условия остановки по 10 аварийным событиям. +//6. Реализован сброс события (event_N = 255) через кнопку Стоп в программе оператора . +//5. Принимается флаг от кнопки Стоп - полной остановки регулятора - закрытие всех 4-х клапанов и передача статуса кнопки в программу оператора. +// Принимается флаг от кнопок включения - выключения компрессора, - идет команда на дискретный выход digital_6(PB_10) +//4. Принимается новая уставка num_chan - переключение номера активного измерительного канала для обратной связи регулятора. +// эта уставка, как и все остальные, пишется в EEPROM. +//3. Включены все шесть аналоговых входа, читаются пять. +//2. При получении командной строки с нулевой суммой, по новому флагу flag_zerostart, передаётся в сериал текущие уставки и величины +// (важно для старта программы на PC), эти нулевые уставки не вводятся в регулятор и не записываются в EEPROM. +//1. Сторожевой таймер, истекает через 100мс. // #include "mbed.h" @@ -77,7 +78,7 @@ int numSet, anySet; //================================= int value_auto=250 ; //set begin value auto "pressure" -int WL = 0; //напряжение с аналогового входа А0 (WL - вес опресовщика) +int WL = 0; // WL - вес опресовщика int sensor_value =0; //напряжение с аналогового входа А1 (Pa - текущее давление) int Pb = 0; //напряжение с аналогового входа А2 (Pb - давление в баллоне) int Pw1 = 0; //напряжение с аналогового входа А3 (Pw1 - давление воды на входе опрессовщика) @@ -475,7 +476,7 @@ 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 + char cmd[2]; //массив с весом, принятым от slave //i2c.read( addr8bit, cmd, 1); //читаем вес по шине i2c из slave Arduino_Nano //pc.printf("cmd[0] = %x\n", cmd[0]); @@ -649,9 +650,9 @@ frequencyValve1 = countValve1; //частота (Гц) срабатывания клапана 1 frequencyValve2 = countValve2; //частота (Гц) срабатывания клапана 2 countValve1=0; - countValve2=0; - i2c.read( addr8bit, cmd, 1); //читаем вес по шине i2c из slave Arduino_Nano - WL=cmd[0]; + countValve2=0; + i2c.read( addr8bit, cmd, 2); //читаем вес в байтах по шине i2c из slave Arduino_Nano + WL = (cmd[0]<<8)|cmd[1]; //преобразовываем байты побитовым сдвигом влево и сложением в десятичное число Ньютонов //plotter.printf("cmd[0] = %x\n", cmd[0]); } //--------------------==_ALARM_scope_Begin==----------------------