diff --git a/java/libraries/io/examples/SPIAnalogDigitalOOP/SPIAnalogDigitalOOP.pde b/java/libraries/io/examples/AnalogDigital_SPI_MCP3001/AnalogDigital_SPI_MCP3001.pde similarity index 100% rename from java/libraries/io/examples/SPIAnalogDigitalOOP/SPIAnalogDigitalOOP.pde rename to java/libraries/io/examples/AnalogDigital_SPI_MCP3001/AnalogDigital_SPI_MCP3001.pde diff --git a/java/libraries/io/examples/SPIAnalogDigitalOOP/MCP3001.pde b/java/libraries/io/examples/AnalogDigital_SPI_MCP3001/MCP3001.pde similarity index 100% rename from java/libraries/io/examples/SPIAnalogDigitalOOP/MCP3001.pde rename to java/libraries/io/examples/AnalogDigital_SPI_MCP3001/MCP3001.pde diff --git a/java/libraries/io/examples/SPIAnalogDigitalOOP8/SPIAnalogDigitalOOP8.pde b/java/libraries/io/examples/AnalogDigital_SPI_MCP3008/AnalogDigital_SPI_MCP3008.pde similarity index 100% rename from java/libraries/io/examples/SPIAnalogDigitalOOP8/SPIAnalogDigitalOOP8.pde rename to java/libraries/io/examples/AnalogDigital_SPI_MCP3008/AnalogDigital_SPI_MCP3008.pde diff --git a/java/libraries/io/examples/SPIAnalogDigitalOOP8/MCP3008.pde b/java/libraries/io/examples/AnalogDigital_SPI_MCP3008/MCP3008.pde similarity index 100% rename from java/libraries/io/examples/SPIAnalogDigitalOOP8/MCP3008.pde rename to java/libraries/io/examples/AnalogDigital_SPI_MCP3008/MCP3008.pde diff --git a/java/libraries/io/examples/Compass_I2C_HMC6352/Compass_I2C_HMC6352.pde b/java/libraries/io/examples/Compass_I2C_HMC6352/Compass_I2C_HMC6352.pde new file mode 100644 index 000000000..921fe47cb --- /dev/null +++ b/java/libraries/io/examples/Compass_I2C_HMC6352/Compass_I2C_HMC6352.pde @@ -0,0 +1,19 @@ +import processing.io.*; +HMC6352 compass; + +// see setup.png in the sketch folder for wiring details + +void setup() { + // the module's I2C address can be changed by modifying values in its EEPROM + // 0x21 is however the default address + + //printArray(I2C.list()); + compass = new HMC6352("i2c-1", 0x21); +} + +void draw() { + background(255); + float deg = compass.heading(); + println(deg + " degrees"); + line(width/2, height/2, width/2+sin(radians(deg))*width/2, height/2-cos(radians(deg))*height/2); +} diff --git a/java/libraries/io/examples/Compass_I2C_HMC6352/HMC6352.pde b/java/libraries/io/examples/Compass_I2C_HMC6352/HMC6352.pde new file mode 100644 index 000000000..ff925ac3a --- /dev/null +++ b/java/libraries/io/examples/Compass_I2C_HMC6352/HMC6352.pde @@ -0,0 +1,38 @@ +import processing.io.I2C; + +// HMC6352 is a digital compass using I2C +// datasheet: https://www.sparkfun.com/datasheets/Components/HMC6352.pdf + +class HMC6352 extends I2C { + int address; + + HMC6352(String dev, int address) { + super(dev); + this.address = address; + setHeadingMode(); + } + + void setHeadingMode() { + beginTransmission(address); + // command byte for writing to EEPROM + write(0x77); + // address of the output data control byte + write(0x4e); + // give us the plain heading + write(0x00); + endTransmission(); + } + + float heading() { + beginTransmission(address); + // command byte for reading the data + write(0x41); + byte[] in = read(2); + endTransmission(); + // put bytes together to tenth of degrees + // & 0xff makes sure the byte is not interpreted as a negative value + int deg = (in[0] & 0xff) << 8 | (in[1] & 0xff); + // return degrees + return deg / 10.0; + } +} diff --git a/java/libraries/io/examples/I2CDigitalAnalogOOP/I2CDigitalAnalogOOP.pde b/java/libraries/io/examples/DigitalAnalog_I2C_MCP4725/DigitalAnalog_I2C_MCP4725.pde similarity index 100% rename from java/libraries/io/examples/I2CDigitalAnalogOOP/I2CDigitalAnalogOOP.pde rename to java/libraries/io/examples/DigitalAnalog_I2C_MCP4725/DigitalAnalog_I2C_MCP4725.pde diff --git a/java/libraries/io/examples/I2CDigitalAnalogOOP/MCP4725.pde b/java/libraries/io/examples/DigitalAnalog_I2C_MCP4725/MCP4725.pde similarity index 100% rename from java/libraries/io/examples/I2CDigitalAnalogOOP/MCP4725.pde rename to java/libraries/io/examples/DigitalAnalog_I2C_MCP4725/MCP4725.pde diff --git a/java/libraries/io/examples/I2CScreen/I2CScreen.pde b/java/libraries/io/examples/Display_I2C_SSD1306/Display_I2C_SSD1306.pde similarity index 100% rename from java/libraries/io/examples/I2CScreen/I2CScreen.pde rename to java/libraries/io/examples/Display_I2C_SSD1306/Display_I2C_SSD1306.pde diff --git a/java/libraries/io/examples/I2CScreen/SSD1306.pde b/java/libraries/io/examples/Display_I2C_SSD1306/SSD1306.pde similarity index 100% rename from java/libraries/io/examples/I2CScreen/SSD1306.pde rename to java/libraries/io/examples/Display_I2C_SSD1306/SSD1306.pde diff --git a/java/libraries/io/examples/I2CCompass/I2CCompass.pde b/java/libraries/io/examples/I2CCompass/I2CCompass.pde deleted file mode 100644 index 079a7bcc6..000000000 --- a/java/libraries/io/examples/I2CCompass/I2CCompass.pde +++ /dev/null @@ -1,43 +0,0 @@ -import processing.io.*; -I2C i2c; - -// HMC6352 is a digital compass module using I2C -// datasheet: https://www.sparkfun.com/datasheets/Components/HMC6352.pdf -// see setup.png in the sketch folder for wiring details - -void setup() { - //printArray(I2C.list()); - i2c = new I2C(I2C.list()[0]); - setHeadingMode(); -} - -void draw() { - background(255); - float deg = getHeading(); - println(deg + " degrees"); - line(width/2, height/2, width/2+sin(radians(deg))*width/2, height/2-cos(radians(deg))*height/2); -} - -void setHeadingMode() { - i2c.beginTransmission(0x21); - // command byte for writing to EEPROM - i2c.write(0x77); - // address of the output data control byte - i2c.write(0x4e); - // give us the plain heading - i2c.write(0x00); - i2c.endTransmission(); -} - -float getHeading() { - i2c.beginTransmission(0x21); - // command byte for reading the data - i2c.write(0x41); - byte[] in = i2c.read(2); - i2c.endTransmission(); - // put bytes together to tenth of degrees - // & 0xff makes sure the byte is not interpreted as a negative value - int deg = (in[0] & 0xff) << 8 | (in[1] & 0xff); - // return degrees - return deg / 10.0; -} diff --git a/java/libraries/io/examples/I2CDigitalAnalog/I2CDigitalAnalog.pde b/java/libraries/io/examples/SimpleI2C/SimpleI2C.pde similarity index 86% rename from java/libraries/io/examples/I2CDigitalAnalog/I2CDigitalAnalog.pde rename to java/libraries/io/examples/SimpleI2C/SimpleI2C.pde index 66f034f61..75a5baccc 100644 --- a/java/libraries/io/examples/I2CDigitalAnalog/I2CDigitalAnalog.pde +++ b/java/libraries/io/examples/SimpleI2C/SimpleI2C.pde @@ -4,6 +4,9 @@ I2C i2c; // MCP4725 is a Digital-to-Analog converter using I2C // datasheet: http://ww1.microchip.com/downloads/en/DeviceDoc/22039d.pdf +// also see DigitalAnalog_I2C_MCP4725 for how to write the +// same sketch in an object-oriented way + void setup() { //printArray(I2C.list()); i2c = new I2C(I2C.list()[0]); diff --git a/java/libraries/io/examples/SPIAnalogDigital/SPIAnalogDigital.pde b/java/libraries/io/examples/SimpleSPI/SimpleSPI.pde similarity index 86% rename from java/libraries/io/examples/SPIAnalogDigital/SPIAnalogDigital.pde rename to java/libraries/io/examples/SimpleSPI/SimpleSPI.pde index bb1311ada..a1b4e2b08 100644 --- a/java/libraries/io/examples/SPIAnalogDigital/SPIAnalogDigital.pde +++ b/java/libraries/io/examples/SimpleSPI/SimpleSPI.pde @@ -5,6 +5,9 @@ SPI spi; // datasheet: http://ww1.microchip.com/downloads/en/DeviceDoc/21293C.pdf // see setup.png in the sketch folder for wiring details +// also see AnalogDigital_SPI_MCP3001 for how to write the +// same sketch in an object-oriented way + void setup() { //printArray(SPI.list()); spi = new SPI(SPI.list()[0]);