Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: BLE_API nRF51822 mbed
Fork of KS7 by
Diff: main.cpp
- Revision:
- 16:fc66feb533d0
- Parent:
- 15:544e0ce3c1d9
- Child:
- 17:994c1f037198
--- a/main.cpp Thu Dec 17 04:12:30 2015 +0000
+++ b/main.cpp Thu Dec 17 23:48:23 2015 +0000
@@ -15,16 +15,13 @@
#define MANUFACTURER_NAME_STRING "Hacarus" // Manufacturer Name String - shall represent the name of the manufacturer of the device.
#define MODEL_NUMBER_STRING "0001" // Model Number String - shall represent the model number that is assigned by the device vendor.
#define SERIAL_NUMBER_STRING "000780c0ffeef00d" // Serial Number String - shall represent the serial number for a particular instance of the device.
-#define FIRMWARE_REVISION_STRING "v1.00.005@rev0015" // Firmware Revision String - shall represent the firmware revision for the firmware within the device.
+#define FIRMWARE_REVISION_STRING "v1.00.007@rev0016" // Firmware Revision String - shall represent the firmware revision for the firmware within the device.
// Weight Scale Service (Original)
#define UUID_WEIGHT_SCALE_SERVICE (0x181D)
+#define WEIGHT_COEFFICIENT (8.64)
-// JoyStick
-#define PUSH_MINTHRESHOLD (0.2)
-#define PUSH_MAXTHRESHOLD (0.6)
-#define PUSH_COUNT (3)
-
+// Switch
#define SW_THRESHOLD (0.5)
#define SW_SAMPLECOUNT (3)
@@ -35,19 +32,17 @@
#define MODE_END (3) // LED ON -> OFF
// Led
-#define LED_INTERVAL_NSEC (100000)
+#define LED_INTERVAL_MSEC (100)
#define BRIGHTNESS_ADDVALUE (0.1)
#define BRIGHTNESS_MINVALUE (0.0)
#define BRIGHTNESS_MAXVALUE (1.0)
// Properties
io io;
-Ticker tk;
uint32_t weight_data;
float32_t weight = 0.0;
uint32_t scale = 0;
int update_counter = 0;
-int push_counter = 0;
float sw_data[SW_SAMPLECOUNT];
uint8_t sw_count = 0;
int led_mode = MODE_OFF;
@@ -121,78 +116,25 @@
return ( ((uint32_t)exponent) << 24) | mantissa;
}
-void ticker_callback()
-{
+void SWInit(void){
+ // SW Initialize
+ for(int count = 0;count < SW_SAMPLECOUNT;count++){
+ sw_data[count] = 0;
+ }
+}
-// pc.printf("!!!\r\n");
+void AppInit(void){
+
+ SWInit();
+ io.analog_pow(1);
+
/*
- while(1){
- adc_dat[0] = 0x01; // config reg.
-// adc_dat[1] = 0xc4 | (ch << 4); // single conv. & FS=+-2.048V & conv.
- adc_dat[1] = 0xc4;
- adc_dat[2] = 0x83; // 8SPS & disable comp.
- pc.printf("adc_dat: %02x %02x\r\n", adc_dat[0], adc_dat[1]);
-// i2c.write(I2C_ADDR_ADS1115, adc_dat, 3);
- adc_dat[0] = 0x00;
-// i2c.write(I2C_ADDR_ADS1115, adc_dat, 1);
-// i2c.read(I2C_ADDR_ADS1115, adc_dat, 2);
- uint8_t dh, dl;
- dh = adc_dat[0];
- dl = adc_dat[1];
- pc.printf("%d %d\r\n", dh, dl);
-// pc.printf("ADC result=%02x %02x\r\n", dh, dl);
+ if(NRF_UICR->XTALFREQ == 0xFFFFFF00){
+ io.display_value = 3232;
+ }else if(NRF_UICR->XTALFREQ == 0xFFFFFFFF){
+ io.display_value = 1616;
}
*/
-
- switch(led_mode){
- case MODE_OFF:
- if(check_joystick()){
-// io.display_value = 0;
- led_mode = MODE_START;
- }
- break;
- case MODE_START:
- led_brightness += BRIGHTNESS_ADDVALUE;
- io.display(led_brightness);
- if(led_brightness >= BRIGHTNESS_MAXVALUE){
- update_counter = 0;
- led_mode = MODE_ON;
- ble.startAdvertising();
- }
- break;
- case MODE_ON:
- if(!check_joystick()){
- led_mode = MODE_END;
- if(ble.getGapState().connected){
- ble.disconnect(Gap::REMOTE_USER_TERMINATED_CONNECTION);
- }else{
- ble.stopAdvertising();
- }
- return;
- }
- //io.analog_pow(1); // turn analog power on
- //wait_ms(1);
- weight = io.get_weight() * 9999.0;
- io.display_value = (uint16_t)weight; // dummy display
- //io.analog_pow(0); // turn analog power off
-
- if(++update_counter >= 5){
- weight_data = quick_ieee11073_from_float(weight);
- ble.updateCharacteristicValue(WeightMeasurement.getValueAttribute().getHandle(),
- (uint8_t *)&weight_data,
- sizeof(weight_data));
- update_counter = 0;
- }
-
- break;
- case MODE_END:
- led_brightness -= BRIGHTNESS_ADDVALUE;
- io.display(led_brightness);
- if(led_brightness <= BRIGHTNESS_MINVALUE){
- led_mode = MODE_OFF;
- }
- break;
- }
}
/*
@@ -271,32 +213,16 @@
#endif
BleInitialize();
-
- // SW Initialize
- for(int count = 0;count < SW_SAMPLECOUNT;count++){
- sw_data[count] = 0;
- }
-
-
-/*
- //tk.attach_us(&ticker_callback, LED_INTERVAL_NSEC);
- if(NRF_UICR->XTALFREQ == 0xFFFFFF00){
- io.display_value = 3232;
- }else if(NRF_UICR->XTALFREQ == 0xFFFFFFFF){
- io.display_value = 1616;
- }
-*/
-
- io.analog_pow(1);
+ AppInit();
for (;; ) {
// 100msec waitForEvent
t.reset();
- t.start();
- while(t.read_ms() < 100){
+ while(t.read_ms() < LED_INTERVAL_MSEC){
+ t.start();
ble.waitForEvent();
+ t.stop();
}
- t.stop();
// ticker処理
switch(led_mode){
@@ -310,12 +236,14 @@
io.display(led_brightness);
if(led_brightness >= BRIGHTNESS_MAXVALUE){
update_counter = 0;
+ io.calibrate_weight();
+ SWInit();
+ ble.startAdvertising();
led_mode = MODE_ON;
- ble.startAdvertising();
}
break;
case MODE_ON:
- if(!check_joystick()){
+ if(check_joystick()){
led_mode = MODE_END;
if(ble.getGapState().connected){
ble.disconnect(Gap::REMOTE_USER_TERMINATED_CONNECTION);
@@ -323,7 +251,10 @@
ble.stopAdvertising();
}
}else{
- weight = io.get_weight() * 9999.0;
+ weight = io.get_weight() / WEIGHT_COEFFICIENT;
+ if(weight < 0){
+ weight = 0;
+ }
io.display_value = (uint16_t)weight; // dummy display
if(++update_counter >= 5){
weight_data = quick_ieee11073_from_float(weight);
@@ -338,6 +269,7 @@
led_brightness -= BRIGHTNESS_ADDVALUE;
io.display(led_brightness);
if(led_brightness <= BRIGHTNESS_MINVALUE){
+ SWInit();
led_mode = MODE_OFF;
}
break;
