This commit is contained in:
Max 2021-04-10 10:13:52 +01:00
parent b9ad917346
commit 4dd88b17f8
2 changed files with 49 additions and 24 deletions

View File

@ -20,7 +20,7 @@ class ViewController: UIViewController {
@IBOutlet weak var pillsAttached: UILabel! @IBOutlet weak var pillsAttached: UILabel!
@IBOutlet weak var refreshToggle: UISwitch! @IBOutlet weak var refreshToggle: UISwitch!
let totalPills: Int = 6 let totalPills: Int = 16
var usedPills: Int = 0 var usedPills: Int = 0
var remainingPills: Int = 0 var remainingPills: Int = 0
let updateFreq: Float = 2.0 let updateFreq: Float = 2.0
@ -109,7 +109,7 @@ extension ViewController: SimpleBluetoothIODelegate {
self.cStatus.text = "Connected!" self.cStatus.text = "Connected!"
self.cStatus.textColor = UIColor.green self.cStatus.textColor = UIColor.green
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
print("Sending update commend") print("Sending update command")
self.sendUpdateCommand() self.sendUpdateCommand()
} }
} }

View File

@ -36,6 +36,8 @@
// int deviceConnected = false; // int deviceConnected = false;
bool waiting_for_update = false; bool waiting_for_update = false;
bool pills_plugged_in = false; bool pills_plugged_in = false;
int debug_btn_previous_value = 0;
class MyCallbacks:public BLECharacteristicCallbacks { class MyCallbacks:public BLECharacteristicCallbacks {
void onConnect(BLEServer * pServer) { void onConnect(BLEServer * pServer) {
@ -84,7 +86,7 @@ void setup() {
pinMode(MUX_BIT_1, OUTPUT); pinMode(MUX_BIT_1, OUTPUT);
pinMode(MUX_BIT_2, OUTPUT); pinMode(MUX_BIT_2, OUTPUT);
pinMode(MUX_BIT_3, OUTPUT); pinMode(MUX_BIT_3, OUTPUT);
pinMode(MUX_COM, INPUT); pinMode(MUX_COM, INPUT_PULLUP);
pinMode(RAIL_EVEN, OUTPUT); pinMode(RAIL_EVEN, OUTPUT);
pinMode(RAIL_ODD, OUTPUT); pinMode(RAIL_ODD, OUTPUT);
@ -102,8 +104,6 @@ void setup() {
digitalWrite(MUX_BIT_2, LOW); digitalWrite(MUX_BIT_2, LOW);
digitalWrite(MUX_BIT_3, LOW); digitalWrite(MUX_BIT_3, LOW);
int debug_btn_previous_value = 0;
BLEDevice::init("PILL_TRACKER"); BLEDevice::init("PILL_TRACKER");
BLEServer * pServer = BLEDevice::createServer(); BLEServer * pServer = BLEDevice::createServer();
BLEService * pService = pServer -> createService(SERVICE_UUID); BLEService * pService = pServer -> createService(SERVICE_UUID);
@ -128,10 +128,10 @@ bool seekValueFromMatrix(int column_id, int row_id) {
int rail_to_GND = 0; int rail_to_GND = 0;
int rail_to_INPUT = 0; int rail_to_INPUT = 0;
int mux_bit_0 = 0; // int mux_bit_0 = 0;
int mux_bit_1 = 0; // int mux_bit_1 = 0;
int mux_bit_2 = 0; // int mux_bit_2 = 0;
int mux_bit_3 = 0; // int mux_bit_3 = 0;
bool is_pill_present = false; bool is_pill_present = false;
if (column_id == 0) { if (column_id == 0) {
@ -142,22 +142,46 @@ bool seekValueFromMatrix(int column_id, int row_id) {
rail_to_INPUT = RAIL_EVEN; rail_to_INPUT = RAIL_EVEN;
} else { return -1;} } else { return -1;}
mux_bit_0 = row_id & 0b1000; // mux_bit_0 = row_id & 0b0001;
mux_bit_1 = row_id & 0b0100; // mux_bit_1 = row_id & 0b0010;
mux_bit_2 = row_id & 0b0010; // mux_bit_2 = row_id & 0b0100;
mux_bit_3 = row_id & 0b0001; // mux_bit_3 = row_id & 0b1000;
pinMode(rail_to_INPUT, INPUT); pinMode(rail_to_INPUT, INPUT_PULLUP);
digitalWrite(rail_to_GND, LOW); digitalWrite(rail_to_GND, LOW);
digitalWrite(MUX_BIT_0, row_id & 0b0001);
digitalWrite(MUX_BIT_1, row_id & 0b0010);
digitalWrite(MUX_BIT_2, row_id & 0b0100);
digitalWrite(MUX_BIT_3, row_id & 0b1000);
// if (mux_bit_0 > 0) {
// digitalWrite(MUX_BIT_0, LOW);
// } else {
// digitalWrite(MUX_BIT_0, HIGH);
// }
// if (mux_bit_1 > 0) {
// digitalWrite(MUX_BIT_1, LOW);
// } else {
// digitalWrite(MUX_BIT_1, HIGH);
// }
// if (mux_bit_2 > 0) {
// digitalWrite(MUX_BIT_2, LOW);
// } else {
// digitalWrite(MUX_BIT_2, HIGH);
// }
// if (mux_bit_3 > 0) {
// digitalWrite(MUX_BIT_3, LOW);
// } else {
// digitalWrite(MUX_BIT_3, HIGH);
// }
digitalWrite(MUX_BIT_0, mux_bit_0);
digitalWrite(MUX_BIT_1, mux_bit_1);
digitalWrite(MUX_BIT_2, mux_bit_2);
digitalWrite(MUX_BIT_3, mux_bit_3);
delay(10); delay(10);
if (digitalRead(PILL_SENSE) == LOW){ if (digitalRead(PILL_SENSE) == LOW){
is_pill_present = true is_pill_present = true;
} }
Serial.println("########## COMPUTED BINARY ##########"); Serial.println("########## COMPUTED BINARY ##########");
@ -195,8 +219,8 @@ int getPillCount() {
for (int col = 0; col < 2; col++){ for (int col = 0; col < 2; col++){
for (int row = 0; row < 8; row++){ for (int row = 0; row < 8; row++){
bool is_pill_present = false bool is_pill_present = false;
is_pill_present = seekValueFromMatrix(col, row) is_pill_present = seekValueFromMatrix(col, row);
if (is_pill_present == true){ if (is_pill_present == true){
total_pill_count++; total_pill_count++;
} }
@ -204,7 +228,7 @@ int getPillCount() {
} }
} else { } else {
Serial.println("PROBE_DETACHED"); Serial.println("PROBE_DETACHED");
totalCount = 97; total_pill_count = 97;
} }
return total_pill_count; return total_pill_count;
} }
@ -224,7 +248,8 @@ void checkBatteryVoltage() {
printVoltage(); printVoltage();
if (voltage < 3.5) { if (voltage < 3.5) {
// Automatically notify the phone that battery is low // Automatically notify the phone that battery is low
pCharacteristic -> setValue((uint8_t *) & 96, 4); // NOTE: WTF does the 4 mean?!? int low_battery_warning_code = 96;
pCharacteristic -> setValue((uint8_t *) & low_battery_warning_code, 4); // NOTE: WTF does the 4 mean?!?
pCharacteristic -> notify(); pCharacteristic -> notify();
} }
} }
@ -238,7 +263,7 @@ void loop() {
// TODO: Make a proper voltage to ios bt interface? // TODO: Make a proper voltage to ios bt interface?
} }
int debug_btn_current_value = digitalRead(BTN_PIN); int debug_btn_current_value = digitalRead(TEST_BTN_PIN);
if (debug_btn_current_value != debug_btn_previous_value) { if (debug_btn_current_value != debug_btn_previous_value) {
debug_btn_previous_value = debug_btn_current_value; debug_btn_previous_value = debug_btn_current_value;
if (debug_btn_current_value == HIGH) { if (debug_btn_current_value == HIGH) {