Skip to content

Commit

Permalink
manual add and more rtc
Browse files Browse the repository at this point in the history
  • Loading branch information
johntalton committed Apr 30, 2024
1 parent dfea074 commit 463281a
Show file tree
Hide file tree
Showing 8 changed files with 246 additions and 87 deletions.
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
"@johntalton/pcf8574": "^1.0.7",
"@johntalton/ssd1306": "../ssd1306",
"@johntalton/tca9548a": "^5.0.0",
"@johntalton/tcs34725": "../tcs34725"
"@johntalton/tcs34725": "../tcs34725",
"@johntalton/drv2605": "../drv2605",
"@johntalton/ds3231": "../ds3231"
}
}
150 changes: 71 additions & 79 deletions public/css/excamera-i2cdriver.css
Original file line number Diff line number Diff line change
@@ -1,108 +1,100 @@
excamera-i2cdriver {
excamera-i2cdriver {
display: flex;

flex-direction: column;
height: 100%;
}

/* excamera-i2cdriver::part(vdexvice-guess-list) {
display: block;
list-style: none;
}
excamera-i2cdriver::part(scan-display) {
display: flex;
align-items: flex-start;
flex-wrap: wrap;
} */


& form[data-config] {
display: flex;
flex-grow: 1;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 1em;

padding-inline: 1em;
padding-block: 1em;
border-radius: 1em;
margin-block-start: 1em;


background-color: var(--color-accent-softer, red);
color: var(--color-accent-softer-text, red);
}

excamera-i2cdriver form[data-config] {
display: flex;
flex-grow: 1;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 1em;

padding-inline: 1em;
padding-block: 1em;
border-radius: 1em;
margin-block-start: 1em;

/* & div.tabsContent select {
background-color: pink;
color: black;
} */

background-color: var(--color-accent-softer, red);
color: var(--color-accent-softer-text, red);
}
& form[data-info] {
display: grid;
grid-template-columns: minmax(20ch, 1fr) 1fr;
/* grid-template-rows: repeat(auto-fill, 10px); */
gap: 1em;
}

/* excamera-i2cdriver div.tabsContent select {
background-color: pink;
color: black;
} */

& div.tabsContent {
display: flex;
align-items: flex-start;
justify-content: flex-start;
gap: 3em;
flex-wrap: wrap;
}


& div.tabsContent[data-for-tab="settings"] {
/* display: flex; */
flex-direction: row;
align-content: flex-start;
overflow-y: scroll;
height: 0;
}


& ul[data-device-list] {
display: flex;
flex-direction: column;
gap: 0.25em;
}

& ul[data-device-list] > li {
display: none;
}


excamera-i2cdriver form[data-info] {
display: grid;
grid-template-columns: minmax(20ch, 1fr) 1fr;
/* grid-template-rows: repeat(auto-fill, 10px); */
gap: 1em;
}
& ul[data-device-list] > li[data-acked] {
display: grid;
grid-template-columns: 5ch 1fr max-content;
gap: 1em;

background-color: var(--color-accent--lighter, red);
color: var(--color-accent--lighter-text, red);

excamera-i2cdriver div.tabsContent {
display: flex;
align-items: flex-start;
justify-content: flex-start;
gap: 3em;
flex-wrap: wrap;
}


excamera-i2cdriver div.tabsContent[data-for-tab="settings"] {
/* display: flex; */
flex-direction: row;
align-content: flex-start;
overflow-y: scroll;
height: 0;
}


excamera-i2cdriver ul[data-device-list] {
display: flex;
flex-direction: column;
gap: 0.25em;
}

excamera-i2cdriver ul[data-device-list] > li {
display: none;
}
font-weight: bolder;

border-radius: 2em;
padding-inline: 2em;
padding-block: 0.5em;

excamera-i2cdriver ul[data-device-list] > li[data-acked] {
display: grid;
grid-template-columns: 5ch 1fr max-content;
gap: 1em;
align-items: center;
flex-wrap: nowrap;

background-color: var(--color-accent--lighter, red);
color: var(--color-accent--lighter-text, red);
}

font-weight: bolder;
& form[data-manual-add-form] {
display: grid;
grid-template-columns: 5ch 1fr max-content;
gap: 1em;

border-radius: 2em;
padding-inline: 2em;
padding-block: 0.5em;
background-color: var(--color-accent--lighter, red);
color: var(--color-accent--lighter-text, red);

align-items: center;
flex-wrap: nowrap;
border-radius: 2em;
padding-inline: 2em;
padding-block: 0.5em;

align-items: center;
}
}
12 changes: 9 additions & 3 deletions public/devices-i2c/device-factory.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { DS1841Builder } from './ds1841.js'
import { BoschIEUBuilder } from './boschieu.js'
// import { BNO08XBuilder } from './bno08x.js'
// import { SSD1306Builder } from './ssd1306.js'
// import { PCA9536Builder} from './pca9536.js'
import { PCA9536Builder} from './pca9536.js'
import { PCF8574Builder } from './pcf8574.js'
import { PCF8523Builder } from './pcf8523.js'
import { HT16K33Builder } from './ht16k33.js'
Expand All @@ -16,6 +16,8 @@ import { MCP23Builder } from './mcp23.js'
import { EEPROMBuilder } from './eeprom.js'
import { ADXL375Builder } from './adxl375.js'
import { AHT20Builder } from './aht20.js'
import { DRV2605Builder } from './drv2605.js'
import { DS3231Builder } from './ds3231.js'

import {
HT16K33_INFO,
Expand All @@ -34,12 +36,14 @@ import {
MCP23_INFO,
EEPROM_INFO,
ADXL375_INFO,
AHT20_INFO
AHT20_INFO,
DRV2605_INFO,
DS3231_INFO
} from './guesses.js'

const BY_NAME = {
'Adafruit 24LC32': (definition, ui) => EEPROMBuilder.builder(definition, ui),
// [PCA_9536_INFO.name]: (definition, ui) => PCA9536Builder.builder(definition, ui),
[PCA_9536_INFO.name]: (definition, ui) => PCA9536Builder.builder(definition, ui),
[TCA9548_INFO.name]: (definition, ui) => TCA9548Builder.builder(definition, ui),
[DS3502_INFO.name]: (definition, ui) => DS3502Builder.builder(definition, ui),
[BOSCH_IEU_INFO.name]: (definition, ui) => BoschIEUBuilder.builder(definition, ui),
Expand All @@ -56,6 +60,8 @@ const BY_NAME = {
[EEPROM_INFO.name]: (definition, ui) => EEPROMBuilder.builder(definition, ui),
[ADXL375_INFO.name]: (definition, ui) => ADXL375Builder.builder(definition, ui),
[AHT20_INFO.name]: (definition, ui) => AHT20Builder.builder(definition, ui),
[DRV2605_INFO.name]: (definition, ui) => DRV2605Builder.builder(definition, ui),
[DS3231_INFO.name]: (definition, ui) => DS3231Builder.builder(definition, ui)
}

export class I2CDeviceBuilderFactory {
Expand Down
46 changes: 46 additions & 0 deletions public/devices-i2c/drv2605.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import { I2CAddressedBus } from '@johntalton/and-other-delights'
import { DRV2605 } from '@johntalton/drv2605'

export class DRV2605Builder {
#abus
#device

static async builder(definition, ui) {
return new DRV2605Builder(definition, ui)
}

constructor(definition, ui) {
const { bus, address } = definition

this.#abus = new I2CAddressedBus(bus, address)

}

get title() { return 'DRV2605' }

async open() {
this.#device = new DRV2605(this.#abus)

}

async close() { }

signature() { }

async buildCustomView() {
const root = document.createElement('drv2605-config')

const status = await this.#device.getStatus()
console.log(status, status.DEVICE_ID === 7)

// const result = await this.#device.getLibrarySelection()
// console.log(result)


root.innerHTML = `
`

return root
}
}
75 changes: 75 additions & 0 deletions public/devices-i2c/ds3231.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
import { I2CAddressedBus } from '@johntalton/and-other-delights'
import { DS3231 } from '@johntalton/ds3231'

export class DS3231Builder {
#abus
#device

static async builder(definition, ui) {
return new DS3231Builder(definition, ui)
}

constructor(definition, ui) {
const { bus, address } = definition

this.#abus = new I2CAddressedBus(bus, address)
}


get title() { return 'DS3231 (RTC)' }

async open() {
this.#device = await DS3231.from(this.#abus)
}

async close() { }

signature() { }

async buildCustomView(selectionElem) {
const div = document.createElement('div')

const century = 2000
const now = new Date(Date.now())

{
const seconds = now.getUTCSeconds()
const minutes = now.getUTCMinutes()
const hours = now.getUTCHours()

const date = now.getUTCDate()
const month = now.getUTCMonth() + 1
const year = now.getUTCFullYear() - century

// await this.#device.setStatus({ clearOscillatorStoppedFlag: true })
// await this.#device.setTime({
// seconds, minutes, hours, date, month, year
// })
// await this.#device.setStatus({ oscillatorEnabled: true })
}

const temp = await this.#device.getTemperature()
div.innerText = `${temp.temperatureC} ℃`

const time = await this.#device.getTime()

const { year, month, date, hours, minutes, seconds } = time

//
const storedDate = new Date(Date.UTC(
century + year,
month - 1,
date,
hours, minutes, seconds))

console.log(storedDate)

const ctrl = await this.#device.getControl()
console.log(ctrl)

const status = await this.#device.getStatus()
console.log(status)

return div
}
}
5 changes: 5 additions & 0 deletions public/devices-i2c/guesses.js
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,10 @@ export const ADXL375_INFO = {
addresses: [ 0x53 ], name: 'ADXL375 (Accelerometer)'
}

export const DS3231_INFO = {
addresses: [ 0x68 ], name: 'DS3231 (RTC)'
}

export const AHT20_INFO = { addresses: [ 0x38 ], name: 'AHT20' }

export const DRV2605_INFO = { addresses: [ 0x5a ], name: 'DRV2605' }
Expand Down Expand Up @@ -100,6 +104,7 @@ export const I2C_GUESSES = [
{ addresses: [ ...range(0x50, 0x57) ], name: 'mb85rc' },
// 0x60
{ addresses: [ 0x62, 0x63 ], name: 'mcp4725a1'},
DS3231_INFO,
PCF_8523_INFO,
// 0x70
TCA9548_INFO,
Expand Down
Loading

0 comments on commit 463281a

Please sign in to comment.