diff options
author | Olivier Gayot <duskcoder@gmail.com> | 2016-04-09 10:56:10 +0200 |
---|---|---|
committer | Olivier Gayot <duskcoder@gmail.com> | 2016-04-09 10:56:10 +0200 |
commit | e75fb7c47b640ea329984d95fc9f4b2d7cd3efe4 (patch) | |
tree | 934466a0df6bd76828ede2ccd8e4115657409723 /sketch_apr09a | |
parent | 9aae804a259aca17e7ca48b2dd18e12dde2c21fd (diff) |
because arduino is sooooooo frustrating
Signed-off-by: Olivier Gayot <duskcoder@gmail.com>
Diffstat (limited to 'sketch_apr09a')
-rw-r--r-- | sketch_apr09a/Belt.h | 39 | ||||
-rw-r--r-- | sketch_apr09a/logs.cpp | 61 | ||||
-rw-r--r-- | sketch_apr09a/logs.h | 37 | ||||
-rw-r--r-- | sketch_apr09a/sketch_apr09a.ino | 64 |
4 files changed, 201 insertions, 0 deletions
diff --git a/sketch_apr09a/Belt.h b/sketch_apr09a/Belt.h new file mode 100644 index 0000000..8a5cf6d --- /dev/null +++ b/sketch_apr09a/Belt.h @@ -0,0 +1,39 @@ +#ifndef _BELT_H +#define _BELT_H + +class Belt { +public: + Belt(); + + void read_pressure_top(); + void read_pressure_bottom(); + void read_flexion(); + void read_angle_x(); + void read_angle_y(); + void read_angle_z(); + + int get_pressure_top() const { return _pressure_top; }; + int get_pressure_bottom() const { return _pressure_bottom; }; + int get_flexion() const { return _flexion; }; + int get_angle_x() const { return _angle_x; }; + int get_angle_y() const { return _angle_y; }; + int get_angle_z() const { return _angle_z; }; + +protected: + int _pressure_bottom; + int _pressure_top; + int _flexion; + int _angle_x; + int _angle_y; + int _angle_z; + +private: + int _pin_pressure_top; + int _pin_pressure_bottom; + int _pin_flexion; + int _pin_gyro_x; + int _pin_gyro_y; + int _pin_gyro_z; +}; + +#endif /* ! _BELT_H */ diff --git a/sketch_apr09a/logs.cpp b/sketch_apr09a/logs.cpp new file mode 100644 index 0000000..901fd25 --- /dev/null +++ b/sketch_apr09a/logs.cpp @@ -0,0 +1,61 @@ +#include <stdio.h> +#include <Arduino.h> + +int serial_write(uint8_t val) +{ + Serial.write(&val, 1); +} + +int serial_put_string(const char *str) +{ + while (*str) { + serial_write(*str++); + } + + return 0; +} + +int serial_puts(const char *str) +{ + serial_put_string(str); + + serial_write('\n'); + + return 0; +} + +int serial_printf(const char *fmt, ...) +{ + va_list ap; + + static char buf[256]; + + va_start(ap, fmt); + + vsnprintf(buf, sizeof(buf), fmt, ap); + + serial_put_string(buf); + + va_end(ap); + + return 0; +} + +#if 0 +int serial_print_dec(uint8_t opcode, int32_t integer) +{ + Serial.write(&opcode, 1); + Serial.println(integer, DEC); + return 0; +} + +int serial_print_hex(uint8_t opcode, int32_t integer) +{ + Serial.write(&opcode, 1); + Serial.println(integer, HEX); + return 0; +} +#endif + + + diff --git a/sketch_apr09a/logs.h b/sketch_apr09a/logs.h new file mode 100644 index 0000000..4124d03 --- /dev/null +++ b/sketch_apr09a/logs.h @@ -0,0 +1,37 @@ +#ifndef LOGS_H +#define LOGS_H + +#include <stdarg.h> + +#if 0 +enum { + OPCODE_LOGS = 0x89, + OPCODE_OK = 0x70, + OPCODE_ERR = 0x70, +}; + +#define serial_log serial_log_puts + +#define serial_log_puts(_str) serial_puts(OPCODE_LOGS, _str); +#define serial_log_print_dec(_int) serial_print_dec(OPCODE_LOGS, _int) +#define serial_log_print_hex(_int) serial_print_dec(OPCODE_LOGS, _int) + +#define serial_ok(_str) serial_puts(OPCODE_OK, _str); +#define serial_err(_str) serial_puts(OPCODE_ERR, _str); + +#endif + +int serial_puts(const char *str); +int serial_put_string(const char *str); +int serial_write(uint8_t value); +int serial_printf(const char *str, ...); + +#if 0 +int serial_print_dec(uint8_t opcode, int32_t integer); +int serial_print_hex(uint8_t opcode, int32_t integer); +#endif + +#endif + + + diff --git a/sketch_apr09a/sketch_apr09a.ino b/sketch_apr09a/sketch_apr09a.ino new file mode 100644 index 0000000..af05cef --- /dev/null +++ b/sketch_apr09a/sketch_apr09a.ino @@ -0,0 +1,64 @@ +#include "Belt.h" +#include "logs.h" + +Belt::Belt() +{ + _pin_pressure_bottom = 0; + _pin_pressure_top = 1; + _pin_flexion = 2; + _pin_gyro_x = 3; + _pin_gyro_y = 4; + _pin_gyro_z = 5; +} + +void Belt::read_pressure_top() +{ + _pressure_top = analogRead(_pin_pressure_top); +} +void Belt::read_pressure_bottom() +{ + _pressure_bottom = analogRead(_pin_pressure_bottom); +} +void Belt::read_flexion() +{ + _flexion = analogRead(_pin_flexion); +} +void Belt::read_angle_x() +{ + _angle_x = analogRead(_pin_gyro_x); +} +void Belt::read_angle_y() +{ + _angle_y = analogRead(_pin_gyro_y); +} +void Belt::read_angle_z() +{ + _angle_z = analogRead(_pin_gyro_z); +} + +static Belt belt; + +void setup() +{ + Serial.begin(9600); +} + +void loop() +{ + delay(500); + + /* fetch the values from the sensors */ + belt.read_pressure_bottom(); + belt.read_pressure_top(); + belt.read_flexion(); + belt.read_angle_x(); + belt.read_angle_y(); + belt.read_angle_z(); + + serial_printf("PRESSURE_BOTTOM: bottom:%d\n", belt.get_pressure_bottom()); + serial_printf("PRESSURE_TOP:%d\n", belt.get_pressure_top()); + serial_printf("FLEXION:%d\n", belt.get_flexion()); + serial_printf("ANGLE_X:%d\n", belt.get_angle_x()); + serial_printf("ANGLE_Y:%d\n", belt.get_angle_y()); + serial_printf("ANGLE_Z:%d\n", belt.get_angle_z()); +} |