ambovent-1690-108 / ambovent Goto Github PK
View Code? Open in Web Editor NEWAmboVent 1690.108
License: The Unlicense
AmboVent 1690.108
License: The Unlicense
Using for example Arduino CLI, it's possible to validate code compilation online without having the actual board.
See also:
https://codeblog.dotsandbrackets.com/gitlab-ci-esp32-arduino/
Please, find attached a list of the materials I couldn't find around.
Ambovent BOM (parts list)_check 3 sheets.xlsx
Could you please notify the Covid-19 3D printing group where we could find the model file(s) of the 3D printed parts for your design? Thanks much!
the Discord room
https://discord.gg/GCTW4G
I just built the latest (from my PR #20), and there are dozens of warnings to fix.
/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/arduino-builder -dump-prefs -logger=machine -hardware /home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware -hardware /home/alexa/.arduino15/packages -tools /home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/tools-builder -tools /home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr -tools /home/alexa/.arduino15/packages -built-in-libraries /home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/libraries -libraries /home/alexa/Arduino/libraries -fqbn=arduino:avr:nano:cpu=atmega328 -ide-version=10808 -build-path /tmp/arduino_build_472179 -warnings=all -build-cache /tmp/arduino_cache_729925 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr -prefs=runtime.tools.avr-gcc-5.4.0-atmel3.6.1-arduino2.path=/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr -prefs=runtime.tools.arduinoOTA.path=/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr -prefs=runtime.tools.arduinoOTA-1.2.1.path=/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr -prefs=runtime.tools.avrdude.path=/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr -prefs=runtime.tools.avrdude-6.3.0-arduino14.path=/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr -verbose /home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino
/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/arduino-builder -compile -logger=machine -hardware /home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware -hardware /home/alexa/.arduino15/packages -tools /home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/tools-builder -tools /home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr -tools /home/alexa/.arduino15/packages -built-in-libraries /home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/libraries -libraries /home/alexa/Arduino/libraries -fqbn=arduino:avr:nano:cpu=atmega328 -ide-version=10808 -build-path /tmp/arduino_build_472179 -warnings=all -build-cache /tmp/arduino_cache_729925 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr -prefs=runtime.tools.avr-gcc-5.4.0-atmel3.6.1-arduino2.path=/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr -prefs=runtime.tools.arduinoOTA.path=/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr -prefs=runtime.tools.arduinoOTA-1.2.1.path=/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr -prefs=runtime.tools.avrdude.path=/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr -prefs=runtime.tools.avrdude-6.3.0-arduino14.path=/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr -verbose /home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino
Using board 'nano' from platform in folder: /home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr
Using core 'arduino' from platform in folder: /home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr
Detecting libraries used...
/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10808 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/cores/arduino -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/variants/eightanaloginputs /tmp/arduino_build_472179/sketch/ventilation_machine.ino.cpp -o /dev/null
/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10808 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/cores/arduino -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/variants/eightanaloginputs -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/libraries/EEPROM/src /tmp/arduino_build_472179/sketch/ventilation_machine.ino.cpp -o /dev/null
/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10808 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/cores/arduino -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/variants/eightanaloginputs -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/libraries/EEPROM/src -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/libraries/Servo/src /tmp/arduino_build_472179/sketch/ventilation_machine.ino.cpp -o /dev/null
/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10808 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/cores/arduino -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/variants/eightanaloginputs -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/libraries/EEPROM/src -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/libraries/Servo/src -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/libraries/Wire/src /tmp/arduino_build_472179/sketch/ventilation_machine.ino.cpp -o /dev/null
/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10808 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/cores/arduino -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/variants/eightanaloginputs -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/libraries/EEPROM/src -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/libraries/Servo/src -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/libraries/Wire/src -I/home/alexa/Arduino/libraries/SparkFun_MS5803-14BA_Breakout_Arduino_Library-master/src /tmp/arduino_build_472179/sketch/ventilation_machine.ino.cpp -o /dev/null
/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10808 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/cores/arduino -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/variants/eightanaloginputs -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/libraries/EEPROM/src -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/libraries/Servo/src -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/libraries/Wire/src -I/home/alexa/Arduino/libraries/SparkFun_MS5803-14BA_Breakout_Arduino_Library-master/src -I/home/alexa/Arduino/libraries/Arduino-LiquidCrystal-I2C-library-master /tmp/arduino_build_472179/sketch/ventilation_machine.ino.cpp -o /dev/null
/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10808 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/cores/arduino -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/variants/eightanaloginputs -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/libraries/EEPROM/src -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/libraries/Servo/src -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/libraries/Wire/src -I/home/alexa/Arduino/libraries/SparkFun_MS5803-14BA_Breakout_Arduino_Library-master/src -I/home/alexa/Arduino/libraries/Arduino-LiquidCrystal-I2C-library-master -I/home/alexa/Arduino/libraries/ArduinoUniqueID /tmp/arduino_build_472179/sketch/ventilation_machine.ino.cpp -o /dev/null
Using cached library dependencies for file: /home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/libraries/Servo/src/avr/Servo.cpp
Using cached library dependencies for file: /home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/libraries/Servo/src/megaavr/Servo.cpp
Using cached library dependencies for file: /home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/libraries/Servo/src/nrf52/Servo.cpp
Using cached library dependencies for file: /home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/libraries/Servo/src/sam/Servo.cpp
Using cached library dependencies for file: /home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/libraries/Servo/src/samd/Servo.cpp
Using cached library dependencies for file: /home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/libraries/Servo/src/stm32f4/Servo.cpp
Using cached library dependencies for file: /home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/libraries/Wire/src/Wire.cpp
Using cached library dependencies for file: /home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/libraries/Wire/src/utility/twi.c
Using cached library dependencies for file: /home/alexa/Arduino/libraries/SparkFun_MS5803-14BA_Breakout_Arduino_Library-master/src/SparkFun_MS5803_I2C.cpp
Using cached library dependencies for file: /home/alexa/Arduino/libraries/Arduino-LiquidCrystal-I2C-library-master/LiquidCrystal_I2C.cpp
Using cached library dependencies for file: /home/alexa/Arduino/libraries/ArduinoUniqueID/ArduinoUniqueID.cpp
Generating function prototypes...
/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10808 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/cores/arduino -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/variants/eightanaloginputs -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/libraries/EEPROM/src -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/libraries/Servo/src -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/libraries/Wire/src -I/home/alexa/Arduino/libraries/SparkFun_MS5803-14BA_Breakout_Arduino_Library-master/src -I/home/alexa/Arduino/libraries/Arduino-LiquidCrystal-I2C-library-master -I/home/alexa/Arduino/libraries/ArduinoUniqueID /tmp/arduino_build_472179/sketch/ventilation_machine.ino.cpp -o /tmp/arduino_build_472179/preproc/ctags_target_for_gcc_minus_e.cpp
/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/tools-builder/ctags/5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives /tmp/arduino_build_472179/preproc/ctags_target_for_gcc_minus_e.cpp
Compiling sketch...
/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr/bin/avr-g++ -c -g -Os -Wall -Wextra -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10808 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/cores/arduino -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/variants/eightanaloginputs -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/libraries/EEPROM/src -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/libraries/Servo/src -I/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/libraries/Wire/src -I/home/alexa/Arduino/libraries/SparkFun_MS5803-14BA_Breakout_Arduino_Library-master/src -I/home/alexa/Arduino/libraries/Arduino-LiquidCrystal-I2C-library-master -I/home/alexa/Arduino/libraries/ArduinoUniqueID /tmp/arduino_build_472179/sketch/ventilation_machine.ino.cpp -o /tmp/arduino_build_472179/sketch/ventilation_machine.ino.cpp.o
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino: In function 'void setup()':
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:200:18: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
if (min_arm_pos>=0 && min_arm_pos<1024 && max_arm_pos>=0 && max_arm_pos<1024) calibrated = 1;
^
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:200:56: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
if (min_arm_pos>=0 && min_arm_pos<1024 && max_arm_pos>=0 && max_arm_pos<1024) calibrated = 1;
^
In file included from /tmp/arduino_build_472179/sketch/ventilation_machine.ino.cpp:1:0:
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino: In function 'void display_menu()':
/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/cores/arduino/Arduino.h:95:39: warning: comparison is always false due to limited range of data type [-Wtype-limits]
#define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt)))
^
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:253:14: note: in expansion of macro 'constrain'
menu_state=constrain(menu_state,0,8);
^
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:258:60: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
display_text_2_lines("Calibrate Pots","TEST to start");
^
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:258:60: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:267:60: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
display_text_2_lines("Calib pressure","TEST to start");
^
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:267:60: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:278:64: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
display_text_2_lines("Press TEST to","run one breath ");
^
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:278:64: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:293:59: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
display_text_2_lines("Calibrate Arm","TEST to start");
^
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:293:59: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:302:62: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
display_text_2_lines("Set Motion Time","TEST to start ");
^
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:302:62: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:328:85: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
if (patient_triggered_breath==1) display_text_2_lines("Sync to patient","ON ");
^
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:328:85: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:329:86: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
if (patient_triggered_breath==0) display_text_2_lines("Sync to patient","OFF ");
^
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:329:86: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:334:87: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
if (patient_triggered_breath==1) display_text_2_lines("Sync to patient","ON ");
^
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:334:87: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:335:88: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
if (patient_triggered_breath==0) display_text_2_lines("Sync to patient","OFF ");
^
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:335:88: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:342:53: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
display_text_2_lines("Exit Menu","Press TEST ");
^
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:342:53: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino: In function 'void run_profile_func()':
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:400:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (millis()-start_wait < breath_cycle_time)
^
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino: In function 'void calibrate_arm_range()':
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:623:34: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
display_text_calib ("Set Upper");
^
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:628:34: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
display_text_calib ("Set Lower");
^
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:633:37: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
display_text_calib ("Move to Safe");
^
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino: In function 'void calibrate_pot_range()':
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:656:40: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
display_text_calib ("Pot to left pos");
^
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:663:41: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
display_text_calib ("Pot to right pos");
^
Compiling libraries...
Compiling library "EEPROM"
Compiling library "Servo"
Using previously compiled file: /tmp/arduino_build_472179/libraries/Servo/avr/Servo.cpp.o
Using previously compiled file: /tmp/arduino_build_472179/libraries/Servo/megaavr/Servo.cpp.o
Using previously compiled file: /tmp/arduino_build_472179/libraries/Servo/nrf52/Servo.cpp.o
Using previously compiled file: /tmp/arduino_build_472179/libraries/Servo/sam/Servo.cpp.o
Using previously compiled file: /tmp/arduino_build_472179/libraries/Servo/samd/Servo.cpp.o
Using previously compiled file: /tmp/arduino_build_472179/libraries/Servo/stm32f4/Servo.cpp.o
Compiling library "Wire"
Using previously compiled file: /tmp/arduino_build_472179/libraries/Wire/Wire.cpp.o
Using previously compiled file: /tmp/arduino_build_472179/libraries/Wire/utility/twi.c.o
Compiling library "SparkFun_MS5803-14BA_Breakout_Arduino_Library-master"
Using previously compiled file: /tmp/arduino_build_472179/libraries/SparkFun_MS5803-14BA_Breakout_Arduino_Library-master/SparkFun_MS5803_I2C.cpp.o
Compiling library "Arduino-LiquidCrystal-I2C-library-master"
Using previously compiled file: /tmp/arduino_build_472179/libraries/Arduino-LiquidCrystal-I2C-library-master/LiquidCrystal_I2C.cpp.o
Compiling library "ArduinoUniqueID"
Using previously compiled file: /tmp/arduino_build_472179/libraries/ArduinoUniqueID/ArduinoUniqueID.cpp.o
Compiling core...
Using precompiled core: /tmp/arduino_cache_729925/core/core_arduino_avr_nano_cpu_atmega328_9d1e8b75e2862a0ea003e5fe909dcaaa.a
Linking everything together...
/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr/bin/avr-gcc -Wall -Wextra -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o /tmp/arduino_build_472179/ventilation_machine.ino.elf /tmp/arduino_build_472179/sketch/ventilation_machine.ino.cpp.o /tmp/arduino_build_472179/libraries/Servo/avr/Servo.cpp.o /tmp/arduino_build_472179/libraries/Servo/megaavr/Servo.cpp.o /tmp/arduino_build_472179/libraries/Servo/nrf52/Servo.cpp.o /tmp/arduino_build_472179/libraries/Servo/sam/Servo.cpp.o /tmp/arduino_build_472179/libraries/Servo/samd/Servo.cpp.o /tmp/arduino_build_472179/libraries/Servo/stm32f4/Servo.cpp.o /tmp/arduino_build_472179/libraries/Wire/Wire.cpp.o /tmp/arduino_build_472179/libraries/Wire/utility/twi.c.o /tmp/arduino_build_472179/libraries/SparkFun_MS5803-14BA_Breakout_Arduino_Library-master/SparkFun_MS5803_I2C.cpp.o /tmp/arduino_build_472179/libraries/Arduino-LiquidCrystal-I2C-library-master/LiquidCrystal_I2C.cpp.o /tmp/arduino_build_472179/libraries/ArduinoUniqueID/ArduinoUniqueID.cpp.o /tmp/arduino_build_472179/../arduino_cache_729925/core/core_arduino_avr_nano_cpu_atmega328_9d1e8b75e2862a0ea003e5fe909dcaaa.a -L/tmp/arduino_build_472179 -lm
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino: In function 'set_motor_PWM':
/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr/bin/avr-objcopy -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 /tmp/arduino_build_472179/ventilation_machine.ino.elf /tmp/arduino_build_472179/ventilation_machine.ino.eep/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:720:58: warning: 'wanted_cal_PWM' may be used uninitialized in this function [-Wmaybe-uninitialized]
if (calibON==1 ) wanted_vel_PWM=read_motion_for_calib(); // allows manual motion during calibration
^
/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/ventilation_machine/ventilation_machine.ino:737:7: note: 'wanted_cal_PWM' was declared here
{ int wanted_cal_PWM;
^
/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr/bin/avr-objcopy -O ihex -R .eeprom /tmp/arduino_build_472179/ventilation_machine.ino.elf /tmp/arduino_build_472179/ventilation_machine.ino.hex
Using library EEPROM at version 2.0 in folder: /home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/libraries/EEPROM
Using library Servo at version 1.1.3 in folder: /home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/libraries/Servo
Using library Wire at version 1.0 in folder: /home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/arduino/avr/libraries/Wire
Using library SparkFun_MS5803-14BA_Breakout_Arduino_Library-master at version 1.1.2 in folder: /home/alexa/Arduino/libraries/SparkFun_MS5803-14BA_Breakout_Arduino_Library-master
Using library Arduino-LiquidCrystal-I2C-library-master in folder: /home/alexa/Arduino/libraries/Arduino-LiquidCrystal-I2C-library-master (legacy)
Using library ArduinoUniqueID in folder: /home/alexa/Arduino/libraries/ArduinoUniqueID (legacy)
/home/alexa/Downloads/Install_files/Arduino/arduino-1.8.8/hardware/tools/avr/bin/avr-size -A /tmp/arduino_build_472179/ventilation_machine.ino.elf
Sketch uses 18412 bytes (59%) of program storage space. Maximum is 30720 bytes.
Global variables use 1046 bytes (51%) of dynamic memory, leaving 1002 bytes for local variables. Maximum is 2048 bytes.
Hi @nimrod46, I notice you seem to be giving me the go-ahead/approval to work on issue #21, yet you've closed it. In normal workflows issues are only closed if they are either 1) fully implemented and complete, or 2) rejected and never going to be fixed. Since I haven't implemented #21, that means you are rejecting it, but I don't think that's your intention. If that's not your intention, please open it until it's fully implemented. What you can do, however, is add a label which says "in-work" or whatever the best label is, and assign it to me if you make me a collaborator.
The same goes for #22. You've closed it, yet it is not implemented, and you seem to not be intending to reject it based on your words there.
Same with #19. You've closed it yet the Low memory problem isn't fully fixed, and I think it still could be fully fixed (although @giorakor did make it much better and partially fix it I'd still leave it open).
Also #11 still has a lot of work left to be done so I recommend leaving it open for me to work on.
I suspect this is the case with most other closed issues as well, so keep in mind if you close them it communicates to others they are either fixed, or rejected because they're never going to be fixed.
Thanks!
This issue, for instance: if you close it without further comment, it either communicates: 1) "I, @nimrod46, don't agree with you and I'm not going to make the changes you're requesting", or 2) "I just did everything you recommended and it is now totally fixed": ie: "I've re-opened all of those issues."
Code Safety: add clang-tidy static code analyzer.
Add clang-format first, per #21.
Add a pull request template in .github/pull_request_template.md. See here: https://help.github.com/en/github/building-a-strong-community/creating-a-pull-request-template-for-your-repository
Tell the user to run ./run_clang-format.sh
before submitting a PR, and have them check the box:
[x] I have run the auto-formatter: `./run_clang-format.sh`
Note that markdown comments in the template can be added with:
<!---comment--->
I was just skimming your Arduino source code here, for instance: https://github.com/AmboVent/AmboVent/blob/master/.Software/Arduino%20Code/ventilation_machine/ventilation_machine.ino#L208
and I notice your formatting doesn't follow best practices to maximize for readability, maintainability, and safety. I recommend you change the code now and follow best practices as you write new code to minimize changes in the future. Here's a few examples:
if
statement or any type of loop.Instead of:
if (millis()-last_TST_not_pressed>3000) { LED_USR(1); while (TST==1 || TST_pressed) { read_IO(); } // wait for button release
state=2;}
Do:
if (millis() - last_TST_not_pressed > 3000)
{
LED_USR(1);
// wait for button release
while (TST == 1 || TST_pressed)
{
read_IO();
}
state = 2;
}
But instead of that, even better, replace numbers and do this. Notice there's not a single "magic number" anymore. Everything is now named.
#define DELAY_TIME_MS 3000
// This is just an example to make the point
enum states
{
/// Everything is OK
STATE_OK = 0,
/// Error exists and the system must turn itself off
STATE_ERROR,
/// Time to draw new air into the bladder
STATE_AIR_IN,
/// Number of elements in this enum (NOT ACTUALLY A STATE)
STATE_COUNT,
};
if (millis() - last_TST_not_pressed > DELAY_TIME_MS)
{
LED_USR(HIGH);
// wait for button release
while (TST == true || TST_pressed)
{
read_IO();
}
state = STATE_AIR_IN;
}
Instead of this:
case 4: // toggle sync to patient
if (patient_triggered_breath==1) display_text_2_lines("Sync to patient","ON ");
if (patient_triggered_breath==0) display_text_2_lines("Sync to patient","OFF ");
if (TST_pressed) {
patient_triggered_breath=1-patient_triggered_breath; delay(110);
if (patient_triggered_breath==1) display_text_2_lines("Sync to patient","ON ");
if (patient_triggered_breath==0) display_text_2_lines("Sync to patient","OFF ");
delay (1500);
exit_menu();
}
break;
Do this:
case TOGGLE_SYNC_TO_PATIENT:
if (patient_triggered_breath)
{
display_text_2_lines("Sync to patient","ON ");
}
else
{
display_text_2_lines("Sync to patient","OFF ");
}
if (TST_pressed)
{
patient_triggered_breath = 1 - patient_triggered_breath;
delay(110);
if (patient_triggered_breath)
{
display_text_2_lines("Sync to patient","ON ");
}
else
{
display_text_2_lines("Sync to patient","OFF ");
}
delay(1500);
exit_menu();
}
break;
Those are just a few of dozens and dozens of examples. This is really important to avoid safety pitfalls in the software, accidental mistakes and bugs. Additionally, it makes the code easier for outsiders to contribute and learn.
Note also that as you code and learn, many many many MANY things will be preferences, and there are multiple good ways to do things. However, many things have established "best practices" which avoid bad patterns and unsafe code. Frequently, multiple best practices exist. The things I point out above are best practices and produce safer code. Some of the formatting regarding putting the opening curly brace on a new line or on the same line, and how many spaces to use when indenting, are personal preferences but should be standardized in a code base. Whatever you do, please follow best practices.
I don't know your feelings about this but "Documentation" is the usual spelling.
Thank you so much for this effort and making it public.
Mark
When searching for resuscitation bags, 2 types turn up, PVC and Silicon.
Which type is the most suitable for this project?
Raising this as a documentation request for a compatible parts list. Probably need something by region.
Fantastic project everyone! Thank you.
I'm linking in as many people with this information
This line should be 1 - digitalRead(PIN_RST)
When I build the project for the Arduino Nano I see the following output in the Arduino IDE:
Sketch uses 18280 bytes (59%) of program storage space. Maximum is 30720 bytes.
Global variables use 1882 bytes (91%) of dynamic memory, leaving 166 bytes for local variables. Maximum is 2048 bytes.
Low memory available, stability problems may occur.
This is a problem, as it means the stack is nearly completely used up by global variables, so local variables in any scope or code section could potentially overflow the stack really easily. I think I can do some code cleanup to fix this, perhaps by moving strings to progmem with the F()
macro, or using other coding techniques. I'll have a look at the code.
Read more on the F()
macro here:
The bulk of this issue is resolved now that the two big lookup tables in the code are in progmem, but let's still not close this issue until at least all strings have been surrounded by the F() macro and all large const arrays or structs (if any) have been moved to progmem.
F()
macroHere is a 5*5 PCB using Sparkfun PCB it can be changed and rebranded as
long as we follow the
Released under the Creative Commons Attribution Share-Alike 4.0 License
it brings down the costfrom 50-60$ to about 13-15
$ .
AS well as remove pullups to 3.3v . as arduino nano is 5v logic
This is only cost saving I am not going to make and sell It saves 35$ off the BOM .
I can produce Gerbers and Pick & Place if Needed.
Note I am using JLCPCB with a low setup cost I am not using a Local Israeli company. If
we have a 500$ NPI the idea is useless. JLCPCB is Limited at 50 PCBS 1250 pcbs.
One can purchase the boards from Aliexpress for about 17-20$ but unknown quality and may
be fake.
https://jlcpcb.com/smt-assembly
Arie
Considering adding contributors credit, maybe using this bot?
This is a sub-issue of #11. Don't close #11 until all sub-issues are resolved.
I will help with this; just want to teach the principle too is all.
Instead of:
#define insp_pressure_default 40 // defualt value - hold this pressure while breathing - the value is changed if INSP_Pressure
// potentiometer is inatalled
Do:
/// Default value - hold this pressure while breathing - the value is changed if
/// INSP_Pressure potentiometer is installed
#define INSP_PRESSURE_DEFAULT 40
Notice I also add doxygen comments ///
, and change the constant to all caps. Limit your max column width, or "ruler" as it is frequently called, to 100 chars.
For those of us working at home with open source CAD software, the SLDPRT and SLDASM files are unusable.
Can you please export into some compatible format e.g. STEP.
This is a sub-issue of #11. Don't close #11 until all sub-issues are resolved.
I will help with this; just want to teach the principle too is all.
Also, I recommend the industry-standard uint8_t
over the Arduino byte
type. Byte is an alias to it anyway: "/home/alexa/dev/AmboVent/AmboVent/3-Software/Arduino/arduino_core/arduino/hardware/arduino/avr/cores/arduino/Arduino.h": line 126:
typedef uint8_t byte;
In Eclipse, I just Ctrl + Click on any byte
in the arduino source code and it jumps to its definition.
Instead of:
byte monitor_index = 0, BPM = 14, prev_BPM, in_wait, failure, send_beep, wanted_cycle_time,
disconnected = 0, high_pressure_detected = 0, motion_failure = 0, sent_LCD, hold_breath,
safety_pressure_detected;
Do:
uint8_t monitor_index = 0;
uint8_t BPM = 14;
uint8_t prev_BPM;
uint8_t in_wait;
uint8_t failure;
uint8_t send_beep;
uint8_t wanted_cycle_time;
uint8_t disconnected = 0;
uint8_t high_pressure_detected = 0;
uint8_t motion_failure = 0;
uint8_t sent_LCD;
uint8_t hold_breath;
uint8_t safety_pressure_detected;
This is a sub-issue of #11. Don't close #11 until all sub-issues are resolved.
I will help with this. Just want to teach the principle too is all since you'll write code faster than I can reformat it :).
Instead of:
int some_var;
Do:
int some_var_mm; // millimeters
int some_var_m; // meters
int some_var_mps; // meters per second
int some_var_n; // newtons
int some_var_psi; // PSI
int some_var_kpa; // KPa
int some_var_ms; // milliseconds
// etc etc
It appears to me that there is a plausible scenario in which there will be a divide by zero in calc_failure(), leading to unexpected results or a crash. During calibrate_arm_range(), if a user is is distracted and pushes the test button twice without moving the arm, max_arm_pos can be set to the same value as min_arm_pos. I suggest more checks before the calibrated variable is set to true.
The isense pin in schematic is not connected, in BOM there is a shunt and an opamp.
Hi, This is not an issue.
Do we have any step by step by build guide for the AmboVent? I found the AmboVent System Detailed Description - English 2.4.2020.pdf , but it doesn't include basic things like instructions for the assembly..etc.
Thanks.
This is a sub-issue of #11. Don't close #11 until all sub-issues are resolved.
I will help with this. Just want to teach the principle too is all since you'll write code faster than I can reformat it :).
To make the code cross-platform and clear, each type should have an explicit size. unsigned int
on an ATMega328 is 2 bytes, but on an STM32 it is 4 bytes. uint16_t
, however, is always 2 bytes on any platform, period. People may want to move your code to a new platform in the future. This will make the process much better.
Here are the standard types: http://www.cplusplus.com/reference/cstdint/
unsigned int
--> uint16_t
unsigned long
--> uint32_t
int
--> int16_t
long
--> int32_t
etc.
nit-picks:
also
byte
--> uint8_t
boolean
--> bool
We need to define first what every significant value name should be.
Breathing cycle
", I don't like this name as someone reading the code could be confused with the other meaning of the word breath. So I suggest respiration_cycle
.loop cycle
" using cycle again does not seem right as someone who is less familiar with this software or in general with how code works will most likely think it's about the respiration cycle (it can be confusing for everyone actually as point 1 and 2 have quite a lot of variables, confused me too).update
, update_time
, update_lost
, time_since_last_update
, etc' just not mentioning the word cycle.index
", used to describe the current step in the "motion profile" profile, so I suggest using respiration_step
, maybe respiration_step_index
because it's used as an index after all.@ElectricRCAircraftGuy tell me what you think on those points, there are more general variables to add here as well I guess.
The line gave a compile time error while porting code to esp32.
int motorPWM,index=0, prev_index,i, wait_cycles,cycle_number, cycles_lost,index_last_motion;
Variable name index =0
Error
char *to int conversation fail
all index
had to be renamed.
to something like index_somename
In the ".Software/Breath Profiles Generator" there are desktop.ini-files commited.
I volunteer.
I'll model it after this one: https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF#changelog.
Feel free to give me push access if you like since I'm opening up a lot of PRs and issues.
Here is a new option for a PCB
https://github.com/Arie001/ambovent_pcb_Rev_Arie/tree/master/respirator-control_rev2
Please review Kicad I have checked it in Fusion 360 .
I did not Find good cheap switches that fit the small holes.
Only one three extra Parts for 12v .
DRC was run at 0.5mm . Fails RGB Led the footprint and Sw1 is near the corner screw
Note The Arduino and the Module I2C was not put on the PCB as I want to keep it simple no smd soldering.
I think it is a Major step up.
I can have a board ready in a few hours I am in Modiin .
The Board is supported 3 corners the bottom right is not supported No hole Below the the Hole
for the sensor.
I have exported the Step Not the Height of the Lcd may not be correct .
I use dry Film Etch
054-6597555
I have a colleague who has solidworks 2019 installed but can't open the files due to a 'future version' error. This seems to be a common issue requiring one to use a later solid works. Is it possible to use an earlier version to save the file or use a vendor neutral file format?
Email from the said person in verbatim
Thanks for the links to the CAD files for the trial project. I hope we can collaborate so we can try out any other designs for equipment that will alleviate the current medical equipment availability.
I was able to access the zip file containing the Solidworks files. However, they are tagged as 'future version' meaning I can't open the attachments with my current Solidworks 2019.
Thanks
This is a sub-issue of #11. Don't close #11 until all sub-issues are resolved.
Use enums wherever they make sense instead of constants or #defines. Also, namespace them by putting their categorical name before their specific name, separated by an underscore.
Instead of:
enum main_states : byte
{
STBY_STATE,
BREATH_STATE,
MENU_STATE
};
Do:
Use 3 slashes /// to signify "doxygen" style comments above members (good practice even if you don't generate doxygen). See more examples in my file here: https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/blob/master/git%20%26%20Linux%20cmds%2C%20help%2C%20tips%20%26%20tricks%20-%20Gabriel.txt
enum main_state : byte
{
// Use explicit name, and explicitly set 1st element to 0
/// some useful description
MAIN_STATE_STANDBY = 0,
/// some useful description
MAIN_STATE_BREATH,
/// some useful description
MAIN_STATE_MENU,
/// Not a state! Use this if you need the total number of enums in this type
MAIN_STATE_COUNT, // trailing comma on last elment is just fine
};
See here: https://help.github.com/en/actions.
Related: (#25 could be considered a sub-issue of this issue)
Hello folks,
First and foremost - THANK YOU!!
As this repository is open source, it will be amazing to encourage the open source community to get involved in the work being done.
A good way to get help is to create issues stating what help is needed. To each such issue, you can add the help-wanted
label.
There are many who would like to help! Help us help you!
Thank you again. This project is TRULLY a life saver.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.