Compare commits
3 Commits
4b3b2d1772
...
9d1248a27c
Author | SHA1 | Date | |
---|---|---|---|
9d1248a27c | |||
d5c8112f41 | |||
017b2e5a8c |
5
RpiLedBars/frontend/webapp/jsconfig.json
Normal file
5
RpiLedBars/frontend/webapp/jsconfig.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"include": [
|
||||
"./src/**/*"
|
||||
]
|
||||
}
|
214
RpiLedBars/frontend/webapp/package-lock.json
generated
214
RpiLedBars/frontend/webapp/package-lock.json
generated
@ -8,9 +8,12 @@
|
||||
"name": "webapp",
|
||||
"version": "0.1.0",
|
||||
"dependencies": {
|
||||
"@jaames/iro": "^5.5.2",
|
||||
"bootstrap": "^5.1.2",
|
||||
"core-js": "^3.6.5",
|
||||
"vue": "^3.0.0"
|
||||
"vue": "^3.0.0",
|
||||
"vue-native-websocket-vue3": "^3.1.4",
|
||||
"vuex": "^4.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vue/cli-plugin-babel": "~4.5.0",
|
||||
@ -1669,6 +1672,20 @@
|
||||
"webpack": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@irojs/iro-core": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@irojs/iro-core/-/iro-core-1.2.1.tgz",
|
||||
"integrity": "sha512-p2OvsBSSmidsDsTSkID6jEyXDF7lcyxPrkh3qBzasBZFpjkYd6kZ3yMWai3MlAaQ3F7li/Et7rSJVV09Fpei+A=="
|
||||
},
|
||||
"node_modules/@jaames/iro": {
|
||||
"version": "5.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jaames/iro/-/iro-5.5.2.tgz",
|
||||
"integrity": "sha512-Fbi5U4Vdkw6UsF+R3oMlPONqkvUDMkwzh+mX718gQsDFt3+1r1jvGsrfCbedmXAAy0WsjDHOrefK0BkDk99TQg==",
|
||||
"dependencies": {
|
||||
"@irojs/iro-core": "^1.2.1",
|
||||
"preact": "^10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@mrmlnc/readdir-enhanced": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
|
||||
@ -2495,6 +2512,11 @@
|
||||
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@vue/devtools-api": {
|
||||
"version": "6.0.0-beta.19",
|
||||
"resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.0.0-beta.19.tgz",
|
||||
"integrity": "sha512-ObzQhgkoVeoyKv+e8+tB/jQBL2smtk/NmC9OmFK8UqdDpoOdv/Kf9pyDWL+IFyM7qLD2C75rszJujvGSPSpGlw=="
|
||||
},
|
||||
"node_modules/@vue/preload-webpack-plugin": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz",
|
||||
@ -3269,8 +3291,7 @@
|
||||
"node_modules/balanced-match": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
|
||||
"dev": true
|
||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
|
||||
},
|
||||
"node_modules/base": {
|
||||
"version": "0.11.2",
|
||||
@ -3480,7 +3501,6 @@
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
@ -4508,8 +4528,7 @@
|
||||
"node_modules/concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
||||
"dev": true
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
|
||||
},
|
||||
"node_modules/concat-stream": {
|
||||
"version": "1.6.2",
|
||||
@ -7031,8 +7050,7 @@
|
||||
"node_modules/fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
|
||||
"dev": true
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
|
||||
},
|
||||
"node_modules/fsevents": {
|
||||
"version": "2.3.2",
|
||||
@ -7142,7 +7160,6 @@
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
|
||||
"integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
@ -7959,7 +7976,6 @@
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"once": "^1.3.0",
|
||||
"wrappy": "1"
|
||||
@ -7968,8 +7984,7 @@
|
||||
"node_modules/inherits": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
||||
"dev": true
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"node_modules/inquirer": {
|
||||
"version": "7.3.3",
|
||||
@ -9328,7 +9343,6 @@
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
},
|
||||
@ -9941,7 +9955,6 @@
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
@ -10319,7 +10332,6 @@
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
@ -11155,6 +11167,15 @@
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/preact": {
|
||||
"version": "10.5.15",
|
||||
"resolved": "https://registry.npmjs.org/preact/-/preact-10.5.15.tgz",
|
||||
"integrity": "sha512-5chK29n6QcJc3m1lVrKQSQ+V7K1Gb8HeQY6FViQ5AxCAEGu3DaHffWNDkC9+miZgsLvbvU9rxbV1qinGHMHzqA==",
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/preact"
|
||||
}
|
||||
},
|
||||
"node_modules/prelude-ls": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
|
||||
@ -14199,6 +14220,60 @@
|
||||
"integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/vue-native-websocket-vue3": {
|
||||
"version": "3.1.4",
|
||||
"resolved": "https://registry.npmjs.org/vue-native-websocket-vue3/-/vue-native-websocket-vue3-3.1.4.tgz",
|
||||
"integrity": "sha512-Dqq+LaoV1ZgWhPGIEBKBIXMc+n+7Bh6BkAgnRrf3iV6NSOA7q42dQNOEPbJCzmn/L779ck56RT1UtoCZfIwq/w==",
|
||||
"dependencies": {
|
||||
"file-entry-cache": "^6.0.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"core-js": "^3.6.5",
|
||||
"vue": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/vue-native-websocket-vue3/node_modules/file-entry-cache": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
|
||||
"integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
|
||||
"dependencies": {
|
||||
"flat-cache": "^3.0.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^10.12.0 || >=12.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/vue-native-websocket-vue3/node_modules/flat-cache": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
|
||||
"integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
|
||||
"dependencies": {
|
||||
"flatted": "^3.1.0",
|
||||
"rimraf": "^3.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^10.12.0 || >=12.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/vue-native-websocket-vue3/node_modules/flatted": {
|
||||
"version": "3.2.2",
|
||||
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz",
|
||||
"integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA=="
|
||||
},
|
||||
"node_modules/vue-native-websocket-vue3/node_modules/rimraf": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
|
||||
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
|
||||
"dependencies": {
|
||||
"glob": "^7.1.3"
|
||||
},
|
||||
"bin": {
|
||||
"rimraf": "bin.js"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/vue-style-loader": {
|
||||
"version": "4.1.3",
|
||||
"resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz",
|
||||
@ -14221,6 +14296,17 @@
|
||||
"integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/vuex": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/vuex/-/vuex-4.0.2.tgz",
|
||||
"integrity": "sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q==",
|
||||
"dependencies": {
|
||||
"@vue/devtools-api": "^6.0.0-beta.11"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vue": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/watchpack": {
|
||||
"version": "1.7.5",
|
||||
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
|
||||
@ -15134,8 +15220,7 @@
|
||||
"node_modules/wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
||||
"dev": true
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
|
||||
},
|
||||
"node_modules/write": {
|
||||
"version": "1.0.3",
|
||||
@ -16550,6 +16635,20 @@
|
||||
"postcss": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"@irojs/iro-core": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@irojs/iro-core/-/iro-core-1.2.1.tgz",
|
||||
"integrity": "sha512-p2OvsBSSmidsDsTSkID6jEyXDF7lcyxPrkh3qBzasBZFpjkYd6kZ3yMWai3MlAaQ3F7li/Et7rSJVV09Fpei+A=="
|
||||
},
|
||||
"@jaames/iro": {
|
||||
"version": "5.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@jaames/iro/-/iro-5.5.2.tgz",
|
||||
"integrity": "sha512-Fbi5U4Vdkw6UsF+R3oMlPONqkvUDMkwzh+mX718gQsDFt3+1r1jvGsrfCbedmXAAy0WsjDHOrefK0BkDk99TQg==",
|
||||
"requires": {
|
||||
"@irojs/iro-core": "^1.2.1",
|
||||
"preact": "^10.0.0"
|
||||
}
|
||||
},
|
||||
"@mrmlnc/readdir-enhanced": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
|
||||
@ -17251,6 +17350,11 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"@vue/devtools-api": {
|
||||
"version": "6.0.0-beta.19",
|
||||
"resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.0.0-beta.19.tgz",
|
||||
"integrity": "sha512-ObzQhgkoVeoyKv+e8+tB/jQBL2smtk/NmC9OmFK8UqdDpoOdv/Kf9pyDWL+IFyM7qLD2C75rszJujvGSPSpGlw=="
|
||||
},
|
||||
"@vue/preload-webpack-plugin": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz",
|
||||
@ -17891,8 +17995,7 @@
|
||||
"balanced-match": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
|
||||
"dev": true
|
||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
|
||||
},
|
||||
"base": {
|
||||
"version": "0.11.2",
|
||||
@ -18067,7 +18170,6 @@
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
@ -18912,8 +19014,7 @@
|
||||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
||||
"dev": true
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
|
||||
},
|
||||
"concat-stream": {
|
||||
"version": "1.6.2",
|
||||
@ -20921,8 +21022,7 @@
|
||||
"fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
|
||||
"dev": true
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
|
||||
},
|
||||
"fsevents": {
|
||||
"version": "2.3.2",
|
||||
@ -21004,7 +21104,6 @@
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
|
||||
"integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
@ -21632,7 +21731,6 @@
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"once": "^1.3.0",
|
||||
"wrappy": "1"
|
||||
@ -21641,8 +21739,7 @@
|
||||
"inherits": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
||||
"dev": true
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"inquirer": {
|
||||
"version": "7.3.3",
|
||||
@ -22701,7 +22798,6 @@
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
}
|
||||
@ -23198,7 +23294,6 @@
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
@ -23504,8 +23599,7 @@
|
||||
"path-is-absolute": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
|
||||
"dev": true
|
||||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
|
||||
},
|
||||
"path-is-inside": {
|
||||
"version": "1.0.2",
|
||||
@ -24223,6 +24317,11 @@
|
||||
"integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==",
|
||||
"dev": true
|
||||
},
|
||||
"preact": {
|
||||
"version": "10.5.15",
|
||||
"resolved": "https://registry.npmjs.org/preact/-/preact-10.5.15.tgz",
|
||||
"integrity": "sha512-5chK29n6QcJc3m1lVrKQSQ+V7K1Gb8HeQY6FViQ5AxCAEGu3DaHffWNDkC9+miZgsLvbvU9rxbV1qinGHMHzqA=="
|
||||
},
|
||||
"prelude-ls": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
|
||||
@ -26741,6 +26840,46 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"vue-native-websocket-vue3": {
|
||||
"version": "3.1.4",
|
||||
"resolved": "https://registry.npmjs.org/vue-native-websocket-vue3/-/vue-native-websocket-vue3-3.1.4.tgz",
|
||||
"integrity": "sha512-Dqq+LaoV1ZgWhPGIEBKBIXMc+n+7Bh6BkAgnRrf3iV6NSOA7q42dQNOEPbJCzmn/L779ck56RT1UtoCZfIwq/w==",
|
||||
"requires": {
|
||||
"file-entry-cache": "^6.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"file-entry-cache": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
|
||||
"integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
|
||||
"requires": {
|
||||
"flat-cache": "^3.0.4"
|
||||
}
|
||||
},
|
||||
"flat-cache": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
|
||||
"integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
|
||||
"requires": {
|
||||
"flatted": "^3.1.0",
|
||||
"rimraf": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"flatted": {
|
||||
"version": "3.2.2",
|
||||
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz",
|
||||
"integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA=="
|
||||
},
|
||||
"rimraf": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
|
||||
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
|
||||
"requires": {
|
||||
"glob": "^7.1.3"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"vue-style-loader": {
|
||||
"version": "4.1.3",
|
||||
"resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz",
|
||||
@ -26765,6 +26904,14 @@
|
||||
"integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
|
||||
"dev": true
|
||||
},
|
||||
"vuex": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/vuex/-/vuex-4.0.2.tgz",
|
||||
"integrity": "sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q==",
|
||||
"requires": {
|
||||
"@vue/devtools-api": "^6.0.0-beta.11"
|
||||
}
|
||||
},
|
||||
"watchpack": {
|
||||
"version": "1.7.5",
|
||||
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
|
||||
@ -27494,8 +27641,7 @@
|
||||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
||||
"dev": true
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
|
||||
},
|
||||
"write": {
|
||||
"version": "1.0.3",
|
||||
|
@ -8,9 +8,12 @@
|
||||
"lint": "vue-cli-service lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@jaames/iro": "^5.5.2",
|
||||
"bootstrap": "^5.1.2",
|
||||
"core-js": "^3.6.5",
|
||||
"vue": "^3.0.0"
|
||||
"vue": "^3.0.0",
|
||||
"vue-native-websocket-vue3": "^3.1.4",
|
||||
"vuex": "^4.0.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vue/cli-plugin-babel": "~4.5.0",
|
||||
|
@ -1,17 +1,23 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
||||
<title><%= htmlWebpackPlugin.options.title %></title>
|
||||
</head>
|
||||
<body>
|
||||
<noscript>
|
||||
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
|
||||
</noscript>
|
||||
<div id="app"></div>
|
||||
<!-- built files will be auto injected -->
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
||||
<title>
|
||||
<%= htmlWebpackPlugin.options.title %>
|
||||
</title>
|
||||
</head>
|
||||
|
||||
<body class="bg-dark text-white">
|
||||
<noscript>
|
||||
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
|
||||
Please enable it to continue.</strong>
|
||||
</noscript>
|
||||
<div id="app"></div>
|
||||
<!-- built files will be auto injected -->
|
||||
</body>
|
||||
|
||||
</html>
|
@ -1,295 +1,85 @@
|
||||
<template>
|
||||
<div class="bg-dark text-white">
|
||||
<div class="container">
|
||||
<div class="row py-4 text-center" id="header">
|
||||
<h1>Tropicananass Leds</h1>
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="row py-4 text-center" id="header">
|
||||
<h1>Tropicananass Leds</h1>
|
||||
</div>
|
||||
<WSConnection v-if="!this.isConnected"></WSConnection>
|
||||
|
||||
<Reconnect></Reconnect>
|
||||
|
||||
<ModeSelect mode_list="{Test, Artnet, Auto, Manual}"></ModeSelect>
|
||||
|
||||
<div class="row pt-2 gy-2">
|
||||
<div class="col d-flex justify-content-center">
|
||||
<form
|
||||
id="mode-input"
|
||||
class="btn-group"
|
||||
role="group"
|
||||
aria-label="Select mode"
|
||||
>
|
||||
<input
|
||||
type="radio"
|
||||
class="btn-check"
|
||||
name="mode-selection"
|
||||
id="test-mode"
|
||||
autocomplete="off"
|
||||
value="0"
|
||||
checked
|
||||
/>
|
||||
<input
|
||||
type="radio"
|
||||
class="btn-check"
|
||||
name="mode-selection"
|
||||
id="artnet-mode"
|
||||
autocomplete="off"
|
||||
value="1"
|
||||
/>
|
||||
<input
|
||||
type="radio"
|
||||
class="btn-check"
|
||||
name="mode-selection"
|
||||
id="auto-mode"
|
||||
autocomplete="off"
|
||||
value="2"
|
||||
/>
|
||||
<input
|
||||
type="radio"
|
||||
class="btn-check"
|
||||
name="mode-selection"
|
||||
id="manual-mode"
|
||||
autocomplete="off"
|
||||
value="3"
|
||||
/>
|
||||
</form>
|
||||
</div>
|
||||
<div class="col d-flex justify-content-center">
|
||||
<form
|
||||
id="pattern-input"
|
||||
class="btn-group"
|
||||
role="group"
|
||||
aria-label="Select pattern"
|
||||
>
|
||||
<input
|
||||
type="radio"
|
||||
class="btn-check"
|
||||
name="pattern-selection"
|
||||
id="pulse-pattern"
|
||||
autocomplete="off"
|
||||
value="0"
|
||||
checked
|
||||
/>
|
||||
<input
|
||||
type="radio"
|
||||
class="btn-check"
|
||||
name="pattern-selection"
|
||||
id="travel-pattern"
|
||||
autocomplete="off"
|
||||
value="1"
|
||||
/>
|
||||
<input
|
||||
type="radio"
|
||||
class="btn-check"
|
||||
name="pattern-selection"
|
||||
id="strobe-pattern"
|
||||
autocomplete="off"
|
||||
value="2"
|
||||
/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row pt-2 gy-2">
|
||||
<legend class="col-12 col-sm-auto">Channel</legend>
|
||||
<!-- <div class="col d-flex justify-content-center">
|
||||
<form id="channelGlobal-input" class="btn-group" role="group" aria-label="Select channel">
|
||||
<input type="radio" class="btn-check" name="channelGlobal-selection" id="all-channel" autocomplete="off" checked>
|
||||
<input type="radio" class="btn-check" name="channelGlobal-selection" id="none-channel" autocomplete="off">
|
||||
</form>
|
||||
</div> -->
|
||||
<div class="col d-flex justify-content-center">
|
||||
<form
|
||||
id="channel-input"
|
||||
class="btn-group"
|
||||
role="group"
|
||||
aria-label="Select channel"
|
||||
>
|
||||
<!-- todo: Change to checkbox -->
|
||||
<input
|
||||
type="radio"
|
||||
class="btn-check"
|
||||
name="channel-selection"
|
||||
id="all-channel"
|
||||
autocomplete="off"
|
||||
checked
|
||||
/>
|
||||
<input
|
||||
type="radio"
|
||||
class="btn-check"
|
||||
name="channel-selection"
|
||||
id="0-channel"
|
||||
autocomplete="off"
|
||||
checked
|
||||
/>
|
||||
<input
|
||||
type="radio"
|
||||
class="btn-check"
|
||||
name="channel-selection"
|
||||
id="1-channel"
|
||||
autocomplete="off"
|
||||
checked
|
||||
/>
|
||||
<input
|
||||
type="radio"
|
||||
class="btn-check"
|
||||
name="channel-selection"
|
||||
id="2-channel"
|
||||
autocomplete="off"
|
||||
checked
|
||||
/>
|
||||
<input
|
||||
type="radio"
|
||||
class="btn-check"
|
||||
name="channel-selection"
|
||||
id="3-channel"
|
||||
autocomplete="off"
|
||||
checked
|
||||
/>
|
||||
<input
|
||||
type="radio"
|
||||
class="btn-check"
|
||||
name="channel-selection"
|
||||
id="4-channel"
|
||||
autocomplete="off"
|
||||
checked
|
||||
/>
|
||||
<input
|
||||
type="radio"
|
||||
class="btn-check"
|
||||
name="channel-selection"
|
||||
id="5-channel"
|
||||
autocomplete="off"
|
||||
checked
|
||||
/>
|
||||
<input
|
||||
type="radio"
|
||||
class="btn-check"
|
||||
name="channel-selection"
|
||||
id="6-channel"
|
||||
autocomplete="off"
|
||||
checked
|
||||
/>
|
||||
<input
|
||||
type="radio"
|
||||
class="btn-check"
|
||||
name="channel-selection"
|
||||
id="7-channel"
|
||||
autocomplete="off"
|
||||
checked
|
||||
/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row pt-2 gy-2">
|
||||
<label
|
||||
class="form-label col-9 col-sm-2 text-sm-end"
|
||||
for="formControlRange"
|
||||
>Sensitivity</label
|
||||
>
|
||||
<span class="col-3 col-sm-1 text-end">50</span>
|
||||
<div class="col col-sm-9">
|
||||
<input
|
||||
type="range"
|
||||
class="form-range"
|
||||
id="formControlRange"
|
||||
oninput="rangeCallback(this)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row pt-2 gy-2">
|
||||
<label
|
||||
class="form-label col-9 col-sm-2 text-sm-end"
|
||||
for="formControlRange"
|
||||
>Gravity</label
|
||||
>
|
||||
<span class="col-3 col-sm-1 text-end">50</span>
|
||||
<div class="col col-sm-9">
|
||||
<input
|
||||
type="range"
|
||||
class="form-range col-auto"
|
||||
id="formControlRange"
|
||||
oninput="rangeCallback(this)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row pt-2 gy-2">
|
||||
<div class="col">
|
||||
<div class="form-check form-switch">
|
||||
<input
|
||||
class="form-check-input"
|
||||
type="checkbox"
|
||||
id="modulateColor"
|
||||
onclick="colorModulateCallback(this)"
|
||||
/>
|
||||
<label class="form-check-label" for="modulateColor"
|
||||
>Modulate color</label
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row pt-2 gy-2">
|
||||
<div id="mainPicker" class="col d-flex justify-content-center"></div>
|
||||
<div
|
||||
id="modulationPicker"
|
||||
class="col d-none d-flex justify-content-center"
|
||||
></div>
|
||||
</div>
|
||||
|
||||
<div class="row pt-2 gy-2">
|
||||
<label
|
||||
class="form-label col-9 col-sm-2 text-sm-end"
|
||||
for="formControlRange"
|
||||
>Modulation speed</label
|
||||
>
|
||||
<span class="col-3 col-sm-auto text-end" id="rangeval">50</span>
|
||||
<div class="col col-sm-9">
|
||||
<input
|
||||
type="range"
|
||||
class="form-range col-auto"
|
||||
id="formControlRange"
|
||||
oninput="rangeCallback(this)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row pt-2 gy-2">
|
||||
<label
|
||||
class="form-label col-9 col-sm-2 text-sm-end"
|
||||
for="formControlRange"
|
||||
>Freq</label
|
||||
>
|
||||
<span class="col-3 col-sm-auto text-end" id="rangeval">50</span>
|
||||
<div class="col col-sm-9">
|
||||
<input
|
||||
type="range"
|
||||
class="form-range col-auto"
|
||||
id="formControlRange"
|
||||
oninput="rangeCallback(this)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row pt-2 gy-2 justify-content-evenly align-items-center">
|
||||
<RadioButtonGroup
|
||||
group_name="mode"
|
||||
:label_list="['test', 'artnet', 'auto', 'manual']"
|
||||
:checked_index="mode"
|
||||
:callback="modeSelectCallback"
|
||||
></RadioButtonGroup>
|
||||
<AutoMode v-if="mode == 2"></AutoMode>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h1>Hello !!</h1>
|
||||
<img alt="Vue logo" src="./assets/logo.png" />
|
||||
<HelloWorld msg="Welcome to Your Vue.js App" />
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Reconnect from "./components/Reconnect.vue";
|
||||
import ModeSelect from "./components/ModeSelect.vue";
|
||||
import RadioButtonGroup from "./components/ui/RadioButtonGroup.vue";
|
||||
|
||||
import AutoMode from "./components/AutoMode.vue";
|
||||
import WSConnection from "./components/WSConnection.vue";
|
||||
|
||||
const data = {
|
||||
mode: 2,
|
||||
ws: null,
|
||||
readyState: 0,
|
||||
};
|
||||
|
||||
export default {
|
||||
name: "App",
|
||||
data() {
|
||||
return data;
|
||||
},
|
||||
components: {
|
||||
Reconnect,
|
||||
ModeSelect,
|
||||
RadioButtonGroup,
|
||||
AutoMode,
|
||||
WSConnection,
|
||||
},
|
||||
created() {
|
||||
this.ws = new WebSocket("ws://192.168.4.1:8080");
|
||||
this.ws.onopen = function (event) {
|
||||
console.log(`[open] ws: Connection established: ${event.code}`);
|
||||
console.log(this);
|
||||
};
|
||||
this.ws.onmessage = function (event) {
|
||||
console.log(`[message] ws: Data received from server: ${event.data}`);
|
||||
};
|
||||
this.ws.onclose = function (event) {
|
||||
if (event.wasClean) {
|
||||
console.log(
|
||||
`[close] ws: Connection closed cleanly, code=${event.code} reason=${event.reason}`
|
||||
);
|
||||
} else {
|
||||
console.log("[close] ws: Connection died");
|
||||
}
|
||||
};
|
||||
this.ws.onerror = function (error) {
|
||||
console.log(`[error] ws: ${error.message}`);
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
isConnected() {
|
||||
return this.readyState == WebSocket.OPEN;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
modeSelectCallback: function (event) {
|
||||
if (event.target.nodeName == "INPUT") {
|
||||
this.mode = Number(event.target.value);
|
||||
console.log("m:" + this.mode);
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style></style>
|
||||
<style scoped>
|
||||
.row {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
</style>
|
||||
|
67
RpiLedBars/frontend/webapp/src/components/AutoMode.vue
Normal file
67
RpiLedBars/frontend/webapp/src/components/AutoMode.vue
Normal file
@ -0,0 +1,67 @@
|
||||
|
||||
<template>
|
||||
<RadioButtonGroup
|
||||
group_name="pattern"
|
||||
:label_list="['pulse', 'travel', 'strobe']"
|
||||
:checked_index="pattern"
|
||||
:callback="patternSelectCallback"
|
||||
></RadioButtonGroup>
|
||||
<div class="w-100 d-block d-lg-none"></div>
|
||||
<RadioButtonGroup
|
||||
group_name="channel"
|
||||
:label_list="['0', '1', '2', '3', '4', '5', '6', '7', 'all']"
|
||||
:checked_index="channel"
|
||||
:callback="channelSelectCallback"
|
||||
>
|
||||
channels
|
||||
</RadioButtonGroup>
|
||||
|
||||
<PulsePattern v-if="pattern == 0"></PulsePattern>
|
||||
<TravelPattern v-else-if="pattern == 1"></TravelPattern>
|
||||
<StrobePattern v-else-if="pattern == 2"></StrobePattern>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import RadioButtonGroup from "./ui/RadioButtonGroup.vue";
|
||||
|
||||
import PulsePattern from "./patterns/Pulse.vue";
|
||||
import StrobePattern from "./patterns/Strobe.vue";
|
||||
import TravelPattern from "./patterns/Travel.vue";
|
||||
|
||||
const data = {
|
||||
pattern: 1,
|
||||
channel: 8,
|
||||
};
|
||||
|
||||
export default {
|
||||
name: "AutoMode",
|
||||
components: {
|
||||
RadioButtonGroup,
|
||||
PulsePattern,
|
||||
TravelPattern,
|
||||
StrobePattern,
|
||||
},
|
||||
data() {
|
||||
return data;
|
||||
},
|
||||
methods: {
|
||||
patternSelectCallback: function (event) {
|
||||
if (event.target.nodeName == "INPUT") {
|
||||
this.pattern = Number(event.target.value);
|
||||
console.log("p:" + this.pattern);
|
||||
}
|
||||
},
|
||||
channelSelectCallback: function (event) {
|
||||
if (event.target.nodeName == "INPUT") {
|
||||
let selectedChannel = event.target.id.split("-")[0];
|
||||
if (selectedChannel == "all") {
|
||||
this.channel = 8;
|
||||
} else {
|
||||
this.channel = Number(selectedChannel);
|
||||
}
|
||||
console.log("c:" + this.channel);
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
@ -1,34 +0,0 @@
|
||||
<template>
|
||||
<div class="row pt-2 gy-2">
|
||||
<div class="col d-flex justify-content-center">
|
||||
<form id="mode-input" class="btn-group" role="group" aria-label="Select mode">
|
||||
<input type="radio" class="btn-check" name="mode-selection" id="test-mode" autocomplete="off" value="0" checked>
|
||||
<input type="radio" class="btn-check" name="mode-selection" id="artnet-mode" autocomplete="off" value="1">
|
||||
<input type="radio" class="btn-check" name="mode-selection" id="auto-mode" autocomplete="off" value="2">
|
||||
<input type="radio" class="btn-check" name="mode-selection" id="manual-mode" autocomplete="off" value="3">
|
||||
</form>
|
||||
</div>
|
||||
<div class="col d-flex justify-content-center">
|
||||
<form id="pattern-input" class="btn-group" role="group" aria-label="Select pattern">
|
||||
<input type="radio" class="btn-check" name="pattern-selection" id="pulse-pattern" autocomplete="off" value="0" checked>
|
||||
<input type="radio" class="btn-check" name="pattern-selection" id="travel-pattern" autocomplete="off" value="1">
|
||||
<input type="radio" class="btn-check" name="pattern-selection" id="strobe-pattern" autocomplete="off" value="2">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'Reconnect',
|
||||
props: {
|
||||
msg: String
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
#reconnectBackdrop{
|
||||
visibility: hidden;
|
||||
}
|
||||
</style>
|
@ -1,34 +0,0 @@
|
||||
<template>
|
||||
<div class="row pt-2 gy-2">
|
||||
<div class="col d-flex justify-content-center">
|
||||
<form id="mode-input" class="btn-group" role="group" aria-label="Select mode">
|
||||
<div v-for="modename in mode_list" v-bind:key="modename">
|
||||
<input :id="modename" type="radio" class="btn-check" name="mode-selection" autocomplete="off" value="0" checked>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="col d-flex justify-content-center">
|
||||
<form id="pattern-input" class="btn-group" role="group" aria-label="Select pattern">
|
||||
<input type="radio" class="btn-check" name="pattern-selection" id="pulse-pattern" autocomplete="off" value="0" checked>
|
||||
<input type="radio" class="btn-check" name="pattern-selection" id="travel-pattern" autocomplete="off" value="1">
|
||||
<input type="radio" class="btn-check" name="pattern-selection" id="strobe-pattern" autocomplete="off" value="2">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'ModeSelect',
|
||||
props: {
|
||||
mode_list: Array,
|
||||
callback_list: Array
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
#reconnectBackdrop{
|
||||
visibility: hidden;
|
||||
}
|
||||
</style>
|
@ -1,33 +0,0 @@
|
||||
<template>
|
||||
<div class="modal fade text-black" id="reconnectBackdrop" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="connectionLostLabel" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="connectionLostLabel">Connection lost</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
Try reconnecting in <span id="time-left">60s</span>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary" onclick="{timeout=1;}">Reconnect now</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'Reconnect',
|
||||
props: {
|
||||
msg: String
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
#reconnectBackdrop{
|
||||
visibility: hidden;
|
||||
}
|
||||
</style>
|
61
RpiLedBars/frontend/webapp/src/components/WSConnection.vue
Normal file
61
RpiLedBars/frontend/webapp/src/components/WSConnection.vue
Normal file
@ -0,0 +1,61 @@
|
||||
<template>
|
||||
<div
|
||||
class="modal fade text-black show"
|
||||
id="reconnectBackdrop"
|
||||
data-bs-backdrop="static"
|
||||
data-bs-keyboard="false"
|
||||
tabindex="-1"
|
||||
aria-labelledby="connectionLostLabel"
|
||||
aria-hidden="true"
|
||||
ref="reconnectBackdrop"
|
||||
>
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="connectionLostLabel">Connection lost</h5>
|
||||
<button
|
||||
type="button"
|
||||
class="btn-close"
|
||||
data-bs-dismiss="modal"
|
||||
aria-label="Close"
|
||||
></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
{{ isConnected }} <span id="time-left">60s</span>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-primary" @click="reconnect">
|
||||
Reconnect now
|
||||
</button>
|
||||
<button type="button" class="btn btn-primary">
|
||||
{{ isConnected }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
const data = {};
|
||||
|
||||
export default {
|
||||
name: "WSConnection",
|
||||
data() {
|
||||
return data;
|
||||
},
|
||||
props: { isConnected: Boolean },
|
||||
created() {},
|
||||
methods: {
|
||||
log() {
|
||||
console.log(this.socket);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
#reconnectBackdrop {
|
||||
display: block;
|
||||
}
|
||||
</style>
|
34
RpiLedBars/frontend/webapp/src/components/patterns/Pulse.vue
Normal file
34
RpiLedBars/frontend/webapp/src/components/patterns/Pulse.vue
Normal file
@ -0,0 +1,34 @@
|
||||
|
||||
<template>
|
||||
<div class="row pt-2 px-0 gy-2 justify-content-center">
|
||||
<div class="col-12 col-md">
|
||||
<RangeSlider class="col" v-model:value="sensitivity">
|
||||
sensitivity
|
||||
</RangeSlider>
|
||||
</div>
|
||||
<div class="col-12 col-md">
|
||||
<RangeSlider v-model:value="gravity"> gravity </RangeSlider>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import RangeSlider from "../ui/RangeSlider.vue";
|
||||
|
||||
export default {
|
||||
name: "Pulse",
|
||||
components: {
|
||||
RangeSlider,
|
||||
},
|
||||
data() {
|
||||
return { sensitivity: 70, gravity: 50 };
|
||||
},
|
||||
methods: {
|
||||
sliderCallback: function (event) {
|
||||
if (event.target.nodeName == "INPUT") {
|
||||
console.log(event.target.id + ":" + this.channel);
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
@ -0,0 +1,29 @@
|
||||
|
||||
<template>
|
||||
<div class="row pt-2 px-0 gy-2 justify-content-center">
|
||||
<div class="col-12 col-md">
|
||||
<RangeSlider class="col" v-model:value="speed"> speed </RangeSlider>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import RangeSlider from "../ui/RangeSlider.vue";
|
||||
|
||||
export default {
|
||||
name: "Strobe",
|
||||
components: {
|
||||
RangeSlider,
|
||||
},
|
||||
data() {
|
||||
return { speed: 50 };
|
||||
},
|
||||
methods: {
|
||||
sliderCallback: function (event) {
|
||||
if (event.target.nodeName == "INPUT") {
|
||||
console.log(event.target.id + ":" + this.channel);
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
@ -0,0 +1,53 @@
|
||||
|
||||
<template>
|
||||
<div class="row pt-2 px-0 gy-2 justify-content-center">
|
||||
<div class="col-12 col-md">
|
||||
<RangeSlider class="col" v-model:value="sensitivity">
|
||||
sensitivity
|
||||
</RangeSlider>
|
||||
</div>
|
||||
<div class="col-12 col-md">
|
||||
<RangeSlider v-model:value="gravity"> gravity </RangeSlider>
|
||||
</div>
|
||||
</div>
|
||||
<ColorAndModulation
|
||||
:colorCallback="colorCallback"
|
||||
:modulationCallback="modulationCallback"
|
||||
ref="color_and_modulation"
|
||||
></ColorAndModulation>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ColorAndModulation from "../ui/ColorAndModulation.vue";
|
||||
import RangeSlider from "../ui/RangeSlider.vue";
|
||||
|
||||
const data = {
|
||||
sensitivity: 33,
|
||||
gravity: 88,
|
||||
};
|
||||
|
||||
export default {
|
||||
name: "Travel",
|
||||
components: {
|
||||
ColorAndModulation,
|
||||
RangeSlider,
|
||||
},
|
||||
data() {
|
||||
return data;
|
||||
},
|
||||
methods: {
|
||||
sliderCallback: function (event) {
|
||||
if (event.target.nodeName == "INPUT") {
|
||||
console.log(event.target.id + ":" + event.target.value);
|
||||
}
|
||||
},
|
||||
colorCallback: function (color) {
|
||||
console.log(color.hsv);
|
||||
console.log(color.hsl);
|
||||
},
|
||||
modulationCallback: function (modulation) {
|
||||
console.log(modulation);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
27
RpiLedBars/frontend/webapp/src/components/ui/CheckBox.vue
Normal file
27
RpiLedBars/frontend/webapp/src/components/ui/CheckBox.vue
Normal file
@ -0,0 +1,27 @@
|
||||
<template>
|
||||
<div class="form-check form-switch">
|
||||
<input
|
||||
class="form-check-input"
|
||||
type="checkbox"
|
||||
id="label"
|
||||
:checked="is_checked"
|
||||
@click="$emit('update:is_checked', !is_checked)"
|
||||
/>
|
||||
<label class="form-check-label text-capitalize" for="label">
|
||||
{{ label }}
|
||||
</label>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "CheckBox",
|
||||
props: {
|
||||
is_checked: Boolean,
|
||||
},
|
||||
setup(props, { slots }) {
|
||||
const label = slots.default()[0].children.replace(/([A-Z_-])/g, " $1");
|
||||
return { label };
|
||||
},
|
||||
};
|
||||
</script>
|
@ -0,0 +1,71 @@
|
||||
<template>
|
||||
<div class="row pt-2 gy-2 justify-content-center">
|
||||
<div class="col-auto">
|
||||
<CheckBox label="modulateColor" v-model:is_checked="modulateColor">
|
||||
modulateColor
|
||||
</CheckBox>
|
||||
</div>
|
||||
|
||||
<div v-if="modulateColor" class="col-12 col-md">
|
||||
<RangeSlider v-model:value="modulationSpeed">
|
||||
modulation Speed
|
||||
</RangeSlider>
|
||||
</div>
|
||||
|
||||
<div v-if="modulateColor" class="w-100 d-block d-xxl-none"></div>
|
||||
<div v-else class="w-100 d-block d-sm-none"></div>
|
||||
|
||||
<div class="col">
|
||||
<ColorPicker
|
||||
name="mainPicker"
|
||||
:color_array="[color_array[0], color_array[1]]"
|
||||
:callback="colorCallback"
|
||||
></ColorPicker>
|
||||
</div>
|
||||
|
||||
<div v-if="modulateColor" class="col">
|
||||
<ColorPicker
|
||||
name="modulationPicker"
|
||||
:color_array="[color_array[2]]"
|
||||
:callback="modulationCallback"
|
||||
></ColorPicker>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import CheckBox from "./CheckBox.vue";
|
||||
import ColorPicker from "./ColorPicker.vue";
|
||||
import RangeSlider from "./RangeSlider.vue";
|
||||
|
||||
const data = {
|
||||
modulateColor: true,
|
||||
modulationSpeed: 50,
|
||||
};
|
||||
|
||||
export default {
|
||||
name: "ColorAndModulation",
|
||||
props: {
|
||||
color_array: {
|
||||
type: Array,
|
||||
default: function () {
|
||||
return [
|
||||
{ h: 180, s: 100, v: 50 },
|
||||
{ h: 0, s: 80, v: 50 },
|
||||
{ h: 60, s: 80, v: 50 },
|
||||
];
|
||||
},
|
||||
},
|
||||
colorCallback: { type: Function, required: true },
|
||||
modulationCallback: { type: Function, required: true },
|
||||
},
|
||||
components: {
|
||||
CheckBox,
|
||||
ColorPicker,
|
||||
RangeSlider,
|
||||
},
|
||||
data() {
|
||||
return data;
|
||||
},
|
||||
};
|
||||
</script>
|
58
RpiLedBars/frontend/webapp/src/components/ui/ColorPicker.vue
Normal file
58
RpiLedBars/frontend/webapp/src/components/ui/ColorPicker.vue
Normal file
@ -0,0 +1,58 @@
|
||||
<template>
|
||||
<div :id="name" class="col d-flex justify-content-center overflow-auto"></div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import iro from "@jaames/iro";
|
||||
|
||||
export default {
|
||||
name: "ColorPicker",
|
||||
props: {
|
||||
name: String,
|
||||
color_array: {
|
||||
type: Array,
|
||||
default: function () {
|
||||
return [
|
||||
{ h: 180, s: 100, v: 50 },
|
||||
{ h: 0, s: 50, v: 50 },
|
||||
];
|
||||
},
|
||||
},
|
||||
callback: Function,
|
||||
},
|
||||
mounted() {
|
||||
new iro.ColorPicker("#" + this.name, {
|
||||
colors: this.color_array,
|
||||
layout: [
|
||||
{
|
||||
component: iro.ui.Wheel,
|
||||
options: {
|
||||
wheelLightness: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: iro.ui.Slider,
|
||||
options: {
|
||||
sliderType: "value",
|
||||
},
|
||||
},
|
||||
],
|
||||
layoutDirection: "horizontal",
|
||||
width: 250,
|
||||
margin: 0,
|
||||
handleRadius: 14,
|
||||
}).on("color:change", this.callback);
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.IroColorPicker {
|
||||
white-space: nowrap;
|
||||
width: max-content;
|
||||
}
|
||||
|
||||
.IroColorPicker > .IroWheel {
|
||||
margin-right: 12px;
|
||||
}
|
||||
</style>
|
@ -1,58 +0,0 @@
|
||||
<template>
|
||||
<div class="hello">
|
||||
<h1>{{ msg }}</h1>
|
||||
<p>
|
||||
For a guide and recipes on how to configure / customize this project,<br>
|
||||
check out the
|
||||
<a href="https://cli.vuejs.org" target="_blank" rel="noopener">vue-cli documentation</a>.
|
||||
</p>
|
||||
<h3>Installed CLI Plugins</h3>
|
||||
<ul>
|
||||
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel" target="_blank" rel="noopener">babel</a></li>
|
||||
<li><a href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint" target="_blank" rel="noopener">eslint</a></li>
|
||||
</ul>
|
||||
<h3>Essential Links</h3>
|
||||
<ul>
|
||||
<li><a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a></li>
|
||||
<li><a href="https://forum.vuejs.org" target="_blank" rel="noopener">Forum</a></li>
|
||||
<li><a href="https://chat.vuejs.org" target="_blank" rel="noopener">Community Chat</a></li>
|
||||
<li><a href="https://twitter.com/vuejs" target="_blank" rel="noopener">Twitter</a></li>
|
||||
<li><a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a></li>
|
||||
</ul>
|
||||
<h3>Ecosystem</h3>
|
||||
<ul>
|
||||
<li><a href="https://router.vuejs.org" target="_blank" rel="noopener">vue-router</a></li>
|
||||
<li><a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a></li>
|
||||
<li><a href="https://github.com/vuejs/vue-devtools#vue-devtools" target="_blank" rel="noopener">vue-devtools</a></li>
|
||||
<li><a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener">vue-loader</a></li>
|
||||
<li><a href="https://github.com/vuejs/awesome-vue" target="_blank" rel="noopener">awesome-vue</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'HelloWorld',
|
||||
props: {
|
||||
msg: String
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- Add "scoped" attribute to limit CSS to this component only -->
|
||||
<style scoped>
|
||||
h3 {
|
||||
margin: 40px 0 0;
|
||||
}
|
||||
ul {
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
}
|
||||
li {
|
||||
display: inline-block;
|
||||
margin: 0 10px;
|
||||
}
|
||||
a {
|
||||
color: #42b983;
|
||||
}
|
||||
</style>
|
29
RpiLedBars/frontend/webapp/src/components/ui/RadioButton.vue
Normal file
29
RpiLedBars/frontend/webapp/src/components/ui/RadioButton.vue
Normal file
@ -0,0 +1,29 @@
|
||||
<template>
|
||||
<input
|
||||
:id="id"
|
||||
type="radio"
|
||||
class="btn-check"
|
||||
:name="group_label"
|
||||
autocomplete="off"
|
||||
:value="value"
|
||||
:checked="is_checked"
|
||||
/>
|
||||
<label :for="id" class="btn btn-outline-primary text-capitalize">
|
||||
<slot></slot>
|
||||
</label>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "RadioButton",
|
||||
props: {
|
||||
group_label: String,
|
||||
value: Number,
|
||||
is_checked: Boolean,
|
||||
},
|
||||
setup(props, { slots }) {
|
||||
const id = slots.default()[0].children + "-" + props.group_label;
|
||||
return { id };
|
||||
},
|
||||
};
|
||||
</script>
|
@ -0,0 +1,44 @@
|
||||
<template>
|
||||
<legend v-if="$slots.default" class="col-auto text-capitalize fs-6 mb-0">
|
||||
<slot></slot>
|
||||
</legend>
|
||||
<div class="col-auto">
|
||||
<form
|
||||
:id="group_name + '-input'"
|
||||
class="btn-group"
|
||||
role="group"
|
||||
:aria-label="'Select' + group_name"
|
||||
@click="callback"
|
||||
>
|
||||
<RadioButton
|
||||
v-for="(label, index) in label_list"
|
||||
:key="index"
|
||||
:group_label="group_name"
|
||||
:value="index"
|
||||
:is_checked="index == checked_index"
|
||||
>
|
||||
{{ label }}
|
||||
</RadioButton>
|
||||
</form>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import RadioButton from "./RadioButton.vue";
|
||||
|
||||
export default {
|
||||
name: "ModeSelect",
|
||||
props: {
|
||||
group_name: String,
|
||||
label_list: Array,
|
||||
checked_index: {
|
||||
type: Number,
|
||||
default: 0,
|
||||
},
|
||||
callback: Function,
|
||||
},
|
||||
components: {
|
||||
RadioButton,
|
||||
},
|
||||
};
|
||||
</script>
|
41
RpiLedBars/frontend/webapp/src/components/ui/RangeSlider.vue
Normal file
41
RpiLedBars/frontend/webapp/src/components/ui/RangeSlider.vue
Normal file
@ -0,0 +1,41 @@
|
||||
<template>
|
||||
<div class="row">
|
||||
<label
|
||||
class="form-label col-9 col-sm-3 text-sm-end text-capitalize pr-1"
|
||||
:for="id"
|
||||
>
|
||||
<slot></slot>
|
||||
</label>
|
||||
<span class="col-3 col-sm-1 text-end"> {{ value }} </span>
|
||||
<div class="col">
|
||||
<input
|
||||
type="range"
|
||||
class="form-range"
|
||||
:id="id"
|
||||
@input="sliderCallback"
|
||||
:value="value"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "RangeSlider",
|
||||
props: {
|
||||
value: Number,
|
||||
},
|
||||
methods: {
|
||||
sliderCallback: function (event) {
|
||||
if (event.target.nodeName == "INPUT") {
|
||||
this.$emit("update:value", Number(event.target.value));
|
||||
console.log("s:" + this.value);
|
||||
}
|
||||
},
|
||||
},
|
||||
setup(props, { slots }) {
|
||||
const id = slots.default()[0].children + "-controlRange";
|
||||
return { id };
|
||||
},
|
||||
};
|
||||
</script>
|
@ -1,6 +1,86 @@
|
||||
import { createApp } from 'vue'
|
||||
import App from './App.vue'
|
||||
// import store from './store'
|
||||
// import store from './storews'
|
||||
|
||||
// import VueNativeSock from "vue-native-websocket-vue3";
|
||||
import "bootstrap/dist/css/bootstrap.min.css"
|
||||
import "bootstrap"
|
||||
// import { createStore } from "vuex";
|
||||
|
||||
createApp(App).mount('#app')
|
||||
|
||||
const app = createApp(App)
|
||||
|
||||
// const store = createStore({
|
||||
// state: {
|
||||
// socket: {
|
||||
// // Connection Status
|
||||
// isConnected: false,
|
||||
// // Message content
|
||||
// message: "",
|
||||
// // Reconnect error
|
||||
// reconnectError: false,
|
||||
// // Heartbeat message sending time
|
||||
// heartBeatInterval: 50000,
|
||||
// // Heartbeat timer
|
||||
// heartBeatTimer: 0
|
||||
// }
|
||||
// },
|
||||
// mutations: {
|
||||
// // Connection open
|
||||
// SOCKET_ONOPEN(state, event) {
|
||||
// console.log(event);
|
||||
// app.config.globalProperties.$socket = event.currentTarget;
|
||||
// state.socket.isConnected = true;
|
||||
// // When the connection is successful, start sending heartbeat messages regularly to avoid being disconnected by the server
|
||||
// // state.socket.heartBeatTimer = setInterval(() => {
|
||||
// // const message = "Heartbeat message";
|
||||
// // state.socket.isConnected &&
|
||||
// // app.config.globalProperties.$socket.sendObj({
|
||||
// // code: 200,
|
||||
// // msg: message
|
||||
// // });
|
||||
// // }, state.socket.heartBeatInterval);
|
||||
// },
|
||||
// // Connection closed
|
||||
// SOCKET_ONCLOSE(state, event) {
|
||||
// state.socket.isConnected = false;
|
||||
// // Stop the heartbeat message when the connection is closed
|
||||
// clearInterval(state.socket.heartBeatTimer);
|
||||
// state.socket.heartBeatTimer = 0;
|
||||
// console.log("The line is disconnected: " + new Date());
|
||||
// console.log(event);
|
||||
// },
|
||||
// // An error occurred
|
||||
// SOCKET_ONERROR(state, event) {
|
||||
// console.error(state, event);
|
||||
// },
|
||||
// // Receive the message sent by the server
|
||||
// SOCKET_ONMESSAGE(state, message) {
|
||||
// state.socket.message = message;
|
||||
// },
|
||||
// // Auto reconnect
|
||||
// SOCKET_RECONNECT(state, count) {
|
||||
// console.info("消息系统重连中...", state, count);
|
||||
// },
|
||||
// // Reconnect error
|
||||
// SOCKET_RECONNECT_ERROR(state) {
|
||||
// state.socket.reconnectError = true;
|
||||
// }
|
||||
// },
|
||||
// modules: {}
|
||||
// })
|
||||
|
||||
// app.use(store)
|
||||
|
||||
// app.use(VueNativeSock, "ws://192.168.4.1:8080", {
|
||||
// store: store
|
||||
// }, {
|
||||
// reconnection: true, // (Boolean) whether to reconnect automatically (false)
|
||||
// reconnectionAttempts: 90, // (Number) number of reconnection attempts before giving up (Infinity),
|
||||
// reconnectionDelay: 10, // (Number) how long to initially wait before attempting a new (1000)
|
||||
// });
|
||||
|
||||
app.mount('#app')
|
||||
|
||||
export default app
|
100
RpiLedBars/frontend/webapp/src/store.js
Normal file
100
RpiLedBars/frontend/webapp/src/store.js
Normal file
@ -0,0 +1,100 @@
|
||||
// import Vue from 'vue'
|
||||
// import Vuex from 'vuex'
|
||||
import { createStore } from "vuex";
|
||||
|
||||
// Vue.use(Vuex)
|
||||
|
||||
// root state object.
|
||||
// each Vuex instance is just a single state tree.
|
||||
const state = {
|
||||
count: 0,
|
||||
webSocket: WebSocket
|
||||
}
|
||||
|
||||
|
||||
|
||||
// mutations are operations that actually mutate the state.
|
||||
// each mutation handler gets the entire state tree as the
|
||||
// first argument, followed by additional payload arguments.
|
||||
// mutations must be synchronous and can be recorded by plugins
|
||||
// for debugging purposes.
|
||||
const mutations = {
|
||||
increment(state) {
|
||||
state.count++
|
||||
},
|
||||
decrement(state) {
|
||||
state.count--
|
||||
},
|
||||
reconnect() {
|
||||
state.webSocket = new WebSocket("ws://tropicananass.ovh:8080");
|
||||
|
||||
state.webSocket.onopen = function (event) {
|
||||
console.log(`[open] ws: Connection established: ${event.code}`);
|
||||
};
|
||||
|
||||
state.webSocket.onmessage = function (event) {
|
||||
console.log(`[message] ws: Data received from server: ${event.data}`);
|
||||
let message = event.data.split(":");
|
||||
let command = message[0];
|
||||
let payload = message[1];
|
||||
console.log(command + ", " + payload);
|
||||
switch (command) {
|
||||
case 'm':
|
||||
document.getElementById("mode-input").elements["mode-selection"][payload].checked = true;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
state.webSocket.webSocketonclose = function (event) {
|
||||
if (event.wasClean) {
|
||||
console.log(`[close] ws: Connection closed cleanly, code=${event.code} reason=${event.reason}`);
|
||||
} else {
|
||||
console.log('[close] ws: Connection died');
|
||||
}
|
||||
};
|
||||
|
||||
state.webSocket.onerror = function (error) {
|
||||
console.log(`[error] ws: ${error.message}`);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// actions are functions that cause side effects and can involve
|
||||
// asynchronous operations.
|
||||
const actions = {
|
||||
increment: ({ commit }) => commit('increment'),
|
||||
decrement: ({ commit }) => commit('decrement'),
|
||||
incrementIfOdd({ commit, state }) {
|
||||
if ((state.count + 1) % 2 === 0) {
|
||||
commit('increment')
|
||||
}
|
||||
},
|
||||
incrementAsync({ commit }) {
|
||||
return new Promise((resolve) => {
|
||||
setTimeout(() => {
|
||||
commit('increment')
|
||||
resolve()
|
||||
}, 1000)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// getters are functions.
|
||||
const getters = {
|
||||
evenOrOdd: state => state.count % 2 === 0 ? 'even' : 'odd',
|
||||
isConnected: state => state.webSocket.readyState == WebSocket.OPEN
|
||||
}
|
||||
|
||||
// A Vuex instance is created by combining the state, mutations, actions,
|
||||
// and getters.
|
||||
const store = createStore({
|
||||
state,
|
||||
getters,
|
||||
actions,
|
||||
mutations
|
||||
})
|
||||
|
||||
export default store
|
64
RpiLedBars/frontend/webapp/src/storews.js
Normal file
64
RpiLedBars/frontend/webapp/src/storews.js
Normal file
@ -0,0 +1,64 @@
|
||||
import { createStore } from "vuex";
|
||||
// import app from "main.js";
|
||||
import { getCurrentInstance } from 'vue'
|
||||
|
||||
export default createStore({
|
||||
state: {
|
||||
socket: {
|
||||
// Connection Status
|
||||
isConnected: false,
|
||||
// Message content
|
||||
message: "",
|
||||
// Reconnect error
|
||||
reconnectError: false,
|
||||
// Heartbeat message sending time
|
||||
heartBeatInterval: 50000,
|
||||
// Heartbeat timer
|
||||
heartBeatTimer: 0
|
||||
}
|
||||
},
|
||||
mutations: {
|
||||
// Connection open
|
||||
SOCKET_ONOPEN(state, event) {
|
||||
console.log(event);
|
||||
const app = getCurrentInstance()
|
||||
app.config.globalProperties.$socket = event.currentTarget;
|
||||
state.socket.isConnected = true;
|
||||
// When the connection is successful, start sending heartbeat messages regularly to avoid being disconnected by the server
|
||||
// state.socket.heartBeatTimer = setInterval(() => {
|
||||
// const message = "Heartbeat message";
|
||||
// state.socket.isConnected &&
|
||||
// app.config.globalProperties.$socket.sendObj({
|
||||
// code: 200,
|
||||
// msg: message
|
||||
// });
|
||||
// }, state.socket.heartBeatInterval);
|
||||
},
|
||||
// Connection closed
|
||||
SOCKET_ONCLOSE(state, event) {
|
||||
state.socket.isConnected = false;
|
||||
// Stop the heartbeat message when the connection is closed
|
||||
clearInterval(state.socket.heartBeatTimer);
|
||||
state.socket.heartBeatTimer = 0;
|
||||
console.log("The line is disconnected: " + new Date());
|
||||
console.log(event);
|
||||
},
|
||||
// An error occurred
|
||||
SOCKET_ONERROR(state, event) {
|
||||
console.error(state, event);
|
||||
},
|
||||
// Receive the message sent by the server
|
||||
SOCKET_ONMESSAGE(state, message) {
|
||||
state.socket.message = message;
|
||||
},
|
||||
// Auto reconnect
|
||||
SOCKET_RECONNECT(state, count) {
|
||||
console.info("消息系统重连中...", state, count);
|
||||
},
|
||||
// Reconnect error
|
||||
SOCKET_RECONNECT_ERROR(state) {
|
||||
state.socket.reconnectError = true;
|
||||
}
|
||||
},
|
||||
modules: {}
|
||||
});
|
46
RpiLedBars/frontend/webapp/src/websocket.js
Normal file
46
RpiLedBars/frontend/webapp/src/websocket.js
Normal file
@ -0,0 +1,46 @@
|
||||
const reconnect = function (options) {
|
||||
console.log("connecting")
|
||||
options.webSocket = new WebSocket("ws://192.168.4.1:8080");
|
||||
options.webSocket.onopen = function (event) {
|
||||
options.isConnected = true;
|
||||
console.log(`[open] ws: Connection established: ${event.code}`);
|
||||
};
|
||||
options.webSocket.onmessage = function (event) {
|
||||
console.log(`[message] ws: Data received from server: ${event.data}`);
|
||||
};
|
||||
options.webSocket.onclose = function (event) {
|
||||
if (event.wasClean) {
|
||||
console.log(
|
||||
`[close] ws: Connection closed cleanly, code=${event.code} reason=${event.reason}`
|
||||
);
|
||||
} else {
|
||||
console.log("[close] ws: Connection died");
|
||||
}
|
||||
options.isConnected = false;
|
||||
};
|
||||
options.webSocket.onerror = function (error) {
|
||||
console.log(`[error] ws: ${error.message}`);
|
||||
};
|
||||
}
|
||||
|
||||
// const isConnected = function () {
|
||||
// if (this.webSocket != null) {
|
||||
// console.log(this.webSocket.readyState)
|
||||
// return this.webSocket.readyState == WebSocket.OPEN
|
||||
// }
|
||||
// return false
|
||||
// }
|
||||
|
||||
import { ref } from "vue"
|
||||
|
||||
// plugins/i18n.js
|
||||
export default {
|
||||
install: (app, options) => {
|
||||
let webSocket = null;
|
||||
app.config.globalProperties.webSocket = webSocket
|
||||
app.config.globalProperties.reconnect = () => reconnect(options)
|
||||
|
||||
app.provide('ws', options)
|
||||
app.provide('isConnected', ref(options.isConnected))
|
||||
}
|
||||
}
|
14
RpiLedBars/frontend/workspace.code-workspace
Normal file
14
RpiLedBars/frontend/workspace.code-workspace
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"folders": [
|
||||
{
|
||||
"path": "webapp"
|
||||
},
|
||||
{
|
||||
"path": "vuex"
|
||||
},
|
||||
{
|
||||
"path": "web"
|
||||
}
|
||||
],
|
||||
"settings": {}
|
||||
}
|
31
RpiLedBars/hw/.gitignore
vendored
Normal file
31
RpiLedBars/hw/.gitignore
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
# For PCBs designed using KiCad: https://www.kicad.org/
|
||||
# Format documentation: https://kicad.org/help/file-formats/
|
||||
|
||||
# Temporary files
|
||||
*.000
|
||||
*.bak
|
||||
*.bck
|
||||
*.kicad_pcb-bak
|
||||
*.kicad_sch-bak
|
||||
*-backups
|
||||
*.kicad_prl
|
||||
*.sch-bak
|
||||
*~
|
||||
_autosave-*
|
||||
*.tmp
|
||||
*-save.pro
|
||||
*-save.kicad_pcb
|
||||
fp-info-cache
|
||||
~*.lck
|
||||
\#auto_saved_files#
|
||||
|
||||
# Netlist files (exported from Eeschema)
|
||||
*.net
|
||||
|
||||
# Autorouter files (exported from Pcbnew)
|
||||
*.dsn
|
||||
*.ses
|
||||
|
||||
# Exported BOM files
|
||||
*.xml
|
||||
*.csv
|
@ -1,4 +0,0 @@
|
||||
(sym_lib_table
|
||||
(lib (name 74hct245)(type Legacy)(uri ${KIPRJMOD}/LedBarsHat.symbols/74hct245.lib)(options "")(descr ""))
|
||||
(lib (name LedBarsHat-rescue)(type Legacy)(uri ${KIPRJMOD}/LedBarsHat-rescue.lib)(options "")(descr ""))
|
||||
)
|
Binary file not shown.
Binary file not shown.
0
RpiLedBars/hw/LedBarsHat/LedBarsHat.symbols/74hct245.dcm → RpiLedBars/hw/backup/LedBarsHat/LedBarsHat-rescue.dcm
Executable file → Normal file
0
RpiLedBars/hw/LedBarsHat/LedBarsHat.symbols/74hct245.dcm → RpiLedBars/hw/backup/LedBarsHat/LedBarsHat-rescue.dcm
Executable file → Normal file
3393
RpiLedBars/hw/backup/LedBarsHat/LedBarsHat-rescue.kicad_sym
Normal file
3393
RpiLedBars/hw/backup/LedBarsHat/LedBarsHat-rescue.kicad_sym
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
8601
RpiLedBars/hw/backup/LedBarsHat/LedBarsHat.kicad_pcb
Normal file
8601
RpiLedBars/hw/backup/LedBarsHat/LedBarsHat.kicad_pcb
Normal file
File diff suppressed because it is too large
Load Diff
2994
RpiLedBars/hw/LedBarsHat/LedBarsHat.kicad_pcb-bak → RpiLedBars/hw/backup/LedBarsHat/LedBarsHat.kicad_pcb-bak
Executable file → Normal file
2994
RpiLedBars/hw/LedBarsHat/LedBarsHat.kicad_pcb-bak → RpiLedBars/hw/backup/LedBarsHat/LedBarsHat.kicad_pcb-bak
Executable file → Normal file
File diff suppressed because it is too large
Load Diff
86
RpiLedBars/hw/backup/LedBarsHat/LedBarsHat.kicad_prl
Normal file
86
RpiLedBars/hw/backup/LedBarsHat/LedBarsHat.kicad_prl
Normal file
@ -0,0 +1,86 @@
|
||||
{
|
||||
"board": {
|
||||
"active_layer": 0,
|
||||
"active_layer_preset": "",
|
||||
"auto_track_width": true,
|
||||
"hidden_netclasses": [],
|
||||
"hidden_nets": [],
|
||||
"high_contrast_mode": 0,
|
||||
"net_color_mode": 1,
|
||||
"opacity": {
|
||||
"images": 0.6,
|
||||
"pads": 1.0,
|
||||
"tracks": 1.0,
|
||||
"vias": 1.0,
|
||||
"zones": 0.6
|
||||
},
|
||||
"selection_filter": {
|
||||
"dimensions": true,
|
||||
"footprints": true,
|
||||
"graphics": true,
|
||||
"keepouts": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pads": true,
|
||||
"text": true,
|
||||
"tracks": true,
|
||||
"vias": true,
|
||||
"zones": true
|
||||
},
|
||||
"visible_items": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12,
|
||||
13,
|
||||
14,
|
||||
15,
|
||||
16,
|
||||
17,
|
||||
18,
|
||||
19,
|
||||
20,
|
||||
21,
|
||||
22,
|
||||
23,
|
||||
24,
|
||||
25,
|
||||
26,
|
||||
27,
|
||||
28,
|
||||
29,
|
||||
30,
|
||||
32,
|
||||
33,
|
||||
34,
|
||||
35,
|
||||
36,
|
||||
39,
|
||||
40
|
||||
],
|
||||
"visible_layers": "fffffff_ffffffff",
|
||||
"zone_display_mode": 0
|
||||
},
|
||||
"git": {
|
||||
"repo_password": "",
|
||||
"repo_type": "",
|
||||
"repo_username": "",
|
||||
"ssh_key": ""
|
||||
},
|
||||
"meta": {
|
||||
"filename": "LedBarsHat.kicad_prl",
|
||||
"version": 3
|
||||
},
|
||||
"project": {
|
||||
"files": []
|
||||
}
|
||||
}
|
815
RpiLedBars/hw/backup/LedBarsHat/LedBarsHat.kicad_pro
Normal file
815
RpiLedBars/hw/backup/LedBarsHat/LedBarsHat.kicad_pro
Normal file
@ -0,0 +1,815 @@
|
||||
{
|
||||
"board": {
|
||||
"3dviewports": [],
|
||||
"design_settings": {
|
||||
"defaults": {
|
||||
"apply_defaults_to_fp_fields": false,
|
||||
"apply_defaults_to_fp_shapes": false,
|
||||
"apply_defaults_to_fp_text": false,
|
||||
"board_outline_line_width": 0.1,
|
||||
"copper_line_width": 0.2,
|
||||
"copper_text_italic": false,
|
||||
"copper_text_size_h": 1.5,
|
||||
"copper_text_size_v": 1.5,
|
||||
"copper_text_thickness": 0.3,
|
||||
"copper_text_upright": false,
|
||||
"courtyard_line_width": 0.05,
|
||||
"dimension_precision": 4,
|
||||
"dimension_units": 3,
|
||||
"dimensions": {
|
||||
"arrow_length": 1270000,
|
||||
"extension_offset": 500000,
|
||||
"keep_text_aligned": true,
|
||||
"suppress_zeroes": false,
|
||||
"text_position": 0,
|
||||
"units_format": 1
|
||||
},
|
||||
"fab_line_width": 0.1,
|
||||
"fab_text_italic": false,
|
||||
"fab_text_size_h": 1.0,
|
||||
"fab_text_size_v": 1.0,
|
||||
"fab_text_thickness": 0.15,
|
||||
"fab_text_upright": false,
|
||||
"other_line_width": 0.1,
|
||||
"other_text_italic": false,
|
||||
"other_text_size_h": 1.0,
|
||||
"other_text_size_v": 1.0,
|
||||
"other_text_thickness": 0.15,
|
||||
"other_text_upright": false,
|
||||
"pads": {
|
||||
"drill": 0.762,
|
||||
"height": 1.524,
|
||||
"width": 1.524
|
||||
},
|
||||
"silk_line_width": 0.15,
|
||||
"silk_text_italic": false,
|
||||
"silk_text_size_h": 1.0,
|
||||
"silk_text_size_v": 1.0,
|
||||
"silk_text_thickness": 0.15,
|
||||
"silk_text_upright": false,
|
||||
"zones": {
|
||||
"min_clearance": 0.508
|
||||
}
|
||||
},
|
||||
"diff_pair_dimensions": [],
|
||||
"drc_exclusions": [],
|
||||
"meta": {
|
||||
"filename": "board_design_settings.json",
|
||||
"version": 2
|
||||
},
|
||||
"rule_severities": {
|
||||
"annular_width": "error",
|
||||
"clearance": "error",
|
||||
"connection_width": "warning",
|
||||
"copper_edge_clearance": "error",
|
||||
"copper_sliver": "warning",
|
||||
"courtyards_overlap": "error",
|
||||
"diff_pair_gap_out_of_range": "error",
|
||||
"diff_pair_uncoupled_length_too_long": "error",
|
||||
"drill_out_of_range": "error",
|
||||
"duplicate_footprints": "warning",
|
||||
"extra_footprint": "warning",
|
||||
"footprint": "error",
|
||||
"footprint_symbol_mismatch": "warning",
|
||||
"footprint_type_mismatch": "ignore",
|
||||
"hole_clearance": "error",
|
||||
"hole_near_hole": "error",
|
||||
"holes_co_located": "warning",
|
||||
"invalid_outline": "error",
|
||||
"isolated_copper": "warning",
|
||||
"item_on_disabled_layer": "error",
|
||||
"items_not_allowed": "error",
|
||||
"length_out_of_range": "error",
|
||||
"lib_footprint_issues": "warning",
|
||||
"lib_footprint_mismatch": "warning",
|
||||
"malformed_courtyard": "error",
|
||||
"microvia_drill_out_of_range": "error",
|
||||
"missing_courtyard": "ignore",
|
||||
"missing_footprint": "warning",
|
||||
"net_conflict": "warning",
|
||||
"npth_inside_courtyard": "ignore",
|
||||
"padstack": "warning",
|
||||
"pth_inside_courtyard": "ignore",
|
||||
"shorting_items": "error",
|
||||
"silk_edge_clearance": "warning",
|
||||
"silk_over_copper": "warning",
|
||||
"silk_overlap": "warning",
|
||||
"skew_out_of_range": "error",
|
||||
"solder_mask_bridge": "error",
|
||||
"starved_thermal": "error",
|
||||
"text_height": "warning",
|
||||
"text_thickness": "warning",
|
||||
"through_hole_pad_without_hole": "error",
|
||||
"too_many_vias": "error",
|
||||
"track_dangling": "warning",
|
||||
"track_width": "error",
|
||||
"tracks_crossing": "error",
|
||||
"unconnected_items": "error",
|
||||
"unresolved_variable": "error",
|
||||
"via_dangling": "warning",
|
||||
"zones_intersect": "error"
|
||||
},
|
||||
"rules": {
|
||||
"max_error": 0.005,
|
||||
"min_clearance": 0.0,
|
||||
"min_connection": 0.0,
|
||||
"min_copper_edge_clearance": 0.0,
|
||||
"min_hole_clearance": 0.25,
|
||||
"min_hole_to_hole": 0.25,
|
||||
"min_microvia_diameter": 0.2,
|
||||
"min_microvia_drill": 0.1,
|
||||
"min_resolved_spokes": 2,
|
||||
"min_silk_clearance": 0.0,
|
||||
"min_text_height": 0.8,
|
||||
"min_text_thickness": 0.08,
|
||||
"min_through_hole_diameter": 0.3,
|
||||
"min_track_width": 0.2,
|
||||
"min_via_annular_width": 0.1,
|
||||
"min_via_diameter": 0.4,
|
||||
"solder_mask_to_copper_clearance": 0.0,
|
||||
"use_height_for_length_calcs": true
|
||||
},
|
||||
"teardrop_options": [
|
||||
{
|
||||
"td_onpadsmd": true,
|
||||
"td_onroundshapesonly": false,
|
||||
"td_ontrackend": false,
|
||||
"td_onviapad": true
|
||||
}
|
||||
],
|
||||
"teardrop_parameters": [
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_round_shape",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
},
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_rect_shape",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
},
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_track_end",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
}
|
||||
],
|
||||
"track_widths": [],
|
||||
"tuning_pattern_settings": {
|
||||
"diff_pair_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 1.0
|
||||
},
|
||||
"diff_pair_skew_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 0.6
|
||||
},
|
||||
"single_track_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 0.6
|
||||
}
|
||||
},
|
||||
"via_dimensions": [],
|
||||
"zones_allow_external_fillets": false
|
||||
},
|
||||
"ipc2581": {
|
||||
"dist": "",
|
||||
"distpn": "",
|
||||
"internal_id": "",
|
||||
"mfg": "",
|
||||
"mpn": ""
|
||||
},
|
||||
"layer_presets": [],
|
||||
"viewports": []
|
||||
},
|
||||
"boards": [],
|
||||
"cvpcb": {
|
||||
"equivalence_files": []
|
||||
},
|
||||
"erc": {
|
||||
"erc_exclusions": [],
|
||||
"meta": {
|
||||
"version": 0
|
||||
},
|
||||
"pin_map": [
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
2,
|
||||
1,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
1,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
]
|
||||
],
|
||||
"rule_severities": {
|
||||
"bus_definition_conflict": "error",
|
||||
"bus_entry_needed": "error",
|
||||
"bus_to_bus_conflict": "error",
|
||||
"bus_to_net_conflict": "error",
|
||||
"conflicting_netclasses": "error",
|
||||
"different_unit_footprint": "error",
|
||||
"different_unit_net": "error",
|
||||
"duplicate_reference": "error",
|
||||
"duplicate_sheet_names": "error",
|
||||
"endpoint_off_grid": "warning",
|
||||
"extra_units": "error",
|
||||
"global_label_dangling": "warning",
|
||||
"hier_label_mismatch": "error",
|
||||
"label_dangling": "error",
|
||||
"lib_symbol_issues": "warning",
|
||||
"missing_bidi_pin": "warning",
|
||||
"missing_input_pin": "warning",
|
||||
"missing_power_pin": "error",
|
||||
"missing_unit": "warning",
|
||||
"multiple_net_names": "warning",
|
||||
"net_not_bus_member": "warning",
|
||||
"no_connect_connected": "warning",
|
||||
"no_connect_dangling": "warning",
|
||||
"pin_not_connected": "error",
|
||||
"pin_not_driven": "error",
|
||||
"pin_to_pin": "warning",
|
||||
"power_pin_not_driven": "error",
|
||||
"similar_labels": "warning",
|
||||
"simulation_model_issue": "ignore",
|
||||
"unannotated": "error",
|
||||
"unit_value_mismatch": "error",
|
||||
"unresolved_variable": "error",
|
||||
"wire_dangling": "error"
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"pinned_footprint_libs": [],
|
||||
"pinned_symbol_libs": []
|
||||
},
|
||||
"meta": {
|
||||
"filename": "LedBarsHat.kicad_pro",
|
||||
"version": 1
|
||||
},
|
||||
"net_settings": {
|
||||
"classes": [
|
||||
{
|
||||
"bus_width": 12,
|
||||
"clearance": 0.2,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "Default",
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.25,
|
||||
"via_diameter": 0.8,
|
||||
"via_drill": 0.4,
|
||||
"wire_width": 6
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"version": 3
|
||||
},
|
||||
"net_colors": null,
|
||||
"netclass_assignments": null,
|
||||
"netclass_patterns": [
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "+12V"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "+3V3"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "+5V"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/I2S_CLK"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/I2S_SD"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/I2S_WS"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/SEL_MODE0"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/SEL_MODE1"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/SEL_MODE2"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/SEL_MODE3"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/SMI_SD0"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/SMI_SD1"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/SMI_SD13"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/SMI_SD14"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/SMI_SD15"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/SMI_SD16"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/SMI_SD17"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/SMI_SD2"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/SMI_SD3"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/SMI_SD4"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/SMI_SD5"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/SMI_SD6"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/SMI_SD7"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/SMI_SD8"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "/SMI_SD9"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "GND"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(J1-Pad13)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(J1-Pad26)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(J1-Pad27)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(J1-Pad28)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(J1-Pad3)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(J1-Pad5)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(J1-Pad7)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(J_OUT1-Pad1)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(J_OUT1-Pad2)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(J_OUT1-Pad3)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(J_OUT1-Pad4)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(J_OUT1-Pad5)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(J_OUT1-Pad6)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(J_OUT1-Pad7)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(J_OUT1-Pad8)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(J_OUT2-Pad1)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(J_OUT2-Pad2)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(J_OUT2-Pad3)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(J_OUT2-Pad4)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(J_OUT2-Pad5)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(J_OUT2-Pad6)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(J_OUT2-Pad7)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(J_OUT2-Pad8)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(OUT_5V1-Pad2)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(OUT_5V1-Pad3)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(OUT_5V1-Pad5)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(R1-Pad1)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(R2-Pad2)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(R3-Pad1)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "Net-(U1-Pad9)"
|
||||
},
|
||||
{
|
||||
"netclass": "Default",
|
||||
"pattern": "VCC"
|
||||
}
|
||||
]
|
||||
},
|
||||
"pcbnew": {
|
||||
"last_paths": {
|
||||
"gencad": "",
|
||||
"idf": "",
|
||||
"netlist": "",
|
||||
"plot": "",
|
||||
"pos_files": "",
|
||||
"specctra_dsn": "",
|
||||
"step": "",
|
||||
"svg": "",
|
||||
"vrml": ""
|
||||
},
|
||||
"page_layout_descr_file": ""
|
||||
},
|
||||
"schematic": {
|
||||
"annotate_start_num": 0,
|
||||
"bom_export_filename": "",
|
||||
"bom_fmt_presets": [],
|
||||
"bom_fmt_settings": {
|
||||
"field_delimiter": ",",
|
||||
"keep_line_breaks": false,
|
||||
"keep_tabs": false,
|
||||
"name": "CSV",
|
||||
"ref_delimiter": ",",
|
||||
"ref_range_delimiter": "",
|
||||
"string_delimiter": "\""
|
||||
},
|
||||
"bom_presets": [],
|
||||
"bom_settings": {
|
||||
"exclude_dnp": false,
|
||||
"fields_ordered": [
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Reference",
|
||||
"name": "Reference",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Value",
|
||||
"name": "Value",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Datasheet",
|
||||
"name": "Datasheet",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Footprint",
|
||||
"name": "Footprint",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Qty",
|
||||
"name": "${QUANTITY}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "DNP",
|
||||
"name": "${DNP}",
|
||||
"show": true
|
||||
}
|
||||
],
|
||||
"filter_string": "",
|
||||
"group_symbols": true,
|
||||
"name": "Grouped By Value",
|
||||
"sort_asc": true,
|
||||
"sort_field": "Reference"
|
||||
},
|
||||
"connection_grid_size": 50.0,
|
||||
"drawing": {
|
||||
"dashed_lines_dash_length_ratio": 12.0,
|
||||
"dashed_lines_gap_length_ratio": 3.0,
|
||||
"default_line_thickness": 6.0,
|
||||
"default_text_size": 50.0,
|
||||
"field_names": [],
|
||||
"intersheets_ref_own_page": false,
|
||||
"intersheets_ref_prefix": "",
|
||||
"intersheets_ref_short": false,
|
||||
"intersheets_ref_show": false,
|
||||
"intersheets_ref_suffix": "",
|
||||
"junction_size_choice": 3,
|
||||
"label_size_ratio": 0.25,
|
||||
"operating_point_overlay_i_precision": 3,
|
||||
"operating_point_overlay_i_range": "~A",
|
||||
"operating_point_overlay_v_precision": 3,
|
||||
"operating_point_overlay_v_range": "~V",
|
||||
"overbar_offset_ratio": 1.23,
|
||||
"pin_symbol_size": 0.0,
|
||||
"text_offset_ratio": 0.08
|
||||
},
|
||||
"legacy_lib_dir": "",
|
||||
"legacy_lib_list": [],
|
||||
"meta": {
|
||||
"version": 1
|
||||
},
|
||||
"net_format_name": "Pcbnew",
|
||||
"page_layout_descr_file": "",
|
||||
"plot_directory": "",
|
||||
"spice_adjust_passive_values": false,
|
||||
"spice_current_sheet_as_root": false,
|
||||
"spice_external_command": "spice \"%I\"",
|
||||
"spice_model_current_sheet_as_root": true,
|
||||
"spice_save_all_currents": false,
|
||||
"spice_save_all_dissipations": false,
|
||||
"spice_save_all_voltages": false,
|
||||
"subpart_first_id": 65,
|
||||
"subpart_id_separator": 0
|
||||
},
|
||||
"sheets": [
|
||||
[
|
||||
"aba859fc-9301-4741-846d-2fb5d7891b38",
|
||||
"Root"
|
||||
]
|
||||
],
|
||||
"text_variables": {}
|
||||
}
|
11186
RpiLedBars/hw/backup/LedBarsHat/LedBarsHat.kicad_sch
Normal file
11186
RpiLedBars/hw/backup/LedBarsHat/LedBarsHat.kicad_sch
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,402 +1,402 @@
|
||||
(export (version D)
|
||||
(design
|
||||
(source D:\Windows\Projects\Embedded\LedBars\RpiLedBars\hw\LedBarsHat\LedBarsHat.sch)
|
||||
(date "05/10/21 10:56:17")
|
||||
(tool "Eeschema (5.1.10)-1")
|
||||
(sheet (number 1) (name /) (tstamps /)
|
||||
(title_block
|
||||
(title LedBarsHat)
|
||||
(company)
|
||||
(rev)
|
||||
(date)
|
||||
(source LedBarsHat.sch)
|
||||
(comment (number 1) (value ""))
|
||||
(comment (number 2) (value ""))
|
||||
(comment (number 3) (value ""))
|
||||
(comment (number 4) (value "")))))
|
||||
(components
|
||||
(comp (ref U2)
|
||||
(value 74HCT245)
|
||||
(footprint Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm)
|
||||
(libsource (lib 74hct245) (part 74HCT245) (description ""))
|
||||
(sheetpath (names /) (tstamps /))
|
||||
(tstamp 60990192))
|
||||
(comp (ref J4)
|
||||
(value Conn_01x02_Male)
|
||||
(footprint Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical)
|
||||
(datasheet ~)
|
||||
(libsource (lib Connector) (part Conn_01x02_Male) (description "Generic connector, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)"))
|
||||
(sheetpath (names /) (tstamps /))
|
||||
(tstamp 6099C84A))
|
||||
(comp (ref J2)
|
||||
(value Conn_01x02_Female)
|
||||
(footprint Connector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_Vertical)
|
||||
(datasheet ~)
|
||||
(libsource (lib Connector) (part Conn_01x02_Female) (description "Generic connector, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)"))
|
||||
(sheetpath (names /) (tstamps /))
|
||||
(tstamp 6099CF4C))
|
||||
(comp (ref R2)
|
||||
(value R)
|
||||
(footprint Resistor_SMD:R_2010_5025Metric_Pad1.40x2.65mm_HandSolder)
|
||||
(datasheet ~)
|
||||
(libsource (lib Device) (part R) (description Resistor))
|
||||
(sheetpath (names /) (tstamps /))
|
||||
(tstamp 609B10BD))
|
||||
(comp (ref J1)
|
||||
(value USB_A)
|
||||
(footprint Connector_USB:USB_A_CONNFLY_DS1095-WNR0)
|
||||
(datasheet " ~")
|
||||
(libsource (lib Connector) (part USB_A) (description "USB Type A connector"))
|
||||
(sheetpath (names /) (tstamps /))
|
||||
(tstamp 60994FCE))
|
||||
(comp (ref R1)
|
||||
(value R)
|
||||
(footprint Resistor_SMD:R_2010_5025Metric_Pad1.40x2.65mm_HandSolder)
|
||||
(datasheet ~)
|
||||
(libsource (lib Device) (part R) (description Resistor))
|
||||
(sheetpath (names /) (tstamps /))
|
||||
(tstamp 609AF147))
|
||||
(comp (ref J5)
|
||||
(value Jack-DC)
|
||||
(footprint Connector_BarrelJack:BarrelJack_Wuerth_6941xx301002)
|
||||
(datasheet ~)
|
||||
(libsource (lib Connector) (part Jack-DC) (description "DC Barrel Jack"))
|
||||
(sheetpath (names /) (tstamps /))
|
||||
(tstamp 6099631E))
|
||||
(comp (ref MK1)
|
||||
(value MP45DT02)
|
||||
(footprint Package_DIP:DIP-6_W7.62mm)
|
||||
(datasheet http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00025467.pdf)
|
||||
(libsource (lib Sensor_Audio) (part MP45DT02) (description "MEMS Omnidirectional Digital Microphone, HLGA-6"))
|
||||
(sheetpath (names /) (tstamps /))
|
||||
(tstamp 609D01E4))
|
||||
(comp (ref J3)
|
||||
(value Raspberry_Pi_2_3)
|
||||
(footprint Connector_PinSocket_2.54mm:PinSocket_2x20_P2.54mm_Vertical)
|
||||
(datasheet https://www.raspberrypi.org/documentation/hardware/raspberrypi/schematics/rpi_SCH_3bplus_1p0_reduced.pdf)
|
||||
(libsource (lib Connector) (part Raspberry_Pi_2_3) (description "expansion header for Raspberry Pi 2 & 3"))
|
||||
(sheetpath (names /) (tstamps /))
|
||||
(tstamp 60988C0F))
|
||||
(comp (ref U1)
|
||||
(value 74HCT245)
|
||||
(footprint Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm)
|
||||
(libsource (lib 74hct245) (part 74HCT245) (description ""))
|
||||
(sheetpath (names /) (tstamps /))
|
||||
(tstamp 6098F41C)))
|
||||
(libparts
|
||||
(libpart (lib 74hct245) (part 74HCT245)
|
||||
(fields
|
||||
(field (name Reference) U)
|
||||
(field (name Value) 74HCT245)
|
||||
(field (name Footprint) Housings_SOIC:SOIC-20_7.5x12.8mm_Pitch1.27mm))
|
||||
(pins
|
||||
(pin (num 1) (name A->B) (type input))
|
||||
(pin (num 2) (name A0) (type 3state))
|
||||
(pin (num 3) (name A1) (type 3state))
|
||||
(pin (num 4) (name A2) (type 3state))
|
||||
(pin (num 5) (name A3) (type 3state))
|
||||
(pin (num 6) (name A4) (type 3state))
|
||||
(pin (num 7) (name A5) (type 3state))
|
||||
(pin (num 8) (name A6) (type 3state))
|
||||
(pin (num 9) (name A7) (type 3state))
|
||||
(pin (num 10) (name GND) (type power_in))
|
||||
(pin (num 11) (name B7) (type 3state))
|
||||
(pin (num 12) (name B6) (type 3state))
|
||||
(pin (num 13) (name B5) (type 3state))
|
||||
(pin (num 14) (name B4) (type 3state))
|
||||
(pin (num 15) (name B3) (type 3state))
|
||||
(pin (num 16) (name B2) (type 3state))
|
||||
(pin (num 17) (name B1) (type 3state))
|
||||
(pin (num 18) (name B0) (type 3state))
|
||||
(pin (num 19) (name CE) (type input))
|
||||
(pin (num 20) (name VCC) (type power_in))))
|
||||
(libpart (lib Connector) (part Barrel_Jack)
|
||||
(aliases
|
||||
(alias Jack-DC))
|
||||
(description "DC Barrel Jack")
|
||||
(docs ~)
|
||||
(footprints
|
||||
(fp BarrelJack*))
|
||||
(fields
|
||||
(field (name Reference) J)
|
||||
(field (name Value) Barrel_Jack))
|
||||
(pins
|
||||
(pin (num 1) (name ~) (type passive))
|
||||
(pin (num 2) (name ~) (type passive))))
|
||||
(libpart (lib Connector) (part Conn_01x02_Female)
|
||||
(description "Generic connector, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)")
|
||||
(docs ~)
|
||||
(footprints
|
||||
(fp Connector*:*_1x??_*))
|
||||
(fields
|
||||
(field (name Reference) J)
|
||||
(field (name Value) Conn_01x02_Female))
|
||||
(pins
|
||||
(pin (num 1) (name Pin_1) (type passive))
|
||||
(pin (num 2) (name Pin_2) (type passive))))
|
||||
(libpart (lib Connector) (part Conn_01x02_Male)
|
||||
(description "Generic connector, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)")
|
||||
(docs ~)
|
||||
(footprints
|
||||
(fp Connector*:*_1x??_*))
|
||||
(fields
|
||||
(field (name Reference) J)
|
||||
(field (name Value) Conn_01x02_Male))
|
||||
(pins
|
||||
(pin (num 1) (name Pin_1) (type passive))
|
||||
(pin (num 2) (name Pin_2) (type passive))))
|
||||
(libpart (lib Connector) (part Raspberry_Pi_2_3)
|
||||
(description "expansion header for Raspberry Pi 2 & 3")
|
||||
(docs https://www.raspberrypi.org/documentation/hardware/raspberrypi/schematics/rpi_SCH_3bplus_1p0_reduced.pdf)
|
||||
(footprints
|
||||
(fp PinHeader*2x20*P2.54mm*Vertical*)
|
||||
(fp PinSocket*2x20*P2.54mm*Vertical*))
|
||||
(fields
|
||||
(field (name Reference) J)
|
||||
(field (name Value) Raspberry_Pi_2_3))
|
||||
(pins
|
||||
(pin (num 1) (name 3V3) (type power_in))
|
||||
(pin (num 2) (name 5V) (type power_in))
|
||||
(pin (num 3) (name SDA/GPIO2) (type BiDi))
|
||||
(pin (num 4) (name 5V) (type power_in))
|
||||
(pin (num 5) (name SCL/GPIO3) (type BiDi))
|
||||
(pin (num 6) (name GND) (type power_in))
|
||||
(pin (num 7) (name GCLK0/GPIO4) (type BiDi))
|
||||
(pin (num 8) (name GPIO14/TXD) (type BiDi))
|
||||
(pin (num 9) (name GND) (type power_in))
|
||||
(pin (num 10) (name GPIO15/RXD) (type BiDi))
|
||||
(pin (num 11) (name GPIO17) (type BiDi))
|
||||
(pin (num 12) (name GPIO18/PWM0) (type BiDi))
|
||||
(pin (num 13) (name GPIO27) (type BiDi))
|
||||
(pin (num 14) (name GND) (type power_in))
|
||||
(pin (num 15) (name GPIO22) (type BiDi))
|
||||
(pin (num 16) (name GPIO23) (type BiDi))
|
||||
(pin (num 17) (name 3V3) (type power_in))
|
||||
(pin (num 18) (name GPIO24) (type BiDi))
|
||||
(pin (num 19) (name MOSI0/GPIO10) (type BiDi))
|
||||
(pin (num 20) (name GND) (type power_in))
|
||||
(pin (num 21) (name MISO0/GPIO9) (type BiDi))
|
||||
(pin (num 22) (name GPIO25) (type BiDi))
|
||||
(pin (num 23) (name SCLK0/GPIO11) (type BiDi))
|
||||
(pin (num 24) (name ~CE0~/GPIO8) (type BiDi))
|
||||
(pin (num 25) (name GND) (type power_in))
|
||||
(pin (num 26) (name ~CE1~/GPIO7) (type BiDi))
|
||||
(pin (num 27) (name ID_SD/GPIO0) (type BiDi))
|
||||
(pin (num 28) (name ID_SC/GPIO1) (type BiDi))
|
||||
(pin (num 29) (name GCLK1/GPIO5) (type BiDi))
|
||||
(pin (num 30) (name GND) (type power_in))
|
||||
(pin (num 31) (name GCLK2/GPIO6) (type BiDi))
|
||||
(pin (num 32) (name PWM0/GPIO12) (type BiDi))
|
||||
(pin (num 33) (name PWM1/GPIO13) (type BiDi))
|
||||
(pin (num 34) (name GND) (type power_in))
|
||||
(pin (num 35) (name GPIO19/MISO1) (type BiDi))
|
||||
(pin (num 36) (name GPIO16) (type BiDi))
|
||||
(pin (num 37) (name GPIO26) (type BiDi))
|
||||
(pin (num 38) (name GPIO20/MOSI1) (type BiDi))
|
||||
(pin (num 39) (name GND) (type power_in))
|
||||
(pin (num 40) (name GPIO21/SCLK1) (type BiDi))))
|
||||
(libpart (lib Connector) (part USB_A)
|
||||
(description "USB Type A connector")
|
||||
(docs " ~")
|
||||
(footprints
|
||||
(fp USB*))
|
||||
(fields
|
||||
(field (name Reference) J)
|
||||
(field (name Value) USB_A))
|
||||
(pins
|
||||
(pin (num 1) (name VBUS) (type power_in))
|
||||
(pin (num 2) (name D-) (type BiDi))
|
||||
(pin (num 3) (name D+) (type BiDi))
|
||||
(pin (num 4) (name GND) (type power_in))
|
||||
(pin (num 5) (name Shield) (type passive))))
|
||||
(libpart (lib Device) (part R)
|
||||
(description Resistor)
|
||||
(docs ~)
|
||||
(footprints
|
||||
(fp R_*))
|
||||
(fields
|
||||
(field (name Reference) R)
|
||||
(field (name Value) R))
|
||||
(pins
|
||||
(pin (num 1) (name ~) (type passive))
|
||||
(pin (num 2) (name ~) (type passive))))
|
||||
(libpart (lib Sensor_Audio) (part MP45DT02)
|
||||
(description "MEMS Omnidirectional Digital Microphone, HLGA-6")
|
||||
(docs http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00025467.pdf)
|
||||
(footprints
|
||||
(fp ST*HLGA*3.76x4.72mm*P1.65mm*))
|
||||
(fields
|
||||
(field (name Reference) MK)
|
||||
(field (name Value) MP45DT02)
|
||||
(field (name Footprint) Sensor_Audio:ST_HLGA-6_3.76x4.72mm_P1.65mm))
|
||||
(pins
|
||||
(pin (num 1) (name GND) (type power_in))
|
||||
(pin (num 2) (name LR) (type input))
|
||||
(pin (num 3) (name GND) (type passive))
|
||||
(pin (num 4) (name CLK) (type input))
|
||||
(pin (num 5) (name DOUT) (type output))
|
||||
(pin (num 6) (name VDD) (type power_in)))))
|
||||
(libraries
|
||||
(library (logical 74hct245)
|
||||
(uri D:/Windows/Paquito/Downloads/myelin-kicad-libraries-master/74hct245.lib))
|
||||
(library (logical Connector)
|
||||
(uri "C:\\Program Files\\KiCad\\share\\kicad\\library/Connector.lib"))
|
||||
(library (logical Device)
|
||||
(uri "C:\\Program Files\\KiCad\\share\\kicad\\library/Device.lib"))
|
||||
(library (logical Sensor_Audio)
|
||||
(uri "C:\\Program Files\\KiCad\\share\\kicad\\library/Sensor_Audio.lib")))
|
||||
(nets
|
||||
(net (code 1) (name VCC)
|
||||
(node (ref R2) (pin 2))
|
||||
(node (ref J2) (pin 1))
|
||||
(node (ref U2) (pin 20))
|
||||
(node (ref J1) (pin 1))
|
||||
(node (ref U1) (pin 20))
|
||||
(node (ref J3) (pin 4))
|
||||
(node (ref J3) (pin 2))
|
||||
(node (ref R1) (pin 1)))
|
||||
(net (code 2) (name GND)
|
||||
(node (ref J1) (pin 4))
|
||||
(node (ref U2) (pin 10))
|
||||
(node (ref J3) (pin 9))
|
||||
(node (ref J3) (pin 6))
|
||||
(node (ref J3) (pin 39))
|
||||
(node (ref J3) (pin 34))
|
||||
(node (ref J3) (pin 20))
|
||||
(node (ref J3) (pin 30))
|
||||
(node (ref J3) (pin 25))
|
||||
(node (ref U1) (pin 19))
|
||||
(node (ref J5) (pin 2))
|
||||
(node (ref J2) (pin 2))
|
||||
(node (ref J4) (pin 2))
|
||||
(node (ref U2) (pin 19))
|
||||
(node (ref J3) (pin 14))
|
||||
(node (ref U1) (pin 10))
|
||||
(node (ref MK1) (pin 3))
|
||||
(node (ref MK1) (pin 1)))
|
||||
(net (code 3) (name /I2S_WS)
|
||||
(node (ref J3) (pin 35))
|
||||
(node (ref MK1) (pin 2)))
|
||||
(net (code 4) (name /I2S_SD)
|
||||
(node (ref MK1) (pin 5))
|
||||
(node (ref J3) (pin 38)))
|
||||
(net (code 5) (name /SMI_SD15)
|
||||
(node (ref J3) (pin 16))
|
||||
(node (ref U2) (pin 4)))
|
||||
(net (code 6) (name /SMI_SD14)
|
||||
(node (ref U1) (pin 8))
|
||||
(node (ref J3) (pin 15)))
|
||||
(net (code 7) (name "Net-(J3-Pad13)")
|
||||
(node (ref J3) (pin 13)))
|
||||
(net (code 8) (name /I2S_CLK)
|
||||
(node (ref MK1) (pin 4))
|
||||
(node (ref J3) (pin 12)))
|
||||
(net (code 9) (name /SMI_SD9)
|
||||
(node (ref U1) (pin 9))
|
||||
(node (ref J3) (pin 11)))
|
||||
(net (code 10) (name /SMI_SD7)
|
||||
(node (ref J3) (pin 10))
|
||||
(node (ref U2) (pin 3)))
|
||||
(net (code 11) (name +3V3)
|
||||
(node (ref MK1) (pin 6))
|
||||
(node (ref J3) (pin 17))
|
||||
(node (ref J3) (pin 1)))
|
||||
(net (code 12) (name "Net-(J3-Pad27)")
|
||||
(node (ref J3) (pin 27)))
|
||||
(net (code 13) (name "Net-(J3-Pad37)")
|
||||
(node (ref J3) (pin 37)))
|
||||
(net (code 14) (name "Net-(J3-Pad28)")
|
||||
(node (ref J3) (pin 28)))
|
||||
(net (code 15) (name "Net-(J3-Pad26)")
|
||||
(node (ref J3) (pin 26)))
|
||||
(net (code 16) (name /SMI_SD16)
|
||||
(node (ref U2) (pin 5))
|
||||
(node (ref J3) (pin 18)))
|
||||
(net (code 17) (name "Net-(J3-Pad3)")
|
||||
(node (ref J3) (pin 3)))
|
||||
(net (code 18) (name "Net-(J3-Pad5)")
|
||||
(node (ref J3) (pin 5)))
|
||||
(net (code 19) (name "Net-(J3-Pad7)")
|
||||
(node (ref J3) (pin 7)))
|
||||
(net (code 20) (name "Net-(J3-Pad29)")
|
||||
(node (ref J3) (pin 29)))
|
||||
(net (code 21) (name "Net-(J3-Pad31)")
|
||||
(node (ref J3) (pin 31)))
|
||||
(net (code 22) (name +12V)
|
||||
(node (ref J4) (pin 1))
|
||||
(node (ref J5) (pin 1)))
|
||||
(net (code 23) (name "Net-(R1-Pad2)")
|
||||
(node (ref R1) (pin 2))
|
||||
(node (ref U1) (pin 1)))
|
||||
(net (code 24) (name "Net-(U1-Pad15)")
|
||||
(node (ref U1) (pin 15)))
|
||||
(net (code 25) (name "Net-(U1-Pad18)")
|
||||
(node (ref U1) (pin 18)))
|
||||
(net (code 26) (name "Net-(U1-Pad17)")
|
||||
(node (ref U1) (pin 17)))
|
||||
(net (code 27) (name "Net-(U1-Pad16)")
|
||||
(node (ref U1) (pin 16)))
|
||||
(net (code 28) (name "Net-(U1-Pad14)")
|
||||
(node (ref U1) (pin 14)))
|
||||
(net (code 29) (name "Net-(U1-Pad13)")
|
||||
(node (ref U1) (pin 13)))
|
||||
(net (code 30) (name "Net-(U1-Pad12)")
|
||||
(node (ref U1) (pin 12)))
|
||||
(net (code 31) (name "Net-(U1-Pad11)")
|
||||
(node (ref U1) (pin 11)))
|
||||
(net (code 32) (name /SMI_SD4)
|
||||
(node (ref J3) (pin 32))
|
||||
(node (ref U2) (pin 8)))
|
||||
(net (code 33) (name /SMI_SD5)
|
||||
(node (ref J3) (pin 33))
|
||||
(node (ref U1) (pin 4)))
|
||||
(net (code 34) (name /SMI_SD0)
|
||||
(node (ref J3) (pin 24))
|
||||
(node (ref U2) (pin 7)))
|
||||
(net (code 35) (name /SMI_SD3)
|
||||
(node (ref J3) (pin 23))
|
||||
(node (ref U1) (pin 5)))
|
||||
(net (code 36) (name /SMI_SD17)
|
||||
(node (ref U2) (pin 6))
|
||||
(node (ref J3) (pin 22)))
|
||||
(net (code 37) (name /SMI_SD1)
|
||||
(node (ref J3) (pin 21))
|
||||
(node (ref U1) (pin 6)))
|
||||
(net (code 38) (name /SMI_SD2)
|
||||
(node (ref J3) (pin 19))
|
||||
(node (ref U1) (pin 7)))
|
||||
(net (code 39) (name /SMI_SD8)
|
||||
(node (ref J3) (pin 36))
|
||||
(node (ref U2) (pin 9)))
|
||||
(net (code 40) (name /SMI_SD13)
|
||||
(node (ref U1) (pin 2))
|
||||
(node (ref J3) (pin 40))
|
||||
(node (ref U1) (pin 3)))
|
||||
(net (code 41) (name /SMI_SD6)
|
||||
(node (ref J3) (pin 8))
|
||||
(node (ref U2) (pin 2)))
|
||||
(net (code 42) (name "Net-(J1-Pad5)")
|
||||
(node (ref J1) (pin 5)))
|
||||
(net (code 43) (name "Net-(J1-Pad3)")
|
||||
(node (ref J1) (pin 3)))
|
||||
(net (code 44) (name "Net-(J1-Pad2)")
|
||||
(node (ref J1) (pin 2)))
|
||||
(net (code 45) (name "Net-(R2-Pad1)")
|
||||
(node (ref U2) (pin 1))
|
||||
(node (ref R2) (pin 1)))
|
||||
(net (code 46) (name "Net-(U2-Pad16)")
|
||||
(node (ref U2) (pin 16)))
|
||||
(net (code 47) (name "Net-(U2-Pad17)")
|
||||
(node (ref U2) (pin 17)))
|
||||
(net (code 48) (name "Net-(U2-Pad18)")
|
||||
(node (ref U2) (pin 18)))
|
||||
(net (code 49) (name "Net-(U2-Pad15)")
|
||||
(node (ref U2) (pin 15)))
|
||||
(net (code 50) (name "Net-(U2-Pad14)")
|
||||
(node (ref U2) (pin 14)))
|
||||
(net (code 51) (name "Net-(U2-Pad13)")
|
||||
(node (ref U2) (pin 13)))
|
||||
(net (code 52) (name "Net-(U2-Pad12)")
|
||||
(node (ref U2) (pin 12)))
|
||||
(net (code 53) (name "Net-(U2-Pad11)")
|
||||
(export (version D)
|
||||
(design
|
||||
(source D:\Windows\Projects\Embedded\LedBars\RpiLedBars\hw\LedBarsHat\LedBarsHat.sch)
|
||||
(date "05/10/21 10:56:17")
|
||||
(tool "Eeschema (5.1.10)-1")
|
||||
(sheet (number 1) (name /) (tstamps /)
|
||||
(title_block
|
||||
(title LedBarsHat)
|
||||
(company)
|
||||
(rev)
|
||||
(date)
|
||||
(source LedBarsHat.sch)
|
||||
(comment (number 1) (value ""))
|
||||
(comment (number 2) (value ""))
|
||||
(comment (number 3) (value ""))
|
||||
(comment (number 4) (value "")))))
|
||||
(components
|
||||
(comp (ref U2)
|
||||
(value 74HCT245)
|
||||
(footprint Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm)
|
||||
(libsource (lib 74hct245) (part 74HCT245) (description ""))
|
||||
(sheetpath (names /) (tstamps /))
|
||||
(tstamp 60990192))
|
||||
(comp (ref J4)
|
||||
(value Conn_01x02_Male)
|
||||
(footprint Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical)
|
||||
(datasheet ~)
|
||||
(libsource (lib Connector) (part Conn_01x02_Male) (description "Generic connector, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)"))
|
||||
(sheetpath (names /) (tstamps /))
|
||||
(tstamp 6099C84A))
|
||||
(comp (ref J2)
|
||||
(value Conn_01x02_Female)
|
||||
(footprint Connector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_Vertical)
|
||||
(datasheet ~)
|
||||
(libsource (lib Connector) (part Conn_01x02_Female) (description "Generic connector, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)"))
|
||||
(sheetpath (names /) (tstamps /))
|
||||
(tstamp 6099CF4C))
|
||||
(comp (ref R2)
|
||||
(value R)
|
||||
(footprint Resistor_SMD:R_2010_5025Metric_Pad1.40x2.65mm_HandSolder)
|
||||
(datasheet ~)
|
||||
(libsource (lib Device) (part R) (description Resistor))
|
||||
(sheetpath (names /) (tstamps /))
|
||||
(tstamp 609B10BD))
|
||||
(comp (ref J1)
|
||||
(value USB_A)
|
||||
(footprint Connector_USB:USB_A_CONNFLY_DS1095-WNR0)
|
||||
(datasheet " ~")
|
||||
(libsource (lib Connector) (part USB_A) (description "USB Type A connector"))
|
||||
(sheetpath (names /) (tstamps /))
|
||||
(tstamp 60994FCE))
|
||||
(comp (ref R1)
|
||||
(value R)
|
||||
(footprint Resistor_SMD:R_2010_5025Metric_Pad1.40x2.65mm_HandSolder)
|
||||
(datasheet ~)
|
||||
(libsource (lib Device) (part R) (description Resistor))
|
||||
(sheetpath (names /) (tstamps /))
|
||||
(tstamp 609AF147))
|
||||
(comp (ref J5)
|
||||
(value Jack-DC)
|
||||
(footprint Connector_BarrelJack:BarrelJack_Wuerth_6941xx301002)
|
||||
(datasheet ~)
|
||||
(libsource (lib Connector) (part Jack-DC) (description "DC Barrel Jack"))
|
||||
(sheetpath (names /) (tstamps /))
|
||||
(tstamp 6099631E))
|
||||
(comp (ref MK1)
|
||||
(value MP45DT02)
|
||||
(footprint Package_DIP:DIP-6_W7.62mm)
|
||||
(datasheet http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00025467.pdf)
|
||||
(libsource (lib Sensor_Audio) (part MP45DT02) (description "MEMS Omnidirectional Digital Microphone, HLGA-6"))
|
||||
(sheetpath (names /) (tstamps /))
|
||||
(tstamp 609D01E4))
|
||||
(comp (ref J3)
|
||||
(value Raspberry_Pi_2_3)
|
||||
(footprint Connector_PinSocket_2.54mm:PinSocket_2x20_P2.54mm_Vertical)
|
||||
(datasheet https://www.raspberrypi.org/documentation/hardware/raspberrypi/schematics/rpi_SCH_3bplus_1p0_reduced.pdf)
|
||||
(libsource (lib Connector) (part Raspberry_Pi_2_3) (description "expansion header for Raspberry Pi 2 & 3"))
|
||||
(sheetpath (names /) (tstamps /))
|
||||
(tstamp 60988C0F))
|
||||
(comp (ref U1)
|
||||
(value 74HCT245)
|
||||
(footprint Package_SO:TSSOP-20_4.4x6.5mm_P0.65mm)
|
||||
(libsource (lib 74hct245) (part 74HCT245) (description ""))
|
||||
(sheetpath (names /) (tstamps /))
|
||||
(tstamp 6098F41C)))
|
||||
(libparts
|
||||
(libpart (lib 74hct245) (part 74HCT245)
|
||||
(fields
|
||||
(field (name Reference) U)
|
||||
(field (name Value) 74HCT245)
|
||||
(field (name Footprint) Housings_SOIC:SOIC-20_7.5x12.8mm_Pitch1.27mm))
|
||||
(pins
|
||||
(pin (num 1) (name A->B) (type input))
|
||||
(pin (num 2) (name A0) (type 3state))
|
||||
(pin (num 3) (name A1) (type 3state))
|
||||
(pin (num 4) (name A2) (type 3state))
|
||||
(pin (num 5) (name A3) (type 3state))
|
||||
(pin (num 6) (name A4) (type 3state))
|
||||
(pin (num 7) (name A5) (type 3state))
|
||||
(pin (num 8) (name A6) (type 3state))
|
||||
(pin (num 9) (name A7) (type 3state))
|
||||
(pin (num 10) (name GND) (type power_in))
|
||||
(pin (num 11) (name B7) (type 3state))
|
||||
(pin (num 12) (name B6) (type 3state))
|
||||
(pin (num 13) (name B5) (type 3state))
|
||||
(pin (num 14) (name B4) (type 3state))
|
||||
(pin (num 15) (name B3) (type 3state))
|
||||
(pin (num 16) (name B2) (type 3state))
|
||||
(pin (num 17) (name B1) (type 3state))
|
||||
(pin (num 18) (name B0) (type 3state))
|
||||
(pin (num 19) (name CE) (type input))
|
||||
(pin (num 20) (name VCC) (type power_in))))
|
||||
(libpart (lib Connector) (part Barrel_Jack)
|
||||
(aliases
|
||||
(alias Jack-DC))
|
||||
(description "DC Barrel Jack")
|
||||
(docs ~)
|
||||
(footprints
|
||||
(fp BarrelJack*))
|
||||
(fields
|
||||
(field (name Reference) J)
|
||||
(field (name Value) Barrel_Jack))
|
||||
(pins
|
||||
(pin (num 1) (name ~) (type passive))
|
||||
(pin (num 2) (name ~) (type passive))))
|
||||
(libpart (lib Connector) (part Conn_01x02_Female)
|
||||
(description "Generic connector, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)")
|
||||
(docs ~)
|
||||
(footprints
|
||||
(fp Connector*:*_1x??_*))
|
||||
(fields
|
||||
(field (name Reference) J)
|
||||
(field (name Value) Conn_01x02_Female))
|
||||
(pins
|
||||
(pin (num 1) (name Pin_1) (type passive))
|
||||
(pin (num 2) (name Pin_2) (type passive))))
|
||||
(libpart (lib Connector) (part Conn_01x02_Male)
|
||||
(description "Generic connector, single row, 01x02, script generated (kicad-library-utils/schlib/autogen/connector/)")
|
||||
(docs ~)
|
||||
(footprints
|
||||
(fp Connector*:*_1x??_*))
|
||||
(fields
|
||||
(field (name Reference) J)
|
||||
(field (name Value) Conn_01x02_Male))
|
||||
(pins
|
||||
(pin (num 1) (name Pin_1) (type passive))
|
||||
(pin (num 2) (name Pin_2) (type passive))))
|
||||
(libpart (lib Connector) (part Raspberry_Pi_2_3)
|
||||
(description "expansion header for Raspberry Pi 2 & 3")
|
||||
(docs https://www.raspberrypi.org/documentation/hardware/raspberrypi/schematics/rpi_SCH_3bplus_1p0_reduced.pdf)
|
||||
(footprints
|
||||
(fp PinHeader*2x20*P2.54mm*Vertical*)
|
||||
(fp PinSocket*2x20*P2.54mm*Vertical*))
|
||||
(fields
|
||||
(field (name Reference) J)
|
||||
(field (name Value) Raspberry_Pi_2_3))
|
||||
(pins
|
||||
(pin (num 1) (name 3V3) (type power_in))
|
||||
(pin (num 2) (name 5V) (type power_in))
|
||||
(pin (num 3) (name SDA/GPIO2) (type BiDi))
|
||||
(pin (num 4) (name 5V) (type power_in))
|
||||
(pin (num 5) (name SCL/GPIO3) (type BiDi))
|
||||
(pin (num 6) (name GND) (type power_in))
|
||||
(pin (num 7) (name GCLK0/GPIO4) (type BiDi))
|
||||
(pin (num 8) (name GPIO14/TXD) (type BiDi))
|
||||
(pin (num 9) (name GND) (type power_in))
|
||||
(pin (num 10) (name GPIO15/RXD) (type BiDi))
|
||||
(pin (num 11) (name GPIO17) (type BiDi))
|
||||
(pin (num 12) (name GPIO18/PWM0) (type BiDi))
|
||||
(pin (num 13) (name GPIO27) (type BiDi))
|
||||
(pin (num 14) (name GND) (type power_in))
|
||||
(pin (num 15) (name GPIO22) (type BiDi))
|
||||
(pin (num 16) (name GPIO23) (type BiDi))
|
||||
(pin (num 17) (name 3V3) (type power_in))
|
||||
(pin (num 18) (name GPIO24) (type BiDi))
|
||||
(pin (num 19) (name MOSI0/GPIO10) (type BiDi))
|
||||
(pin (num 20) (name GND) (type power_in))
|
||||
(pin (num 21) (name MISO0/GPIO9) (type BiDi))
|
||||
(pin (num 22) (name GPIO25) (type BiDi))
|
||||
(pin (num 23) (name SCLK0/GPIO11) (type BiDi))
|
||||
(pin (num 24) (name ~CE0~/GPIO8) (type BiDi))
|
||||
(pin (num 25) (name GND) (type power_in))
|
||||
(pin (num 26) (name ~CE1~/GPIO7) (type BiDi))
|
||||
(pin (num 27) (name ID_SD/GPIO0) (type BiDi))
|
||||
(pin (num 28) (name ID_SC/GPIO1) (type BiDi))
|
||||
(pin (num 29) (name GCLK1/GPIO5) (type BiDi))
|
||||
(pin (num 30) (name GND) (type power_in))
|
||||
(pin (num 31) (name GCLK2/GPIO6) (type BiDi))
|
||||
(pin (num 32) (name PWM0/GPIO12) (type BiDi))
|
||||
(pin (num 33) (name PWM1/GPIO13) (type BiDi))
|
||||
(pin (num 34) (name GND) (type power_in))
|
||||
(pin (num 35) (name GPIO19/MISO1) (type BiDi))
|
||||
(pin (num 36) (name GPIO16) (type BiDi))
|
||||
(pin (num 37) (name GPIO26) (type BiDi))
|
||||
(pin (num 38) (name GPIO20/MOSI1) (type BiDi))
|
||||
(pin (num 39) (name GND) (type power_in))
|
||||
(pin (num 40) (name GPIO21/SCLK1) (type BiDi))))
|
||||
(libpart (lib Connector) (part USB_A)
|
||||
(description "USB Type A connector")
|
||||
(docs " ~")
|
||||
(footprints
|
||||
(fp USB*))
|
||||
(fields
|
||||
(field (name Reference) J)
|
||||
(field (name Value) USB_A))
|
||||
(pins
|
||||
(pin (num 1) (name VBUS) (type power_in))
|
||||
(pin (num 2) (name D-) (type BiDi))
|
||||
(pin (num 3) (name D+) (type BiDi))
|
||||
(pin (num 4) (name GND) (type power_in))
|
||||
(pin (num 5) (name Shield) (type passive))))
|
||||
(libpart (lib Device) (part R)
|
||||
(description Resistor)
|
||||
(docs ~)
|
||||
(footprints
|
||||
(fp R_*))
|
||||
(fields
|
||||
(field (name Reference) R)
|
||||
(field (name Value) R))
|
||||
(pins
|
||||
(pin (num 1) (name ~) (type passive))
|
||||
(pin (num 2) (name ~) (type passive))))
|
||||
(libpart (lib Sensor_Audio) (part MP45DT02)
|
||||
(description "MEMS Omnidirectional Digital Microphone, HLGA-6")
|
||||
(docs http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00025467.pdf)
|
||||
(footprints
|
||||
(fp ST*HLGA*3.76x4.72mm*P1.65mm*))
|
||||
(fields
|
||||
(field (name Reference) MK)
|
||||
(field (name Value) MP45DT02)
|
||||
(field (name Footprint) Sensor_Audio:ST_HLGA-6_3.76x4.72mm_P1.65mm))
|
||||
(pins
|
||||
(pin (num 1) (name GND) (type power_in))
|
||||
(pin (num 2) (name LR) (type input))
|
||||
(pin (num 3) (name GND) (type passive))
|
||||
(pin (num 4) (name CLK) (type input))
|
||||
(pin (num 5) (name DOUT) (type output))
|
||||
(pin (num 6) (name VDD) (type power_in)))))
|
||||
(libraries
|
||||
(library (logical 74hct245)
|
||||
(uri D:/Windows/Paquito/Downloads/myelin-kicad-libraries-master/74hct245.lib))
|
||||
(library (logical Connector)
|
||||
(uri "C:\\Program Files\\KiCad\\share\\kicad\\library/Connector.lib"))
|
||||
(library (logical Device)
|
||||
(uri "C:\\Program Files\\KiCad\\share\\kicad\\library/Device.lib"))
|
||||
(library (logical Sensor_Audio)
|
||||
(uri "C:\\Program Files\\KiCad\\share\\kicad\\library/Sensor_Audio.lib")))
|
||||
(nets
|
||||
(net (code 1) (name VCC)
|
||||
(node (ref R2) (pin 2))
|
||||
(node (ref J2) (pin 1))
|
||||
(node (ref U2) (pin 20))
|
||||
(node (ref J1) (pin 1))
|
||||
(node (ref U1) (pin 20))
|
||||
(node (ref J3) (pin 4))
|
||||
(node (ref J3) (pin 2))
|
||||
(node (ref R1) (pin 1)))
|
||||
(net (code 2) (name GND)
|
||||
(node (ref J1) (pin 4))
|
||||
(node (ref U2) (pin 10))
|
||||
(node (ref J3) (pin 9))
|
||||
(node (ref J3) (pin 6))
|
||||
(node (ref J3) (pin 39))
|
||||
(node (ref J3) (pin 34))
|
||||
(node (ref J3) (pin 20))
|
||||
(node (ref J3) (pin 30))
|
||||
(node (ref J3) (pin 25))
|
||||
(node (ref U1) (pin 19))
|
||||
(node (ref J5) (pin 2))
|
||||
(node (ref J2) (pin 2))
|
||||
(node (ref J4) (pin 2))
|
||||
(node (ref U2) (pin 19))
|
||||
(node (ref J3) (pin 14))
|
||||
(node (ref U1) (pin 10))
|
||||
(node (ref MK1) (pin 3))
|
||||
(node (ref MK1) (pin 1)))
|
||||
(net (code 3) (name /I2S_WS)
|
||||
(node (ref J3) (pin 35))
|
||||
(node (ref MK1) (pin 2)))
|
||||
(net (code 4) (name /I2S_SD)
|
||||
(node (ref MK1) (pin 5))
|
||||
(node (ref J3) (pin 38)))
|
||||
(net (code 5) (name /SMI_SD15)
|
||||
(node (ref J3) (pin 16))
|
||||
(node (ref U2) (pin 4)))
|
||||
(net (code 6) (name /SMI_SD14)
|
||||
(node (ref U1) (pin 8))
|
||||
(node (ref J3) (pin 15)))
|
||||
(net (code 7) (name "Net-(J3-Pad13)")
|
||||
(node (ref J3) (pin 13)))
|
||||
(net (code 8) (name /I2S_CLK)
|
||||
(node (ref MK1) (pin 4))
|
||||
(node (ref J3) (pin 12)))
|
||||
(net (code 9) (name /SMI_SD9)
|
||||
(node (ref U1) (pin 9))
|
||||
(node (ref J3) (pin 11)))
|
||||
(net (code 10) (name /SMI_SD7)
|
||||
(node (ref J3) (pin 10))
|
||||
(node (ref U2) (pin 3)))
|
||||
(net (code 11) (name +3V3)
|
||||
(node (ref MK1) (pin 6))
|
||||
(node (ref J3) (pin 17))
|
||||
(node (ref J3) (pin 1)))
|
||||
(net (code 12) (name "Net-(J3-Pad27)")
|
||||
(node (ref J3) (pin 27)))
|
||||
(net (code 13) (name "Net-(J3-Pad37)")
|
||||
(node (ref J3) (pin 37)))
|
||||
(net (code 14) (name "Net-(J3-Pad28)")
|
||||
(node (ref J3) (pin 28)))
|
||||
(net (code 15) (name "Net-(J3-Pad26)")
|
||||
(node (ref J3) (pin 26)))
|
||||
(net (code 16) (name /SMI_SD16)
|
||||
(node (ref U2) (pin 5))
|
||||
(node (ref J3) (pin 18)))
|
||||
(net (code 17) (name "Net-(J3-Pad3)")
|
||||
(node (ref J3) (pin 3)))
|
||||
(net (code 18) (name "Net-(J3-Pad5)")
|
||||
(node (ref J3) (pin 5)))
|
||||
(net (code 19) (name "Net-(J3-Pad7)")
|
||||
(node (ref J3) (pin 7)))
|
||||
(net (code 20) (name "Net-(J3-Pad29)")
|
||||
(node (ref J3) (pin 29)))
|
||||
(net (code 21) (name "Net-(J3-Pad31)")
|
||||
(node (ref J3) (pin 31)))
|
||||
(net (code 22) (name +12V)
|
||||
(node (ref J4) (pin 1))
|
||||
(node (ref J5) (pin 1)))
|
||||
(net (code 23) (name "Net-(R1-Pad2)")
|
||||
(node (ref R1) (pin 2))
|
||||
(node (ref U1) (pin 1)))
|
||||
(net (code 24) (name "Net-(U1-Pad15)")
|
||||
(node (ref U1) (pin 15)))
|
||||
(net (code 25) (name "Net-(U1-Pad18)")
|
||||
(node (ref U1) (pin 18)))
|
||||
(net (code 26) (name "Net-(U1-Pad17)")
|
||||
(node (ref U1) (pin 17)))
|
||||
(net (code 27) (name "Net-(U1-Pad16)")
|
||||
(node (ref U1) (pin 16)))
|
||||
(net (code 28) (name "Net-(U1-Pad14)")
|
||||
(node (ref U1) (pin 14)))
|
||||
(net (code 29) (name "Net-(U1-Pad13)")
|
||||
(node (ref U1) (pin 13)))
|
||||
(net (code 30) (name "Net-(U1-Pad12)")
|
||||
(node (ref U1) (pin 12)))
|
||||
(net (code 31) (name "Net-(U1-Pad11)")
|
||||
(node (ref U1) (pin 11)))
|
||||
(net (code 32) (name /SMI_SD4)
|
||||
(node (ref J3) (pin 32))
|
||||
(node (ref U2) (pin 8)))
|
||||
(net (code 33) (name /SMI_SD5)
|
||||
(node (ref J3) (pin 33))
|
||||
(node (ref U1) (pin 4)))
|
||||
(net (code 34) (name /SMI_SD0)
|
||||
(node (ref J3) (pin 24))
|
||||
(node (ref U2) (pin 7)))
|
||||
(net (code 35) (name /SMI_SD3)
|
||||
(node (ref J3) (pin 23))
|
||||
(node (ref U1) (pin 5)))
|
||||
(net (code 36) (name /SMI_SD17)
|
||||
(node (ref U2) (pin 6))
|
||||
(node (ref J3) (pin 22)))
|
||||
(net (code 37) (name /SMI_SD1)
|
||||
(node (ref J3) (pin 21))
|
||||
(node (ref U1) (pin 6)))
|
||||
(net (code 38) (name /SMI_SD2)
|
||||
(node (ref J3) (pin 19))
|
||||
(node (ref U1) (pin 7)))
|
||||
(net (code 39) (name /SMI_SD8)
|
||||
(node (ref J3) (pin 36))
|
||||
(node (ref U2) (pin 9)))
|
||||
(net (code 40) (name /SMI_SD13)
|
||||
(node (ref U1) (pin 2))
|
||||
(node (ref J3) (pin 40))
|
||||
(node (ref U1) (pin 3)))
|
||||
(net (code 41) (name /SMI_SD6)
|
||||
(node (ref J3) (pin 8))
|
||||
(node (ref U2) (pin 2)))
|
||||
(net (code 42) (name "Net-(J1-Pad5)")
|
||||
(node (ref J1) (pin 5)))
|
||||
(net (code 43) (name "Net-(J1-Pad3)")
|
||||
(node (ref J1) (pin 3)))
|
||||
(net (code 44) (name "Net-(J1-Pad2)")
|
||||
(node (ref J1) (pin 2)))
|
||||
(net (code 45) (name "Net-(R2-Pad1)")
|
||||
(node (ref U2) (pin 1))
|
||||
(node (ref R2) (pin 1)))
|
||||
(net (code 46) (name "Net-(U2-Pad16)")
|
||||
(node (ref U2) (pin 16)))
|
||||
(net (code 47) (name "Net-(U2-Pad17)")
|
||||
(node (ref U2) (pin 17)))
|
||||
(net (code 48) (name "Net-(U2-Pad18)")
|
||||
(node (ref U2) (pin 18)))
|
||||
(net (code 49) (name "Net-(U2-Pad15)")
|
||||
(node (ref U2) (pin 15)))
|
||||
(net (code 50) (name "Net-(U2-Pad14)")
|
||||
(node (ref U2) (pin 14)))
|
||||
(net (code 51) (name "Net-(U2-Pad13)")
|
||||
(node (ref U2) (pin 13)))
|
||||
(net (code 52) (name "Net-(U2-Pad12)")
|
||||
(node (ref U2) (pin 12)))
|
||||
(net (code 53) (name "Net-(U2-Pad11)")
|
||||
(node (ref U2) (pin 11)))))
|
@ -1,28 +1,28 @@
|
||||
(module I2S_MEMS_Microphone (layer F.Cu) (tedit 6099062F)
|
||||
(descr "I2S MEMS Microphone")
|
||||
(tags "I2S MEMS Microphone")
|
||||
(fp_text reference REF** (at 3.81 -2.33) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value "I2S MEMS Microphone" (at 3.81 7.41) (layer F.Fab)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_line (start 1.635 -1.27) (end 6.985 -1.27) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 6.985 -1.27) (end 6.985 6.35) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 6.985 6.35) (end 0.635 6.35) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 0.635 6.35) (end 0.635 -0.27) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 0.635 -0.27) (end 1.635 -1.27) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -1.45 -1.55) (end -1.45 6.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.45 6.6) (end 9.1 6.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 9.1 6.6) (end 9.1 -1.55) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 9.1 -1.55) (end -1.45 -1.55) (layer F.CrtYd) (width 0.05))
|
||||
(fp_text user %R (at 3.81 2.54) (layer F.Fab)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(pad 6 thru_hole oval (at 7.62 0) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask))
|
||||
(pad 3 thru_hole oval (at 0 5.08) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask))
|
||||
(pad 5 thru_hole oval (at 7.62 2.54) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask))
|
||||
(pad 2 thru_hole oval (at 0 2.54) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask))
|
||||
(pad 4 thru_hole oval (at 7.62 5.08) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask))
|
||||
(pad 1 thru_hole rect (at 0 0) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask))
|
||||
)
|
||||
(module I2S_MEMS_Microphone (layer F.Cu) (tedit 6099062F)
|
||||
(descr "I2S MEMS Microphone")
|
||||
(tags "I2S MEMS Microphone")
|
||||
(fp_text reference REF** (at 3.81 -2.33) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value "I2S MEMS Microphone" (at 3.81 7.41) (layer F.Fab)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_line (start 1.635 -1.27) (end 6.985 -1.27) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 6.985 -1.27) (end 6.985 6.35) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 6.985 6.35) (end 0.635 6.35) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 0.635 6.35) (end 0.635 -0.27) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 0.635 -0.27) (end 1.635 -1.27) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -1.45 -1.55) (end -1.45 6.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.45 6.6) (end 9.1 6.6) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 9.1 6.6) (end 9.1 -1.55) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 9.1 -1.55) (end -1.45 -1.55) (layer F.CrtYd) (width 0.05))
|
||||
(fp_text user %R (at 3.81 2.54) (layer F.Fab)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(pad 6 thru_hole oval (at 7.62 0) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask))
|
||||
(pad 3 thru_hole oval (at 0 5.08) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask))
|
||||
(pad 5 thru_hole oval (at 7.62 2.54) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask))
|
||||
(pad 2 thru_hole oval (at 0 2.54) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask))
|
||||
(pad 4 thru_hole oval (at 7.62 5.08) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask))
|
||||
(pad 1 thru_hole rect (at 0 0) (size 2.4 1.6) (drill 0.8) (layers *.Cu *.Mask))
|
||||
)
|
@ -1,46 +1,46 @@
|
||||
(module Led_Power_Bus (layer F.Cu) (tedit 609AB8F7)
|
||||
(descr "Through hole straight pin header, 2x08, 2.54mm pitch, double rows")
|
||||
(tags "Through hole pin header THT 2x08 2.54mm double row")
|
||||
(fp_text reference REF** (at 1.27 -2.33) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value Led_Power_Bus (at 1.27 20.11) (layer F.Fab)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_line (start 0 -1.27) (end 3.81 -1.27) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 3.81 -1.27) (end 3.81 19.05) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 3.81 19.05) (end -1.27 19.05) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -1.27 19.05) (end -1.27 0) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -1.27 0) (end 0 -1.27) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -1.33 19.11) (end 3.87 19.11) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start -1.33 1.27) (end -1.33 19.11) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start 3.87 -1.33) (end 3.87 19.11) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start -1.33 1.27) (end 1.27 1.27) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start 1.27 1.27) (end 1.27 -1.33) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start 1.27 -1.33) (end 3.87 -1.33) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start -1.33 0) (end -1.33 -1.33) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start -1.33 -1.33) (end 0 -1.33) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start -1.8 -1.8) (end -1.8 19.55) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.8 19.55) (end 4.35 19.55) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 4.35 19.55) (end 4.35 -1.8) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 4.35 -1.8) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05))
|
||||
(fp_text user %R (at 1.27 8.89 90) (layer F.Fab)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(pad 8b thru_hole oval (at 2.54 17.78) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 8a thru_hole oval (at 0 17.78) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 7b thru_hole oval (at 2.54 15.24) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 7a thru_hole oval (at 0 15.24) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 6b thru_hole oval (at 2.54 12.7) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 6a thru_hole oval (at 0 12.7) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 5b thru_hole oval (at 2.54 10.16) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 5a thru_hole oval (at 0 10.16) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 4b thru_hole oval (at 2.54 7.62) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 4a thru_hole oval (at 0 7.62) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 3b thru_hole oval (at 2.54 5.08) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 3a thru_hole oval (at 0 5.08) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 2b thru_hole oval (at 2.54 2.54) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 2a thru_hole oval (at 0 2.54) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 1b thru_hole oval (at 2.54 0) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 1a thru_hole rect (at 0 0) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
)
|
||||
(module Led_Power_Bus (layer F.Cu) (tedit 609AB8F7)
|
||||
(descr "Through hole straight pin header, 2x08, 2.54mm pitch, double rows")
|
||||
(tags "Through hole pin header THT 2x08 2.54mm double row")
|
||||
(fp_text reference REF** (at 1.27 -2.33) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value Led_Power_Bus (at 1.27 20.11) (layer F.Fab)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_line (start 0 -1.27) (end 3.81 -1.27) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 3.81 -1.27) (end 3.81 19.05) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 3.81 19.05) (end -1.27 19.05) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -1.27 19.05) (end -1.27 0) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -1.27 0) (end 0 -1.27) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -1.33 19.11) (end 3.87 19.11) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start -1.33 1.27) (end -1.33 19.11) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start 3.87 -1.33) (end 3.87 19.11) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start -1.33 1.27) (end 1.27 1.27) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start 1.27 1.27) (end 1.27 -1.33) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start 1.27 -1.33) (end 3.87 -1.33) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start -1.33 0) (end -1.33 -1.33) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start -1.33 -1.33) (end 0 -1.33) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start -1.8 -1.8) (end -1.8 19.55) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.8 19.55) (end 4.35 19.55) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 4.35 19.55) (end 4.35 -1.8) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 4.35 -1.8) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05))
|
||||
(fp_text user %R (at 1.27 8.89 90) (layer F.Fab)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(pad 8b thru_hole oval (at 2.54 17.78) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 8a thru_hole oval (at 0 17.78) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 7b thru_hole oval (at 2.54 15.24) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 7a thru_hole oval (at 0 15.24) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 6b thru_hole oval (at 2.54 12.7) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 6a thru_hole oval (at 0 12.7) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 5b thru_hole oval (at 2.54 10.16) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 5a thru_hole oval (at 0 10.16) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 4b thru_hole oval (at 2.54 7.62) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 4a thru_hole oval (at 0 7.62) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 3b thru_hole oval (at 2.54 5.08) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 3a thru_hole oval (at 0 5.08) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 2b thru_hole oval (at 2.54 2.54) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 2a thru_hole oval (at 0 2.54) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 1b thru_hole oval (at 2.54 0) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 1a thru_hole rect (at 0 0) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
)
|
@ -1,36 +1,36 @@
|
||||
(module Led_Signal_Bus (layer F.Cu) (tedit 609AB921)
|
||||
(descr "Through hole straight socket strip, 1x08, 2.54mm pitch, single row (from Kicad 4.0.7), script generated")
|
||||
(tags "Through hole socket strip THT 1x08 2.54mm single row")
|
||||
(fp_text reference REF** (at 0 -2.77) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value Led_Signal_Bus (at 0 20.55) (layer F.Fab)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_line (start -1.8 19.55) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 1.75 19.55) (end -1.8 19.55) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 1.75 -1.8) (end 1.75 19.55) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.8 -1.8) (end 1.75 -1.8) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 0 -1.33) (end 1.33 -1.33) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start 1.33 -1.33) (end 1.33 0) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start 1.33 1.27) (end 1.33 19.11) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start -1.33 19.11) (end 1.33 19.11) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start -1.33 1.27) (end -1.33 19.11) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start -1.33 1.27) (end 1.33 1.27) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start -1.27 19.05) (end -1.27 -1.27) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 1.27 19.05) (end -1.27 19.05) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 1.27 -0.635) (end 1.27 19.05) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 0.635 -1.27) (end 1.27 -0.635) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -1.27 -1.27) (end 0.635 -1.27) (layer F.Fab) (width 0.1))
|
||||
(fp_text user %R (at 0 8.89 90) (layer F.Fab)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(pad 8 thru_hole oval (at 0 17.78) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 7 thru_hole oval (at 0 15.24) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 6 thru_hole oval (at 0 12.7) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 5 thru_hole oval (at 0 10.16) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 4 thru_hole oval (at 0 7.62) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 3 thru_hole oval (at 0 5.08) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 2 thru_hole oval (at 0 2.54) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 1 thru_hole rect (at 0 0) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
)
|
||||
(module Led_Signal_Bus (layer F.Cu) (tedit 609AB921)
|
||||
(descr "Through hole straight socket strip, 1x08, 2.54mm pitch, single row (from Kicad 4.0.7), script generated")
|
||||
(tags "Through hole socket strip THT 1x08 2.54mm single row")
|
||||
(fp_text reference REF** (at 0 -2.77) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value Led_Signal_Bus (at 0 20.55) (layer F.Fab)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_line (start -1.8 19.55) (end -1.8 -1.8) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 1.75 19.55) (end -1.8 19.55) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 1.75 -1.8) (end 1.75 19.55) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.8 -1.8) (end 1.75 -1.8) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 0 -1.33) (end 1.33 -1.33) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start 1.33 -1.33) (end 1.33 0) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start 1.33 1.27) (end 1.33 19.11) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start -1.33 19.11) (end 1.33 19.11) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start -1.33 1.27) (end -1.33 19.11) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start -1.33 1.27) (end 1.33 1.27) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start -1.27 19.05) (end -1.27 -1.27) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 1.27 19.05) (end -1.27 19.05) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 1.27 -0.635) (end 1.27 19.05) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 0.635 -1.27) (end 1.27 -0.635) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -1.27 -1.27) (end 0.635 -1.27) (layer F.Fab) (width 0.1))
|
||||
(fp_text user %R (at 0 8.89 90) (layer F.Fab)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(pad 8 thru_hole oval (at 0 17.78) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 7 thru_hole oval (at 0 15.24) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 6 thru_hole oval (at 0 12.7) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 5 thru_hole oval (at 0 10.16) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 4 thru_hole oval (at 0 7.62) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 3 thru_hole oval (at 0 5.08) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 2 thru_hole oval (at 0 2.54) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
(pad 1 thru_hole rect (at 0 0) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask))
|
||||
)
|
@ -1,43 +1,43 @@
|
||||
update=05/09/21 23:32:44
|
||||
version=1
|
||||
last_client=kicad
|
||||
[general]
|
||||
version=1
|
||||
RootSch=
|
||||
BoardNm=
|
||||
[pcbnew]
|
||||
version=1
|
||||
LastNetListRead=
|
||||
UseCmpFile=1
|
||||
PadDrill=0.600000000000
|
||||
PadDrillOvalY=0.600000000000
|
||||
PadSizeH=1.500000000000
|
||||
PadSizeV=1.500000000000
|
||||
PcbTextSizeV=1.500000000000
|
||||
PcbTextSizeH=1.500000000000
|
||||
PcbTextThickness=0.300000000000
|
||||
ModuleTextSizeV=1.000000000000
|
||||
ModuleTextSizeH=1.000000000000
|
||||
ModuleTextSizeThickness=0.150000000000
|
||||
SolderMaskClearance=0.000000000000
|
||||
SolderMaskMinWidth=0.000000000000
|
||||
DrawSegmentWidth=0.200000000000
|
||||
BoardOutlineThickness=0.100000000000
|
||||
ModuleOutlineThickness=0.150000000000
|
||||
[cvpcb]
|
||||
version=1
|
||||
NetIExt=net
|
||||
[eeschema]
|
||||
version=1
|
||||
LibDir=
|
||||
[eeschema/libraries]
|
||||
[schematic_editor]
|
||||
version=1
|
||||
PageLayoutDescrFile=
|
||||
PlotDirectoryName=
|
||||
SubpartIdSeparator=0
|
||||
SubpartFirstId=65
|
||||
NetFmtName=Pcbnew
|
||||
SpiceAjustPassiveValues=0
|
||||
LabSize=50
|
||||
ERC_TestSimilarLabels=1
|
||||
update=05/09/21 23:32:44
|
||||
version=1
|
||||
last_client=kicad
|
||||
[general]
|
||||
version=1
|
||||
RootSch=
|
||||
BoardNm=
|
||||
[pcbnew]
|
||||
version=1
|
||||
LastNetListRead=
|
||||
UseCmpFile=1
|
||||
PadDrill=0.600000000000
|
||||
PadDrillOvalY=0.600000000000
|
||||
PadSizeH=1.500000000000
|
||||
PadSizeV=1.500000000000
|
||||
PcbTextSizeV=1.500000000000
|
||||
PcbTextSizeH=1.500000000000
|
||||
PcbTextThickness=0.300000000000
|
||||
ModuleTextSizeV=1.000000000000
|
||||
ModuleTextSizeH=1.000000000000
|
||||
ModuleTextSizeThickness=0.150000000000
|
||||
SolderMaskClearance=0.000000000000
|
||||
SolderMaskMinWidth=0.000000000000
|
||||
DrawSegmentWidth=0.200000000000
|
||||
BoardOutlineThickness=0.100000000000
|
||||
ModuleOutlineThickness=0.150000000000
|
||||
[cvpcb]
|
||||
version=1
|
||||
NetIExt=net
|
||||
[eeschema]
|
||||
version=1
|
||||
LibDir=
|
||||
[eeschema/libraries]
|
||||
[schematic_editor]
|
||||
version=1
|
||||
PageLayoutDescrFile=
|
||||
PlotDirectoryName=
|
||||
SubpartIdSeparator=0
|
||||
SubpartFirstId=65
|
||||
NetFmtName=Pcbnew
|
||||
SpiceAjustPassiveValues=0
|
||||
LabSize=50
|
||||
ERC_TestSimilarLabels=1
|
1050
RpiLedBars/hw/backup/LedBarsHat/LedBarsHat.sch
Normal file
1050
RpiLedBars/hw/backup/LedBarsHat/LedBarsHat.sch
Normal file
File diff suppressed because it is too large
Load Diff
1050
RpiLedBars/hw/backup/LedBarsHat/LedBarsHat.sch-bak
Normal file
1050
RpiLedBars/hw/backup/LedBarsHat/LedBarsHat.sch-bak
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,3 +1,3 @@
|
||||
EESchema-DOCLIB Version 2.0
|
||||
#
|
||||
#End Doc Library
|
||||
EESchema-DOCLIB Version 2.0
|
||||
#
|
||||
#End Doc Library
|
File diff suppressed because it is too large
Load Diff
11186
RpiLedBars/hw/backup/LedBarsHat/_autosave-LedBarsHat.sch
Normal file
11186
RpiLedBars/hw/backup/LedBarsHat/_autosave-LedBarsHat.sch
Normal file
File diff suppressed because it is too large
Load Diff
1
RpiLedBars/hw/backup/LedBarsHat/fp-info-cache
Normal file
1
RpiLedBars/hw/backup/LedBarsHat/fp-info-cache
Normal file
@ -0,0 +1 @@
|
||||
0
|
@ -1,3 +1,3 @@
|
||||
(fp_lib_table
|
||||
(lib (name LedBarsHat)(type KiCad)(uri ${KIPRJMOD}/LedBarsHat.pretty)(options "")(descr ""))
|
||||
)
|
||||
(fp_lib_table
|
||||
(lib (name LedBarsHat)(type KiCad)(uri ${KIPRJMOD}/LedBarsHat.pretty)(options "")(descr ""))
|
||||
)
|
5
RpiLedBars/hw/backup/LedBarsHat/sym-lib-table
Normal file
5
RpiLedBars/hw/backup/LedBarsHat/sym-lib-table
Normal file
@ -0,0 +1,5 @@
|
||||
(sym_lib_table
|
||||
(version 7)
|
||||
(lib (name "74hct245")(type "Legacy")(uri "${KIPRJMOD}/LedBarsHat.symbols/74hct245.lib")(options "")(descr ""))
|
||||
(lib (name "LedBarsHat-rescue")(type "KiCad")(uri "${KIPRJMOD}/LedBarsHat-rescue.kicad_sym")(options "")(descr ""))
|
||||
)
|
Loading…
x
Reference in New Issue
Block a user