-
On the touch at the bottom of the screen, I'm pretty sure that's just the MEMLCD_DISP pin I'm afraid - probably the CPU locked up and the pin when open circuit, so then interference from your finger could toggle it on the LCD.
just to make sure this is a dead end too, please watch this video if you missed it. I thought about interference too, it is just that the only place where it was happening was where a button could be, like on the dk08 etc, it was not random, there was no other place that caused it to act.
Just to verify, most probably it is a coincidence?
I tried setting D7 (MEMLCD_DISP) to opendrain, I do not see it change state when use the finger touching the "button" area, but maybe this is something I cannot really test.
-
Just FYI I found the work on the touchscreen sleeping - it wasn't on the forum at all, it was on GitHub: https://github.com/espruino/Espruino/issues/2146
thank you, I have played with the 816 a lot, the p8 the p22 and the rock have it, a lot of differences, they report the touch id with a different numbers, they go to deep/standby sleep using a different register(the 816 on p22 enters standby using the register the 716 is using for sleep), but with time I managed to have them all work fine with auto standby. Except the one on bangle 2 :)
I cannot understand why he says that
It seems that changing 0xFA to something away from test mode breaks the touch handling for unknown reason
it is not the case as far as I have tested, it just does nothing. I can change all the registers I know that do something, and they work, except the DisAutoSleep register, the 0xFA, this has no effect.
-
-
Out of interest do you have the covering on the 2 middle pins of the Bangle charge connector still? Those go straight to SWD so when exposed can cause all kinds of issues.
no, I have them exposed, it is a kickstarter watch, I knew what happened the moment I saw the screen go out, so stupid. Well, ok I didn't know, I thought I fried it, but it is ok :)
but yes, you'll have to be very careful with charge cables if you have another 4 pin one that's wired differently - I didn't know those existed :(
the magic has a 2 pin cable, the magnets are at the same distanceas the bangle, but one of them is always on the opposite polarity, so one cannot accidentally make a mistake. I forced in place, and when forced the charging pins of the magic's cable go to the swd on the bangle. My mistake.
just as an info, p22 and magic/rock, do have the same cable and reverced polarity, but they both have diodes I guess, none is damaged by using the wrong cable.
On the touch at the bottom of the screen, I'm pretty sure that's just the MEMLCD_DISP pin I'm afraid - probably the CPU locked up and the pin when open circuit, so then interference from your finger could toggle it on the LCD.
ok that explains it, I was hopping it could be a way to wake the screen, but it was a long shot, you would have found it already. Thanks and sorry for wasting your time.
Your idea on changing the loader to upload the files with something else than ".info" was excellent, I can finally appreciate the bangle. Thank you.
-
False alarm, it is working again, it was a soft brick I guess, the battery run out quite fast and now it is ok again. :)
I tested pins 4,9,10,11,12,18,20,28,40,41,46 but none of them worked with what I think is a button under the screen.
I am uploading a video, this is when it was bricked, the phone camera makes it flicker. You can see that something happens when I touch under the screen, could it be just a coincidence?
I am really hopping it has a button like the dk08 had, then autosleep missing on the 816 would not be a problem. Any ideas?
-
Hi @Gordon, I managed to destroy my bangle.js 2 :(
I had the magic3's charging cable next to the bangle's one, I used the wrong one, it must have touched the swd pins, it died. :(
Anyway, I have made progress, my UI is playing so nice along with yours, so I will order a new one.
But I am angry that I was so stupid, I want to fix it. Is there a posibility to get a new main board too, if I order a new watch, and of cource pay for it.?
Also, I noticed something strange, but it looks like there is a touch sensitive button right bellow the touch screen, like on the dsd6. When I touch under the screen, it displays the last image it had before it died, could it be that there is a button there, that we have not used?
I can make a video if you like.
-
in order for the module to be available, the webIde does some background magic, it auto downloads the module from github and sends it to the device, if you upload some code that uses it.
You cannot just connect to a "fresh" device from the web ide and do a "require("ST7789")" on the left side, the module will not be found.
place some code on the right hand side that calls "require("ST7789")" , then upload to ram, then you can use the "require("ST7789")" on the left hand side, the webIde will auto download the module for you.
for example, you can type
test=require("ST7789");
on the right hand side, and then upload this to a file named "test" in the flash using the webIde's "send to espruino" button.
Then, using the disk button on the webIde, you can view the "test" file you just uploaded, and you will notice that it also includes the module.
So, if you later reset(); and call this file from the left hand side,
require("Storage").read("test")
the module "ST7789" will be available on the left hand side, without the need for the loader to download it again for you.
-
the code works, maybe it is allready connected, try a reset() and run the code again, maybe add an output of every step along with the number, just to make it easier for you to see the steps.
var gatt=0; NRF.requestDevice({ timeout: 5000, filters: [{ namePrefix: 'eL-M1' }] }).then(function(device) { console.log("1",device); return device.gatt.connect(); }).then(function(g) { gatt = g; console.log("4",g); return gatt.getPrimaryService("6e400001-b5a3-f393-e0a9-e50e24dcca9e"); }).then(function(service) { console.log("5",service) return service.getCharacteristic("6e400002-b5a3-f393-e0a9-e50e24dcca9e"); }).then(function(characteristic) { console.log("6",characteristic); return characteristic.writeValue("LED3.set()\n"); }).then(function() { gatt.disconnect(); console.log("OK!"); });
-
I am not sure where to post this, it is about an interesting rgb led controller, that is controller by advertising manufacturer data. It is interesting because it is programmable, one can set patterns and store them as profiles, and a lot of them can be controlled at the same time, since no connection is needed.
if one happens to find such a controller, this is the code I use to control it from espruino.
if (!global.ledBT){ global.ledBT={ busy:0, tid:0, cnt:1, val:0, run:0, solid:0, patern:0, preset:0, do:function(c){ //print("in",c); if (this.busy) {print(1);ledBT.busy=0;return false;} this.busy=1; if (ledBT.cmd(c)) NRF.setAdvertising({},{manufacturerData:[ledBT.cmd(c)]}); else {ledBT.busy=0;return;} if (ledBT.tid) clearTimeout(ledBT.tid); this.tid=setTimeout((c)=>{ if (!ledBT.val) ledBT.val=c; ledBT.tid=0; //print("check",ledBT.val+ledBT.cnt); ledBT.busy=0; if (ledBT.cmd(ledBT.val+ledBT.cnt)) {ledBT.do(ledBT.val+ledBT.cnt); ledBT.cnt++;} else { ledBT.tid=setTimeout(()=>{ledBT.tid=0;NRF.setAdvertising({},{manufacturerData:[]});},2000); ledBT.val=0;ledBT.cnt=1;} },50,c); }, cmd:function(o){ if (o=="bri100") return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 147, 229, 29, 255, 184, 88, 241, 145, 188]).buffer; else if (o=="bri101") return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 147, 229, 29, 255, 184, 88, 241, 146, 189]).buffer; else if (o=="bri50") return new Uint8Array( [109, 182, 67, 213, 174, 14, 5, 147, 229, 29, 255, 83, 91, 241, 254, 182]).buffer; else if (o=="bri05") return new Uint8Array( [109, 182, 67, 213, 174, 14, 5, 147, 229, 29, 255, 83, 91, 241, 254, 182]).buffer; else if (o=="on") {ledBT.run=1;return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 147, 228, 28, 254, 184, 88, 253, 41, 101]).buffer;} else if (o=="off") {ledBT.run=0;return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 147, 228, 28, 254, 184, 91, 253, 65, 79]).buffer;} else if (o=="whiteOnce") return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 146, 229, 29, 254, 185, 88, 249, 107, 233]).buffer; else if (o=="blue") return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 246, 229, 226, 254, 71, 90, 240, 156, 229]).buffer; else if (o=="purple") return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 246, 229, 226, 1, 184, 89, 240, 213, 204]).buffer; else if (o=="white") return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 246, 229, 226, 1, 71, 88, 240, 254, 19]).buffer; else if (o=="yellow") return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 246, 229, 29, 1, 71, 88, 240, 164, 230]).buffer ; else if (o=="green") return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 246, 229, 29, 254, 71, 91, 240, 30, 9]).buffer; else if (o=="red") return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 246, 229, 29, 1, 184, 91, 240, 63, 10]).buffer; else if (o=="PO1") return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 212, 228, 29, 3, 79, 88, 251, 208, 247]).buffer; else if (o=="PO11") return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 109, 26, 226, 13, 153, 91, 248, 130, 5]).buffer; else if (o=="PO12") return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 4, 229, 29, 255, 188, 90, 254, 123, 224]).buffer; else if (o=="PO2") return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 214, 228, 63, 1, 239, 89, 251, 11, 153]).buffer; else if (o=="PO21") return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 109, 26, 226, 1, 248, 88, 248, 79, 231]).buffer; else if (o=="PO22") return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 86, 229, 29, 254, 188, 91, 254, 108, 160]).buffer; else if (o=="PO3") return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 215, 231, 16, 254, 71, 88, 251, 209, 21]).buffer; else if (o=="PO31") return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 109, 26, 226, 254, 184, 91, 248, 131, 14]).buffer; else if (o=="PO32") return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 146, 229, 9, 4, 187, 90, 254, 9, 41]).buffer; else if (o=="PO4") return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 214, 228, 63, 1, 239, 90, 251, 99, 179]).buffer; else if (o=="PO41") return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 109, 26, 226, 1, 248, 89, 248, 151, 254]).buffer; else if (o=="PO42") return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 86, 229, 29, 254, 188, 88, 254, 4, 138]).buffer; else if (o=="RWB") return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 215, 228, 29, 1, 184, 90, 251, 73, 85]).buffer; else if (o=="RWB1") return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 109, 26, 226, 4, 184, 89, 248, 182, 150]).buffer; else if (o=="RWB2") return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 246, 229, 23, 131, 188, 88, 254, 248, 242]).buffer; else if (o=="RWG") return new Uint8Array([109, 182, 67, 213, 174, 14, 5, 215, 228, 29, 1, 184, 89, 251, 33, 127]).buff
-
You could look at this code: https://banglejs.com/apps/?id=shownearby
this is how I found out that you have phy working :)
I will test some more, if you both get longer distance with phy then maybe I didn't test good enough.
But if it is ~100 meters in openspace, then maybe it is not as impressive as I though it could be. I was hoping for something like 500 meters in city environment, like an info that another euc rider is nearby. :)
thank both for the info.
-
It is strange that the rssi I saw never went over -97
they say "With Coded PHY, the scanner can still detect adv packets of signal strength around -101 dBm"I tried testing long range mode, bangle 2 as transmitter, magic 2v21 s140-6.1.0 as receiver, I got to see -101dbm for just a moment , -99/-98 dBm a few more times, but in practice it looks like normal BLE range. If the BLE long range can indeed go 1km, it would be super. Is the 1km an exageration, or maybe the long range on espruino is not really working yet?
lala=[]; NRF.setScan(function(d) { if (d.rssi<=-97) lala.push(d.rssi); },{phy:"coded"}); >lala =[ -98, -97, -97, -97, -99, -97, -97, -97, -98 ]
-
-
Before Christmas someone was asking about this and I can't for the life of me find the post now... But they'd got a much better datasheet on the touchscreen and were poking around with registers trying to enable the auto-sleep mode on it.
So it might well be possible even with current firmware.
That would be super. I played a bit too, my goal/hope was to make a post saying that I found out how to do it, but I failed, I cannot make it auto sleep.
I understand that upgrading the firmware may be challenging if even truly possible, I will try to find the post you mentioned, enabling auto sleep using registers would be super.
but I got the impression the firmware included adjustments for the specific LCD screen (eg what range of values it reports back so it matches pixel density)
Yes I think you are correct, this is why I think upgrading is out of my league :) For example, I have noticed that when I enable auto sleep on the rock, the HRM sensor is involved too, in the sense that the screen will only wake on touch if the watch is on the hand.
one more question, a bit irrelevant. How does the Bangle.setLocked(true) disables the BTN1? I can see that the BTN1 state is reported ok (with BTN1.read() ) when locked, but my setWatch is not working. Does it automatically disables setWatch in the background?
-
Hi Gordon, I noticed that the 816tp does not enter auto standby. I can see that you are using the accel for tp wakeup, so I guess it is a known issue and this is the way you bypassed it.
included are the registers from a p8, a rock, and a bangle.js 2, all using the same 816 tp model, p8 is ver1, rock is ver4 and the bangle is ver3.
So the question is the following: If the tp firmware on the 816 on the bangle does not have auto standby mode, could it be possible that firmware be upgraded? I know that it can, I can see the procedure on the 816 manual, but it is beyond my skills, so what I mean is could you have a look if you ever find some time?
Using the tp panel to wake the watch is better that using the accel I think, feeling wise. I was trying to use down gesture to unlock, and double tap to unlock and turn on the back-light, I can understand that I can do it using the tap/double tap of the accel, but it just does not feel the same as on the rock/p8.
(p8) new Uint8Array([4, 0, 0, 191, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 19, 40, 22, 33, 17, 233, 18, 77, 17, 167, 17, 189, 17, 253, 18, 32, 23, 105, 19, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 6, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 1, 0, 0, 0, 0, 0, 0, 0, 200, 0, 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 100, 0, 10, 1, 6, 1, 240, 1, 231, 1, 35, 3, 7, 50, 2, 17, 5, 10, 0, 0, 0]) (rock) new Uint8Array([2, 0, 0, 113, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 25, 120, 23, 10, 19, 213, 19, 223, 19, 119, 18, 253, 18, 7, 18, 133, 17, 148, 17, 132, 16, 236, 16, 39, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 5, 0, 6, 0, 6, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 22, 4, 0, 0, 0, 0, 0, 0, 0, 199, 0, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 100, 0, 10, 1, 6, 0, 0, 0, 0, 1, 35, 3, 7, 50, 2, 17, 5, 10, 0, 0, 0]) (bangle) new Uint8Array([4, 0, 0, 131, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 20, 34, 17, 223, 12, 220, 12, 140, 12, 127, 12, 235, 12, 43, 11, 126, 13, 127, 13, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 6, 0, 0, 0, 0, 0, 6, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 3, 0, 0, 0, 0, 0, 0, 0, 188, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 6, 0, 0, 0, 0, 1, 48, 3, 7, 40, 2, 17, 0, 0, 0, 0, 0])
-
-
-
I'm thinking to discharge it again and leave it for longer period of time, say a couple of days over the weekend.
since you have made a new case, don't you have access to the battery terminals? You can short them for half a second, the BMS on the battery will turn off, and turn on again once you plug in the charger.
-
Interesting about the screen. But the P8's (basically PineTime?) screen is very similar size-wise? It's 1.3 inch still?
So it's more about the contrast you get inside?
I tried to explain to me, why is my bangle.js2 unused for so long? The watch it self I like, maybe the p8 a bit better because I have the bangle in blue, but I like it, nice watch. The screen is indeed a bit smaller, less contrast as you said, with older age contrast gets lower along with the difficulty so see close, so yes, inside the p8 is a lot easier to use. Outside the p8 is good too, better that pinetime, better contrast, visible at direct sunlight, not nice, but visible, I can easily tell if a field is red or yellow. 1.4 inches the P8 is.
But I also can explain why the potential of using the bangle apps, and a more mature environment, did not drive me to choose the bangle anyway. In eucwatch everything is fixed, to change the brightness I do 3 moves. When running on the bangle, it is not as easy to see, but I can mechanically do the moves, everything is in known positions, no scrolling lists. The official settings, the old ones I have maybe, I cannot see, I cannot change the brightness, even with glasses I have to pay attention a bit.
I just checked a few apps from the official store I had already installed on the bangle, barometer, a bike speedometer, gps info, gps navigation, health, heart rate monitor, those apps I cannot really use if not wearing glasses and paying attention, and there are a few text fields I need a magnifying glass for.
I think one cannot really feel how it is to not have perfect vision until it happens, I remember I could not understand my friend. I think this is why I haven't put a real effort towards integration, I bought the bangle after my close sight was not perfect, and was not wearing glasses in hopes to delay it, I can not use the menu that pops when I call Bangle.showLauncher() without glasses now, I am old :(
-
Gordon, I was thinking on why I am using the p8 instead of the bangle.js2 those last years. When I started playing with espruino, I had perfect vision. I have a dear friend that uses glassed to see close, we were using the euc to ride together, so when I was coding the p8, I made everything huge, he was my tester, he always wanted bigger, no text if possible, symbols were better, so I even made two dash versions, one with details for me, one simple for him. Color coding states in fields of interest was also a way to help him.
time has passed, I now too use glasses to see close, old age :) I cannot use the settings on the bangle.js2 if I have no glasses on, on the p8 I can, just as a feedback.
-
I didn't realise you had a whole app loader full of apps! I guess it's gone far enough now that it wouldn't be possible to integrate the apps as normal Bangle.js apps?
Not really apps, some 20 of them are the modules for different models /makers support , some 10 are system apps, and some true apps like the calc, alarm, HiD music, TPMS, Led stripes, things like that.
It is just that using two loaders means I can have the same version for p8/rock/bangle.js2 on most files, and slowly integrating to bangle.js apps could be easier for me if I was really using the bangle.js2, as a motivation I mean. For anyone I think, someone else may do it if he likes it, the code would be inside the watch already.
you could modify your app loader to use .euci or something for the file extension of the info files
very nice, thank you.
-
I don't see there's a big problem with 'taking over' the Bangle. I think as a normal app you should have pretty much free reign over what happens - I guess maybe some boot code could interfere but I think on the whole we can just limit what other boot code apps we allow people to install.
nice, if this does not sound like a bad idea, then it works fine as far as I have tested, I will make it working good. Taking over I meant like using my scripts to read the touch controler instead of bangle functions, I am using is my init (.bootrst) file as a bangle clock.
One of the problems I was planning to solve, was the loaders. There are 39 apps in mine, a lot more files that this, lets say I manage to find a way so that there are no conflicts on variable names or file names, do you have a hint as how it could be done so that my loader ignores all the official bangle apps, and the official loader ignores my apps? It looks bad having all those question marks when changing loaders :)
-
I placed my Bangle.js2 on the charger after some time, it is working :)
I will update it next and try to make eucWatch run nice on it, but till then I uploaded 3 videos. The first is the bangle at the state I left at, the next is the magic3 running the updated code now, and last is my first app, a calculator, 5-6 years ago I think, I am embarrassed to look at the code, yet I still use it sometimes, I am uploading the video for the usability aspect, having a simple history that can be easily reused makes it not a complete gimmick.
https://www.youtube.com/watch?v=oBsDP2fhK_o
-
Thanks @Gordon, I maybe expressed my self in a wrong way, it was not a problem for me that some people tried to cash in. I meant that you were correct, those things will happen. I just didn't want to deal with it.
When I started I did not know espruino existed, and the bangle.js2 was not out yet, it was the secret "perfect watch" of atc1441. :)
The first bangle may have been a better choice than the p8 for an euc watch, it had a lot of buttons, but the BT range was bad. The banlejs.2 has fair BT range, an excellent screen for outdoors, and the euc is an outdoors sport, but the screen is a bit small, the vibration a bit weak, and the watch a bit expensive and fragile, there is no comparison on the front glass quality of first gen p8 and the bangle.js2.
I tried making the euc dash an app for bangle.js2, but my code was huge because I am a newbie, and I needed changes to the system function too, just the dash is not enough.
For example I have two routines for wake on wrist raise, one for normal use, selectable, and one that is called automatically when the euc is connected, that uses the plane as a trigger, one of the strongest points of eucwatch is that the auto wake screen works as should while riding the euc, if you can see the watch the screen is on.
I also needed the button for connecting/disconnecting/using the horn function, you were using the long press for reboot, I never reboot.
So I ended up having the eucwatch as a clock that overtakes your system when loaded, but I did not released it, I was planning to but is was a new chapter that needed a better effort to be on par with your work.
And it is more than just the dash, for example it assigns a tmps valve to the garage slot and monitors tire pressure (that actually saved me once, I had a flat and the watch warned me right before the turn, I managed to stop) and a BT brake light because the brake lights on eucs are a joke. I needed to be much better than I am to successfully fit this to your work, so I went with the takeover solution, the quick and dirty one :).
You can have a look at the UI code here, ( the repo is bad state, I was in the process of merging all the watches to the same ver2, but left it at a working but hard to follow state) it is a bit old and unfinished, I will upload the current version on the toilet topic soon.
But my code is kindergarten level, the usability is what I think may deserve a second look.
For example, I have the system bar appearing for a couple of seconds on swipe up (to minimize accidental taps) , three options, left is global system settings, middle is apps, right is context aware settings, it has the settings that are relevant to the face that was active when the system bar was called.
The bottom of the screen is reserved for notifications, optional information on actions, and the slider to change values.
It has options like settable timer for each face timeout, global gesture for full/saved brightness level, the fonts are system wide settable in size.
I will upload a demo on the toilet, so you can see it working if you care. Even better, I will make the bangle.js2 version usable so you can test it yourself and get the feeling, if you can find a usefull idea in it, I would be happy:)
-
And I think that if you earned some money you deserve it and what you do with it is your choice
The story was in no way a complain or something, I just do not like mixing hobby and business, at no point I wanted to make money or cared if one makes some, maybe I was happy it was possible if one wanted to do so. It is difficult to explain, language barrier and I will have to end with nohomo, I really enjoyed talking to you and atc1441, you are my best technical friend I never met :) On a more serious note, both of you are excellent engineers, state of mind I mean, you both rock.
I thank you for you kind comments of the UI, my ver 2 is a better I think, it now has UI elements for the buttons, a nice slider for changing values etc, I had it supporting "dual boot" in the bangle.js2 so I could have both the official and mine at the same time, but is looks better on the magic3. I will make a video of the toilet using it, just to have your comment :)
I was wrong, again :)
You are correct, it is indeed pin D7 that gets interfeared when I touch my finger on the "button" area.
When it was bricked and I had it on the charger, the screen would stay on as long as I had my finger on the "button" area.
but when it was not on the charger, I could get it to turn on the display for a moment only if I run my finger across the "button" area fast.
I can replicate this now if I do:
so you were correct, it is the D7 pin that somehow can be interfered with.