Mus upptåg med Arduino (2 / 3 steg)
Steg 2: Ändra koden
Först är den globala variabeln för försening.
int delayLevel = 5; Ange intervallet mellan åtgärder, inställd på 1-10
Detta är en multiplikator som används i de "rutiner" som har en variabel fördröjningstid. Du kan justera till frekvensen musåtgärd.
Lägre värde kommer att minska förseningen.
Nästa, du väljer vilken typ av åtgärd du vill.
Det finns två många åtgärder, Jitter och hoppa. Jitter "skakar" markören och hoppa orsakar det att hoppa över skärmen. Dessa kan ha en fast eller variabel fördröjning.
För att använda de funktionsanrop i slingan, ta bort kommentaren "/ *... * /" markerar före och efter den en du vill och lägga till dem i allt som du inte vill.
När du ringer jitter subrutinen, passerar du ett nummer som anger det hur många gånger ska flytta i en kvadrat. Det är inställd på 12, som fungerar ganska bra, men justera för dina behov.
För hopp klarar du ett avstånd, i pixlar, som används av subrutinen. Jag har det fastställts att flytta avstånd/2 i x och sträcka för y. Om du vill ha något annorlunda, ändra Mouse.move kommandoargument i hoppa subrutin.
Jag la en ljudsignal anger att hoppa och kallade det jumpBeep
Det är ganska mycket det. Bara hacka bort på koden tills du har det som du vill. Nästa steg är använda den.
Här är koden:
/*
Arno Prank - mus utgåva 1
K. warner
Olympia kretsar
3/2013
olympiacircuits.com
*/
int delayLevel = 5; Ange intervallet mellan åtgärder, inställd på 1-10
int utbud = 5; utgående sortiment av X eller Y rörelse; påverkar rörelsehastighet
variabler för beep
långa freq = 4000; Välj signal frekvens
lång period.
långa aandra = 1000000;
int piezo = 12.
void setup() {
pinMode(piezo,OUTPUT);
initiera muskontroll:
Mouse.BEGIN();
}
void loop() {
ta bort kommentar markerar från avsnitt i koden som du skulle vilja genomföra:
/*
//========================================
Hoppa med varierande fördröjning
lång randomDelay = random(30,60); Generera slumptal för försening
lång thisDelay = randomDelay * lång (delayLevel) * 1000;
Serial.println (thisDelay);
länge nästa = lång (millis()) + thisDelay;
medan (millis() < nästa) {
Vänta
}
Ring hoppa
int avstånd = 45; uppsättning hoppa avstånd, riktning anges i funktionen
hoppa (avstånd); kommentera bort denna för att använda hoppa utan pip
jumpBeep (distans); kommentera bort denna för att använda hoppa med ett pip
*/
/*
//===========================
Jitter med fast fördröjning
jitter (12).
fördröjning (60000);
*/
//===========================
Jitter med varierande fördröjning
lång randomDelay = random(30,60); Generera slumptal för försening
lång thisDelay = randomDelay * lång (delayLevel) * 1000;
Serial.println (thisDelay);
länge nästa = lång (millis()) + thisDelay;
medan (millis() < nästa) {
Vänta
}
Ring Jitter
jitter (12). funktionen Ring upp jitter med antal repetitioner/varaktighet
//============================
Hoppa med fast fördröjning
/*
hoppa (-150);
fördröjning (125000);
*/
}
//===============subs=============
void hoppa (int howFar) {
Mouse.Move (howFar/2, howFar); ändra med matematik för olika resultat
fördröjning (2).
}
void jumpBeep (int howFar) {
beep
period = aandra/freq;
för (lång k = 0; k < freq/10; k ++) {
digitalWrite(piezo,HIGH);
delayMicroseconds(period/2);
digitalWrite(piezo,LOW);
delayMicroseconds(period/2);
}
flytta
Mouse.Move (howFar/2, howFar); ändra med matematik för olika resultat
fördröjning (2).
}
Annullera jitter (int varaktighet) {
int jag = 0;
medan (jag < varaktighet) {
Mouse.Move(10,10);
fördröjning (15).
Mouse.Move (-11, 0);
fördröjning (20);
Mouse.Move(10,-10);
Delay(25);
Mouse.Move (-11,0);
fördröjning (20);
i ++;
}
}