Wemos Zero Clone and i2c?

Sorry about the nomenclature. This was the Ebay listing for the board

https://www.ebay.ca/itm/SAMD21-M0-32-bit-ARM-Cortex-M0-Core-Compatible-With-Arduino-Zero-Arduino-M0

but it has been pointed out to me on another thread that Wemos doesn't admit the existence of this board, and some other mfr may have stencilled their name on it w/o permission. Reading the headline more carefully I see that it claims compatibility with Arduino Zero and M0, which I (ignorantly) conflated into "Zero M0".

I've been googling further (sometimes you have to dig!) and found a tutorial

which says that i2c is (by default) found on pins D11 and D12 (SDA and SCL) -- which would answer my question!

As I read more (not understanding a significant chunk of what I'm reading, but starting to get a glimmering) it sounds like the SAMD core has internal support for up to 6 "firmware" serial devices, like 6 different device numbers manageable by an internal driver; and there's a complicated mapping from pads on the smd chip, to pins on the Arduino board, to tx/rx and control signals in the driver. And all this happens in variant.h and variant.cpp.

So I've been staring at variant.h and variant.cpp for a while last night and am starting to get some inkling of what's going on, but still not confident enough to try moving anything around or creating additional serial ports. But if I understand it all correctly, it seems that this chip is so clever that it supports multiple serial ports, possibly multiple i2c buses, multiple SPI buses maybe... though what this EDBG debugger protocol is, I have as yet no clue. Hoping I can ignore it :slight_smile:

At any rate, if the tutorial above is correct, I have at least found out where the default i2c pins are, and that (yes) they are subtracted from the total inventory of digital io pins when Wire is loaded.

[philosophic reflection] One of the dangers of the Arduino world (as well as its great strength) is that complete EE nitwits (like me, for example) can actually build successful projects (even fairly complex ones) using simple MCUs, a friendly IDE, community supported libs, and OTS breakout boards -- all without really understanding anything about microcontroller architecture or the underlying hardware. I don't even know how to use an oscilloscope beyond the most fundamental "look at a square wave" functionality. And yet I can build cool things that work.

This is terrific -- opening up a whole world of Making to people (like me) who would otherwise never get to build cool things. OTOH, it means that we amateurs stumble into a pretty noticeable Ignorance Barrier as soon as we try to graduate to more sophisticated MCUs (like this Zero). Now all of a sudden I have to understand a lot more than I did to use a Uno or Leo; and because the first steps with the simple MCUs were so easy and instantly gratifying, it comes as a bit of a shock :slight_smile: but I'm now resigned to dragging myself up another learning curve; the speed and power of the SAMD device is too attractive to ignore (plus the existence of alternative packaging exposing all the chip's GPIO pins -- zowie!).