Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Jag har gjort en grafisk roulette. Om du trycker på knappen börjar roulette rulla. Om du trycker igen slutar roulette rulla och piper!
Steg 1: Krets
Vi använder bara en trådbunden högtalare och en knapp.
Stiftnumren för kabeldragna skrivs på programmet.
button = obniz.wired ("Button", {signal: 6, gnd: 7}); speaker = obniz.wired ("Speaker", {signal: 0, gnd: 1});
Steg 2: Rotera Rulette -bild
I HTML kan du använda "CSS -transform". Till exempel är detta koden för roterande bild 90 grader.
document.getElementById ("roulette"). style = "transform: rotate (90deg);";
För att börja och sluta rotera långsamt, lägg till en var -hastighet för rotationsgrad per ram.
låt hastighet = 0; låt deg = 0; funktion rotera () {deg += hastighet; document.getElementById ("roulette"). style = "transform: rotate ("+deg+"deg);";
}
setInterval (rotera, 10);
Steg 3: pip
Vill du pipa på roulette ingen förändring? Med detta kan du peka på 440Hz 10ms.
högtalare. spel (440); vänta obniz.wait (10); speaker.stop ();
Så här vet du om byte av roulette nr.
if (Math.floor ((deg + hastighet) / (360 / 7.0)) - Math.floor (deg / (360 / 7.0))> = 1) {onRouletteChange (); }
Så det här är koden för rotera och pipa.
låt hastighet = 0; låt deg = 0; funktion rotera () {// vid ändringsvärde if (Math.floor ((deg + speed) /(360 /7.0)) - Math.floor (deg /(360 /7.0))> = 1) {onRouletteChange (); } deg += hastighet; document.getElementById ("roulette"). style = "transform: rotate ("+deg+"deg);";
}
setInterval (rotera, 10);
async -funktion onRouletteChange () {
if (! speaker) {return;} speaker.play (440); vänta obniz.wait (10); speaker.stop (); }
Steg 4: Starta på knappen tryckt
För att veta knappstatus, lägg till var buttonStat och inställt värde för det aktuella knappläget.
button.onchange = funktion (nedtryckt) {buttonState = nedtryckt; };
Och även lägga till var fas för nuvarande tillstånd av roulette.phase är inställt en av detta.
const PHASE_WAIT_FOR_START = 0; const PHASE_ROTATE = 1; const PHASE_STOPPING = 2; const PHASE_STOPPED = 3;
Till exempel när fasen är PHASE_WAIT_FOR_START och du vill ta nästa fas.
om (fas == PHASE_WAIT_FOR_START) {hastighet = 0; if (buttonState) {phase = PHASE_ROTATE; }}
För att påskynda ruletten, ändra var hastighet.
om (fas == PHASE_ROTATE) {hastighet = hastighet+0,5; }
För att påskynda ruletten, ändra var hastighet.
:
if (phase == PHASE_STOPPING) {speed = speed-0.2; }
De är en del av roulette. Låt oss göra det!
Steg 5: Program
Se programmet här