ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Type an ODE or PDE and watch it move as a hologram-style physical model
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Type a differential equation and watch it move. Holograph turns ODEs and PDEs into hologram-style physical models: springs, pendulums, orbits, strings, membranes and heated plates.
Live site: https://takoodachi.github.io/holograph/
y''+4y=0, u_t = u_xx) or paste LaTeX (\frac{d^2\theta}{dt^2}, \frac{\partial u}{\partial t}, \nabla^2 u).k, \omega, k_1) becomes a slider, like in Desmos.| Equation | Picture |
|---|---|
| 2nd-order ODE | mass on a spring or a pendulum |
| two angles, 2nd order | double pendulum |
| 1st-order ODE | liquid level in a tank |
| 2 unknowns | phase plane with a flowing vector field |
| 3 unknowns | 3D trajectory |
1D PDE (u_t, u_tt) | string or rod with its recent history |
| 2D PDE | wireframe membrane or plate |
| any equation | Time axis: the solution against t, computed ahead into the far future |
The Time axis view runs a second copy of the simulation ahead of the live one. Its condense slider goes from a linear window (t from 0 to 20) to all of time squeezed onto the axis, with ∞ at the end. A motion that keeps going forever, like a limit cycle or chaos, shows as a band between its extremes; one that settles shows as a flat line. ODEs plot each unknown against t; PDEs show a space-time surface u(x, t), or the middle slice for 2D problems.
In the view:
Press Space to pause and R to restart.
"Describe it" tries the built-in reader first. When the reader doesn't recognise a description, such as "a ball rolling in a bowl with a little friction", an AI model builds the system instead. Pick the AI in Settings:
| Choice | Model | Key |
|---|---|---|
| Qwen · free (default) | Qwen3 30B, @cf/qwen/qwen3-30b-a3b-fp8, through Holograph's Cloudflare Worker | none |
| Claude (Anthropic) | Claude Opus 5.5, claude-opus-5-5 | yours, from console.anthropic.com |
| GPT (OpenAI) | GPT-6 Astra, gpt-6-astra | yours, from platform.openai.com |
| Gemini (Google) | Gemini 4 Argon, gemini-4-argon | yours, from aistudio.google.com |
To use your own key, create one with your provider, give it a low monthly spend limit, pick the provider in Settings and paste the key. To get the AI's version of a description the reader already handled, click Ask … instead.
What to know:
fallbacks: "default" option). A refusal from any provider shows as a message.js/ai.js holds one entry per provider. Claude uses Anthropic's official SDK (@anthropic-ai/sdk, loaded from jsdelivr through the import map only on first use, with dangerouslyAllowBrowser: true). The others share one fetch call in the Chat Completions format: GPT directly, Gemini through its OpenAI-compatible endpoint, and Qwen through the Worker, which answers in the same shape. Another OpenAI-compatible provider is one more entry.
Every provider gets the same system prompt and structured-output JSON schema from js/prompt.js. The prompt lists exactly what js/parse.js accepts. The schema returns params and ic as lists of entries, because it can't express free-form maps, and every field is required with the optional ones nullable, because OpenAI's strict mode demands that. Qwen on Workers AI doesn't enforce a schema, so the Worker puts the schema in the prompt, and the app pulls the JSON out of the reply (skipping any reasoning or code fences) before checking it.
worker/ is a Cloudflare Worker on the free Workers plan, so it can't run up a bill: past the daily allowance, Workers AI refuses requests until midnight UTC. It holds no secret (the model is reached through the Workers AI binding), only answers requests from takoodachi.github.io and localhost:5173, and always runs Holograph's own prompt, so it can't be used as a general chatbot. A KV namespace counts each visitor's requests per day.
To deploy your own copy:
Create a free Cloudflare account.
Log in and deploy from worker/. The first deploy creates the KV namespace; put its id in wrangler.jsonc.
npx [email protected] login
npx [email protected] deploy
Put the Worker's address in PROVIDERS.qwen.url in js/ai.js, and your site's address in ORIGINS in worker/index.js.
tests/ai.test.js mocks each API and covers the validation, the retry, refusals and API errors. tests/worker.test.js runs the Worker with Workers AI and KV faked.
It's a static site with no build step. The libraries (three.js, MathLive, math.js) load from a CDN.
python -m http.server 5173
Then open http://localhost:5173.
npm install
npm test
The tests cover:
js/parse.js converts LaTeX or plain text into a classified model and compiles it to fast JavaScript. Equations are linear in their highest derivatives, so a small linear solve handles coupled systems.js/solver.js runs RK4. Each step size is set from a power-iteration estimate of the system's stiffness. PDEs use finite differences with ghost cells for the boundary conditions, and several fields share one state array.js/describe.js turns a description into equations, using a vocabulary of systems, modifiers and quantities with units.js/ai.js is the AI mode (free Qwen, or Claude, GPT or Gemini with your key) for descriptions the built-in reader doesn't recognise; js/prompt.js is what every model is told, and worker/ is the free Qwen's Cloudflare Worker.js/scene.js draws the three.js hologram stage and the physical views.js/app.js handles the editor, sliders and playback. js/presets.js holds the examples.Known limits: