Whac-A-mus prototypen (4 / 5 steg)

Steg 4: Förbereda Arduino koden

Inkludera biblioteket bifogas nedan. Servo biblioteket är servo standardbiblioteket som medföljer programvaran Arduino skiss.

Definiera konstant variabler

Du måste ange dessa värden beroende på protokoll och Fjärrkoder som du använder. Dessa är från min hobby remote. Visa bifogade IRLib biblioteket för referenser på IRLib-protokollet.

#define MY_PROTOCOL NEC
#define RIGHT_ARROW 0xFF02FD / / spela huvudloop (ström)
#define LEFT_ARROW 0xFF22DD / / SERVO POSITION 2
#define POWER 0xFFA25D / / SERVO läge 2 POWER
#define spela 0xFFC23D / / spela AUTO LOOP
#define avkastning 0xFFB04F / / lämna automatiska LOOP
#define MUTE 0xFFE21D / / OFF

CONST int SFX_4 = 4;
CONST int SFX_2 = 5;
CONST int SFX_RST = 6;
CONST int SFX_vol = 7.
CONST int sensor1_pwr = A4;
CONST int sensor2_pwr = A5;
CONST int sensor1 = A0;
CONST int sensor2 = A1;
CONST int LEDON = 10;

Definiera ändra variabler

int _SFX_4 = hög;
int _SFX_2 = hög;
int _SFX_RST = hög;
int _SFX_vol = hög;
int pos1;
int pos2;
int Read1NEW = 400.
int Read1OLD = 400.
int Read2NEW = 400.
int Read2OLD = 400.
int state = 0
int n = 0;
int m = 0;
int w = 0;
int prevMillis = 0;
lång previousMillis = 0;

Definiera servon:

Servo servo1; Definiera servo
Servo servo2; Definiera servo

Använda detta segment av koden för IR-mottagaren:

IRrecv My_Receiver(11); Ta emot på stift 11
IRdecode My_Decoder;

Setup:

void setup() {/ / börja installationen
Serial.BEGIN(9600); Börja seriell kommunikation
My_Receiver.No_Output(); Inaktivera eventuella oanvända IR LED utgång krets
My_Receiver.enableIRIn(); Startar mottagaren för IR-fjärr

Definiera Pin lägen

pinMode(SFX_2,OUTPUT);
digitalWrite(SFX_2,_SFX_2);
pinMode(SFX_4,OUTPUT);
digitalWrite(SFX_4,_SFX_4);
pinMode(SFX_vol,OUTPUT);
digitalWrite(SFX_vol,_SFX_vol);
pinMode(SFX_RST,OUTPUT);
digitalWrite(SFX_RST,_SFX_RST);
pinMode(sensor1_pwr,OUTPUT);
digitalWrite(sensor1_pwr,HIGH);
pinMode(sensor1_pwr,OUTPUT);
digitalWrite(sensor1_pwr,HIGH);
pinMode(sensor2_pwr,OUTPUT);
digitalWrite(sensor2_pwr,HIGH);
pinMode(LEDON,OUTPUT);
digitalWrite(LEDON,LOW);

Bifoga servon:

servo1.attach(8);
servo2.attach(9);

} / / end setup

Huvudloop:

Detta segment av koden är kommenterade så jag inte skall upprepa koder syftet.

void loop() {/ / börjar huvudloop
bailout1: {

servo1.detach(); Koppla loss Servo, förhindrar servo buller
servo2.detach(); Koppla loss Servo, förhindrar servo buller

int V1 = 0; Variabel för medan loop nedan

medan (V1 == 0) {
om (My_Receiver.GetResults (& My_Decoder)) {
My_Decoder.decode();
IF(My_Decoder.decode_type==MY_PROTOCOL) {
Switch(My_Decoder.Value) {

fall MUTE: {
digitalWrite(LEDON,LOW);
Serial.println ("POWER OFF");
servo1.attach(8); Fäster servo 1
servo2.attach(9); Fäster servo 2
servo1.write(95); låg position är 95 grader
servo2.write(100); låg position är 100 deg
Delay(500);
gå till bailout1;
}

fall makt: {
Serial.println ("ström på");
digitalWrite(LEDON,HIGH);
int V2 = 0;
medan (V2 == 0)
{
Lossa alla servon så att vibrationer sensorer inte plocka upp någon
servo vibrationer eller gnälla.
//----------------------------------------------------------------------
servo1.detach();
servo2.detach();
Kapslad Loop Wich uppsättningar initialt villkorar för SFX styrelse
I detta fall, används det för att justera volymen.
Gå till https://learn.adafruit.com/adafruit-audio-fx-soun...
en detaljerad genomgång om hur Adafruit FX styrelsen fungerar.
Segmentet av koden nedan i huvudsak vänder volymen
ner av en grov metod.
//----------------------------------------------------------------------
medan (n < 1) {
n ++;
Serial.Print ("återställa FX ljud ombord...");
digitalWrite(SFX_RST,LOW);
Delay(40);
digitalWrite(SFX_RST,HIGH);
Serial.println("Complete");
}
medan (m < 26) {
m ++;
digitalWrite(SFX_vol,LOW);
Delay(40);
digitalWrite(SFX_vol,HIGH);
Delay(40);
IF(m == 26) {
Serial.println("Complete");
}
IF(m == 1) {
Serial.Print ("kontrollera volymnivå...");
}}
//----------------------------------------------------------------------
bailout2: {/ / används för att fly från kapslade slingor nedan
//----------------------------------------------------------------------
Remote Control Interface
//----------------------------------------------------------------------
För information om hur du använder IR-fjärrkontroll med Arduino
Besök https://github.com/cyborg5/IRLib
Det finns manualer och exempel.
//----------------------------------------------------------------------
om (My_Receiver.GetResults (& My_Decoder)) {
My_Decoder.decode();
IF(My_Decoder.decode_type==MY_PROTOCOL) {
Switch(My_Decoder.Value) {
//----------------------------------------------------------------------
De nästa två fall rapporterna används till alternativa servo positioner
genom att trycka på knappen (höger eller vänster pil på IR-fjärrkontroll)
//----------------------------------------------------------------------

fall MUTE: {
digitalWrite(LEDON,LOW);
Serial.println ("POWER OFF");
servo1.attach(8); Fäster servo 1
servo2.attach(9); Fäster servo 2
servo1.write(95); låg position är 95 grader
servo2.write(100); låg position är 100 deg
Delay(500);
gå till bailout1; Exit ON loop
}

fall LEFT_ARROW: {
servo1.attach(8); Fäster servo 1
servo2.attach(9); Fäster servo 2
Serial.println ("manuell spela 1");
digitalWrite(SFX_4,LOW); möjliggör ljud
Delay(400); fördröjning för ljud
digitalWrite(SFX_4,HIGH); möjliggör ljud
servo1.write(95); Hög position är 125 grader
servo2.write(75); låg position är 100 deg
Delay(2000); fördröjning för timing
State = 1; staten för att avgöra vilka sensorn var sista
bryta; avsluta loop
}

fall RIGHT_ARROW: {
servo1.attach(8); Fäster servo 1
servo2.attach(9); Fäster servo 2
Serial.println ("manuell spela 2");
digitalWrite(SFX_4,LOW); möjliggör ljud
Delay(400); fördröjning för ljud
digitalWrite(SFX_4,HIGH); möjliggör ljud
servo1.write(125); låg position är 95 grader
servo2.write(100); hög position är 75 grader
Delay(2000); fördröjning för timing
State = 0; staten för att avgöra vilka sensorn var sista
bryta; avsluta loop
}
//**********************************************************************
Detta segment kan av automatisk uppspelning
//**********************************************************************
fall spela:
{
Serial.println ("in automatiska Play-läge");
int q = 0;
While(q==0)
{
//----------------------------------------------------------------------
Detta segment av kod används för att bryta av automatisk uppspelning
//----------------------------------------------------------------------
om (My_Receiver.GetResults (& My_Decoder))
{
My_Decoder.decode();
IF(My_Decoder.decode_type==MY_PROTOCOL)
{
Switch(My_Decoder.Value)
{
fall tillbaka: {
Serial.println ("lämnar automatiserade läge");
Delay(10);
servo1.attach(8); Fäster servo 1
servo2.attach(9); Fäster servo 2
servo1.write(95); låg position är 95 grader
servo2.write(100); låg position är 100 deg
Delay(500);
w = 0;
gå till bailout2; utgångar spela loop
}}}
My_Receiver.Resume();
}
//----------------------------------------------------------------------
Initialt placerar servo början av automatiserade play-läge
//----------------------------------------------------------------------
medan (w < 1)
{
w ++; variabel för loop
servo1.attach(8); Fäster servo 1
servo2.attach(9); Fäster servo 2
Delay(1); fördröjning för stabilitet
servo1.write(95); positioner servo hög är 120 grader
servo2.write(75); positioner servo låg är 100 deg
Delay(20); fördröjning för timing
servo1.detach(); Koppla loss Servo, förhindrar servo buller
servo2.detach(); Koppla loss Servo, förhindrar servo buller
//----------------------------------------------------------------------
Detta segment spelar låten anger du har angett automatisk play-läge
//----------------------------------------------------------------------
digitalWrite(SFX_2,LOW);
Delay(400);
digitalWrite(SFX_2,HIGH);
}
//----------------------------------------------------------------------
Lagrar mätvärden för sensor 1 & 2 i en variabel
//----------------------------------------------------------------------
Read1NEW = analogRead(sensor1); lagrar sensor värde
Delay(1); fördröjning för stabilitet
Read2NEW = analogRead(sensor2); lagrar sensor värde
Delay(1); fördröjning för stabilitet
//----------------------------------------------------------------------
Ändrar servo positioner när en sensor är störd
//----------------------------------------------------------------------
//----------------------------------------------------------------------
SERVO / SENSOR 1 VILLKORSSATS
//----------------------------------------------------------------------
om ((Read1NEW > 750) & & (statligt == 0))
{
Serial.println ("störning i Sensor 1");
//----------------------------------------------------------------------
Detta segment leker ljud som anger bollen har störts
//----------------------------------------------------------------------
digitalWrite(SFX_4,LOW);
Delay(360);
digitalWrite(SFX_4,HIGH);
//----------------------------------------------------------------------
Read1NEW = 0; lagrar sensor läsa för sensor 1
Read2NEW = 0; lagrar sensor läsa för sensor 2
digitalWrite(sensor1_pwr,LOW); Temp inaktiverar sensor
digitalWrite(sensor2_pwr,LOW); Temp inaktiverar sensor
servo1.attach(8); Fäster servo 1
servo2.attach(9); Fäster servo 2
Delay(1500);
servo1.write(95); Ståndpunkt är 125
servo2.write(75); Ned position är 100
servo1.detach(); Koppla loss Servo, förhindrar servo buller
servo2.detach(); Koppla loss Servo, förhindrar servo buller
Delay(1000); fördröjning för timing
State = 1; staten för att avgöra vilka sensorn var sista
}
//----------------------------------------------------------------------
SERVO / SENSOR 2 VILLKORSSATS
//----------------------------------------------------------------------
om ((Read2NEW > 750) & & (statligt == 1))
{
Serial.println ("störning i Sensor 2");
//----------------------------------------------------------------------
Detta segment leker ljud som anger bollen har störts
//----------------------------------------------------------------------
digitalWrite(SFX_4,LOW);
Delay(360);
digitalWrite(SFX_4,HIGH);
//----------------------------------------------------------------------
Read1NEW = 0; lagrar sensor läsa för sensor 1
Read2NEW = 0; lagrar sensor läsa för sensor 2
digitalWrite(sensor1_pwr,LOW); Temp inaktiverar sensor
digitalWrite(sensor2_pwr,LOW); Temp inaktiverar sensor
servo1.attach(8); Fäster servo 1
servo2.attach(9); Fäster servo 2
Delay(1500); fördröjning för timing
servo1.write(125); lågt är 95
servo2.write(100); hög är 75
servo1.detach(); Koppla loss Servo, förhindrar servo buller
servo2.detach(); Koppla loss Servo, förhindrar servo buller
Delay(1000); fördröjning för timing
State = 0; staten för att avgöra vilka sensorn var sista
}
annat
{
digitalWrite(SFX_4,HIGH); Håller ljud effekt pin hög (OFF)
om ((analogRead(sensor2) < 350) & & (analogRead(sensor1) < 350))
{
digitalWrite(sensor1_pwr,HIGH); gör att sensorn
digitalWrite(sensor2_pwr,HIGH); gör att sensorn
}}}}}}
My_Receiver.Resume();
}}}}}}
My_Receiver.Resume();
}}}}
//**********************************************************************
//**********************************************************************

Se Steg
Relaterade Ämnen

Solar Driv mus

Detta är en relativt enkel ändring till någon trådlös mus. Det grundläggande konceptet bakom detta är en solar powered rännil. Denna ändring innehåller en mus, ett steg ner spänningsregulator, ett uppladdningsbart batteri och en flexibel solpanel.Här...

Automatisk stänga trådlös mus (prototyp)

Disclaimer: Detta är en prototyp och gör din trådlös mus "wired". Ytterligare, beroende på din mus, det kan förlora sin förmåga att glida över bord/musmatta.För vårt sista projekt i CPE 133 Digital Design på Cal Poly, den grupp som tidigare kall...

Silikon-liknande material prototypen på en 3D-skrivare

Denna design för en hopfällbar behållare behövs en 3D tryckta prototyp på grund av dess överlappande delar och dess silikon-liknande kvaliteter. Själva produkten är avsedd att vara formsprutad silikon.När formuläret är Öppna platta små kronblad överl...

Altoids tin mus (med fläkt)

Jag letade på alla instructables för datormöss. Jag hittade en hel del altoids tin möss så jag bestämde mig att göra min egen version av en. Jag tror detta min egen uppfinning (att sätta en fläkt i en altoids tin mus) eftersom jag havn't sett några a...

Audio Switch i en mus

min fru var frustrerade över ljudet från datorn. När ljudet kommer från headsetet, när kommu från högtalarna. Aldrig från rätta.Detta är en billig audio switch. Det växla inte bara ljudet men headset-mikrofonen till skrivbordet mic.Steg 1: krav 3 ste...

Svart och vit tangentbord och mus combo

jag tror jag börjar gilla detta svartvitt färgschema...Jag gjorde allt detta med några billiga 99c walmart sprayfärg och vissa ultra dyra blank klarlack.allt som allt? totalkostnaden för projektet ge eller ta $5.Mitt tangentbord var ursprungligen hel...

Blå LED mus

trött på att standard rött ljus under musen? Byt ut!allt du behöver är en lödkolv (och helst en desoldering verktyg också), en multimeter, och färgen ledde du vill (och möjligen en resistor).Jag använde en billig $10 Ativa varumärke mus från Office D...

En mus + en power bank = uppladdningsbara trådlösa mus

Du kan kombinera en trådlös mus och mobiltelefon power bank att göra en uppladdningsbar mus!Steg 1: Varför jag gör dettaDe är döda batterier jag använt för min trådlösa mus förra året. Om jag kunde bygga en uppladdningsbar mus kunde jag spara miljön...

DIY USB-laddare för mobiltelefon litiumjonbatterier från en trådlös mus laddare

detta ett bra sätt att ladda upp mobiltelefon batterier utan en mobiltelefon, de flesta mobiltelefon AC adaptrar inte kommer ladda ett batteri effektivt som de är omkring 5 volt DC själva telefonen har batteriladdare av den. Men jag tycker dessa batt...

Kattmynta mus katt leksak

denna katt leksak är verkligen lätt att göra och om du redan har everthing det är gratis också.Vad du behöver:Kände scrapsNålGängaFyllningKattmyntaSax* Mus mönsterSpåra ut mönstret på filten, och en lång tunn bit för svansen. Sy två sida bitarna ihop...

Bend/hacka en optisk mus att höra ytstrukturer.

En VIDEO DEMO av mus arbetande:http://www.youtube.com/watch?v=luZazXOj9McDu kommer att höra en penna ritning, tidningen, plankor, marmor.Bara flytta modifierade musen över den.Det kan vara nyttigt för blinda.Allt annat än rena färger kommer att ljuda...

Bli en ambidextrous dator mus

enkelt verkligen: öva! :]Allvarligt dock RSI på grund av datormöss är inget skämt och jag har lidit av det själv.I ett skrivbord jobb jag hade för några år sedan (mappning kommunfullmäktige park tillgångar), hade jag ett problem med RSI som jag under...

Återvunnet dolda mus Safe

Den dolda mus säkert är nästan omöjlig att upptäcka, om inte din titta på den. Om du vill dölja musen, kan du antingen lägga den i en låda med andra slumpmässiga datordelar, eller ansluta den till datorn.för detta projekt behöver du:en gammal trasig...

Desiccated uppstoppning mamma mus i en glaskupa (för din wunderkammer)

Hej alla,Jag bygga ovanliga rekvisita för människor och har en vän med ett ganska häftigt skåp av kuriosa eller wunderkammer. I det där finns uppstoppade djur (eller monterade) djur, dödskallar, konstiga ockult artefakter, vissa ögon av glas och mass...

Anpassad PC / Windows mus pekare

återigen en annan Instructable jag trodde id kasta ute medan på jobbet ;)SSSSsssssshhhhhhhhhhhhhhh, det gör att jag ser upptagen ahahahSteg 1: Anpassad PC/LAPTOP MUSPEKARE Officiellt min 2nd instructable,Medan uttråkad eller uesing min tid creativly...

Humana mus fälla. Jag gjorde detta på TechShop

bakgrund:Vissa kommer att fråga "en annan mus fälla uppfinning?! Har vi inte nog av detta?" Skillnaden på denna mus fälla är att det är en human mus fälla. Det helt enkelt fånga musen.Mål:* Att visa hur man gör koncept idé blir verklighet.* Att...

Hur du skapar en mus-Driven meny som EXE med hjälp av Windows Batch kod

Denna handledning kommer att förklara hur man skapar en mus driven menyn att utföra subs i en kompilerade EXE. (dvs. användaren väljer klickar du på Alternativ-menyn med en vänster-mus.) Denna tutorial antar du förstår och känner med grundläggande wi...

Mikuni mus - datormus / förgasare hacka

jag hade en gammal förgasaren som jag klippte upp för att göra en cutaway av, och detta projekt bara slags föll ur min hjärna och stänkte på bordet... Varför inte ta den andra skrot delen av carb, och förvandla det till en mus för min dator!?Det var...

En (mycket) bättre mus fälla

har du någonsin haft mus problem, men ville bli av med det på ett humant sätt? Ja nu kan du göra det med stil!Mitt mål var att göra en mus fälla som var effektiv, humaine, grönt och mindre än $0.50, (priset på den traditionella trä musfällan).Väl här...