Necomimi Arduino kat oren (4 / 8 stap)

Stap 4: Schetsmatig details


Hier is de code van de schets.

Gewoon knippen en plakken als het uploaden van een bestand op ibles de bestandsnaam niet kan behouden en zal verwarrend.

=== begin van schets ===
/*
Dit programma is gebaseerde Arduino schets voorbeelden en de volgende:
ADXL345_Example.pde - voorbeeld schets voor integratie met een ADXL345 triple as versnellingsmeter.
Copyright (C) 2011 liefde elektronica (loveelectronics.co.uk)

Dit programma is vrije software: je kunt het herdistribueren en/of wijzigen
het onder de voorwaarden van de versie 3 GNU algemene publieke licentie als
gepubliceerd door de Free Software Foundation.

Dit programma is gedistribueerd in de hoop dat het bruikbaar,
maar zonder enige garantie; zelfs zonder de impliciete garantie van
VERKOOPBAARHEID of geschiktheid voor een bepaald doel. Zie de
GNU General Public License voor meer details.

U moet hebt ontvangen een kopie van de GNU General Public License
samen met dit programma. Zo niet, zie < http://www.gnu.org/licenses/>.

*/

Omvatten de draad bibliotheek zodat we kunnen beginnen met behulp van I2C.
#include < Wire.h >

Omvatten de liefde elektronica ADXL345 bibliotheek zodat we kunnen het gebruiken van de versnellingsmeter.
#include < ADXL345.h >

de servo-bibliotheek om te controleren de servo
#include < Servo.h >

Servo myservoA; maken van servo-object om te bepalen van een servo
maximaal acht servo-objecten kan worden gemaakt

Servo myservoB; maken van servo-object om te bepalen van een servo
maximaal acht servo-objecten kan worden gemaakt

int posA = 0; variabele op te slaan van de servo positie
int posB = 0;

Verklaar een globale exemplaar van de versnellingsmeter.
ADXL345 accel;

Instellen van een pin die we gaan gebruiken om aan te geven van onze status met behulp van een LED.
int statusPin = 2; Ik ben met behulp van digitale pin 2.

//------------------------------------------------------

VOID Setup
{
myservoA.attach(7); hecht de servo op pin 6 aan de servo-object
myservoB.attach(6); de servo op pin 7 hecht aan de servo-object

Beginnen met het opzetten van de seriële poort is, zodat we onze resultaten kunt uitvoeren.
Serial.begin(9600);
Start de I2C draad bibliotheek zodat we I2C gebruiken kunnen om te praten met de versnellingsmeter.
Wire.begin();

Een LED om aan te geven van onze status klaar.
pinMode (statusPin, OUTPUT);

Maak een exemplaar van de versnellingsmeter op het adres van de standaard (0x1D)
accel = ADXL345();

Controleer of de versnellingsmeter infact aangesloten is.
if(accel. EnsureConnected())
{
Serial.println ("verbonden met ADXL345.");
digitalWrite (statusPin, hoge); Als we zijn verbonden, het licht van onze status-LED.
}
anders
{
Serial.println kon ("niet verbinden met ADXL345.");
digitalWrite (statusPin, laag); Als wij niet zijn aangesloten, de onze LED uitschakelen.
}

De reeks van de versnellingsmeter in te stellen tot een maximum van 2G.
accel. SetRange (2, true);
Het vertellen van de versnellingsmeter om te beginnen met metingen.
accel. EnableMeasurements();
}

//----------------------------------
void loop
{

if(accel. IsConnected) / / als we zijn met de versnellingsmeter verbonden.
{
Lees de ruwe gegevens van de versnellingsmeter.
AccelerometerRaw ruwe = accel. ReadRawAxis();
Deze gegevens toegankelijk zijn als volgt:
int xAxisRawData = raw. XAxis;

Lees de * schaal * gegevens uit de versnellingsmeter (dit doet zijn eigen lezen van de versnellingsmeter
zodat u niet hoeft te ReadRawAxis voordat u deze methode gebruikt).
Deze nuttige methode geeft u de waarde in G dankzij de liefde elektronica-bibliotheek.
AccelerometerScaled geschaald = accel. ReadScaledAxis();
Deze gegevens toegankelijk zijn als volgt:
zweven xAxisGs = geschaald. XAxis;

We uitvoeren onze ontvangen gegevens.
Uitgang (rauw, schaal);

}

}

Uitvoer van de gegevens van de seriële poort.
VOID Output (AccelerometerRaw rauw, AccelerometerScaled geschaald)
{
Initialiseer de LED-pin als uitgang:
pinMode (8, OUTPUT);
pinMode (9, OUTPUT);
pinMode (11, OUTPUT);
pinMode (12, OUTPUT);

Vertel ons over de ruwe waarden afkomstig van de versnellingsmeter.
Serial.Print("RAW:\t");
Serial.Print (rauw. XAxis);
Serial.Print("");
Serial.Print (rauw. YAxis);
Serial.Print("");
Serial.Print (rauw. ZAxis);

Vertel ons over deze gegevens, maar schalen in nuttige eenheden (G).
Serial.Print ("\tScaled:\t");
Serial.Print (geschaald. XAxis);
Serial.Print ("G");
Serial.Print (geschaald. YAxis);
Serial.Print ("G");
Serial.Print (geschaald. ZAxis);
Serial.println("G");

led voor as weergeven
Als (geschaald. XAxis > 0) {}
digitalWrite (8, hoge); de LED aangezet
}
anders
{
digitalWrite (8, laag); verrekening van de LED

}
//
Als (geschaald. YAxis > 0) {}
digitalWrite (9, hoge); de LED aangezet
}
anders
{
digitalWrite (9, laag); verrekening van de LED

}
//
Als (geschaald. ZAxis > 0.8) {}
digitalWrite (11, hoge); de LED aangezet
}
anders
{
digitalWrite (11, laag); verrekening van de LED

}

servo verplaatsen volgens voorwaarden voelde---maken

Als (geschaald. ZAxis < 0.8) {}
Serial.println ("*** verhogen lager---Raise lager");
RaiseLower();
delay(265);
}

//
Als (geschaald. YAxis < 0) {}
Serial.println ("*** Twitch midden---Twitch midden");
twitchMiddle();
delay(400);

}

//
Als (geschaald. XAxis < 0 en geschaald. YAxis > 0 en geschaald. ZAxis > 0) {}
Serial.println ("*** rechts---Wink Wink rechts");
winkRight();
delay(265);
}

}

//-------------------------------
subroutine voor verhogen en lagere
VOID RaiseLower()
{

twitchshort();
twitch();

voor (posA = 0; posA < 135; posA += 1) / / gaat van 0 graden tot 135 graden
{/ / in stappen van 1 graad
myservoA.write(posA); servo naar positie in de variabele 'pos' vertellen
myservoB.write(180-posA);
delay(12); wacht 15ms voor de servo te bereiken de positie
}
voor (posA = 135; posA > = 1; posA-= 1) / / gaat van 135 graden tot 0 graden
{
myservoA.write(posA); servo naar positie in de variabele 'pos' vertellen
myservoB.write(180-posA);
delay(12); wacht 15ms voor de servo te bereiken de positie
}

}

subroutine voor kramp---
VOID twitch()
{
voor (posA = 0; posA < 45; posA += 1) / / gaat van 0 graden tot 45 graden
{/ / in stappen van 1 graad
myservoA.write(posA); servo naar positie in de variabele 'pos' vertellen
myservoB.write(180-posA);
delay(8); wacht 15ms voor de servo te bereiken de positie
}
voor (posA = 45; posA > = 1; posA-= 1) / / gaat van 45 graden naar 0 graden
{
myservoA.write(posA); servo naar positie in de variabele 'pos' vertellen
myservoB.write(180-posA);
delay(8); wacht 15ms voor de servo te bereiken de positie
}
}
subroutine voor korte kramp---
VOID twitchshort()
{
voor (posA = 0; posA < 25; posA += 1) / / gaat van 0 graden tot 25 graden
{/ / in stappen van 1 graad
myservoA.write(posA); servo naar positie in de variabele 'pos' vertellen
myservoB.write(180-posA);
delay(5); wacht 15ms voor de servo te bereiken de positie
}
voor (posA = 25; posA > = 1; posA-= 1) / / gaat van 25 graden naar 0 graden
{
myservoA.write(posA); servo naar positie in de variabele 'pos' vertellen
myservoB.write(180-posA);
delay(5); wacht 15ms voor de servo te bereiken de positie
}
}

subroutine voor kramp midden---
VOID twitchMiddle()
{
voor (posA posA < 100, 0; posA += 1 =) / / gaat van 100 graden naar 0 graden
{/ / in stappen van 1 graad
myservoA.write(posA); servo naar positie in de variabele 'pos' vertellen
myservoB.write(180-posA);
delay(10); wacht 15ms voor de servo te bereiken de positie
}
voor (posA = 100; posA > = 1; posA-= 1) / / gaat van 100 graden naar 0 graden
{
myservoA.write(posA); servo naar positie in de variabele 'pos' vertellen
myservoB.write(180-posA);
delay(10); wacht 15ms voor de servo te bereiken de positie
}
delay(250);
voor (posA posA < 120, 0; posA += 1 =) / / gaat van 100 graden naar 0 graden
{/ / in stappen van 1 graad
myservoA.write(posA); servo naar positie in de variabele 'pos' vertellen
myservoB.write(180-posA);
delay(10); wacht 15ms voor de servo te bereiken de positie
}
}

subroutine voor knipoog juiste---
VOID winkRight()
{
voor (posA posA < 120, 0; posA += 1 =) / / gaat van 0 graden tot 120 graden
{/ / in stappen van 1 graad
myservoA.write(posA); servo naar positie in de variabele 'pos' vertellen
myservoB.write(180-posA);
delay(10); wacht 15ms voor de servo te bereiken de positie
}
voor (posA = 120; posA > = 1; posA-= 1) / / gaat van 180 graden tot 0 graden
{
myservoA.write(posA); servo naar positie in de variabele 'pos' vertellen
myservoB.write(180-posA);
delay(10); wacht 15ms voor de servo te bereiken de positie
}
myservoB.write(180); andere oor verhogen als rusten zodat deze overeenkomen met rechtop
}
=== ultimo schets ===

Als u uw hoofd naar voren kantelen, moeten de oren doen een volledige omhoog en omlaag.

Als u uw hoofd naar rechts overhelt, moet het linker oor op en neer gaan.

Er zou een lichte wiggle als een lichte tilt.  De oren dalen tot een down positie.

Speel met de vertragingswaarden en servo timing loops voor levensecht spelplezier.

Vergeet niet, u wellicht om erachter te komen waar uw servo's zijn geplaatst aan 0 graden begin en welke manier ze draaien.  Dan moet u geschikt voor het verkeer met de opdrachten van de servo in de schets.

X, Y, Z en servo beweging in mijn prototype mag niet overeenkomen met uw etiketten.

Gerelateerde Artikelen

Animatronic kat oren

Animatronic kat oren

ik zag de video van de manifestatie voor de neurowear "necomimi" hersenen gecontroleerd kat oren en ik dacht dat ze waren vrij ontzagwekkend.  Ik ben net beginnen te leren van elektronica en ik dacht een leuk project om te beginnen zou mijn eige
Geodetische kat oren sieraden accessoire

Geodetische kat oren sieraden accessoire

Dit mooi stuk van juwelen haartoebehoren, geïnspireerd door Himmeli beeldhouw- en geodetische structuur, is zowel leuk en uniek. Gemaakt van eenvoudige koperen leidingen en bedrading van de kraal, zijn deze gedeconstrueerd kat oren super vers en in h
Kitty Kat oren

Kitty Kat oren

hier zijn de oren van de kat die overeenkomt met mijn kat kitty paw handschoenen!Materialen: harige stof, rekbare stof, haarband of hair clip.Tools: naaimachine/draad & naald, lijm pistool, papier, schaar, pen van de markering.Stap 1: Overzicht en sn
Arduino kat Detector SD Card Logger

Arduino kat Detector SD Card Logger

ik heb gebruikt:een Arduino Unoeen Parallax PIR bewegingsmeldereneen Studio van het Seeed SD Card ShieldArduino, schild, sd-kaart, logboekregistratie schild, opslag, loggerBekijk dit instructable op PIRs in geval u niet weet wat het is:Stap 1: Sluit
Arduino naai gemakkelijk Wearable Shield

Arduino naai gemakkelijk Wearable Shield

Wearable computing, e-textiel, zachte circuits of wat je wilt noemen, is een groeiende gebied van de technologie toepassen op kleding of accessoires zoals tassen, schoenen of rugzakken.  Het is een leuke en creatieve uitdaging die verder gaat dan all
Oren van het konijn op een Cap

Oren van het konijn op een Cap

wij zijn studenten van Singapore Polytechnic.Na het kijken van de beroemde Necomimi Arduino kat oren, hebben we besloten om het eens te proberen om ons vertrouwd te helpen ons met de versnellingsmeter en de arduino.Met behulp van de materialen die we
Gaming met gedachten/Mindwaves (w / Arduino)

Gaming met gedachten/Mindwaves (w / Arduino)

Wat doe je bevallen waarom we videospelletjes? Het antwoord is niet moeilijk: de videogames toont ons nieuwe, extreem goede uitdagingen. Ik speel videogames zelden, maar mijn favorieten zijn auto racen en open Wereldspelen net als de behoefte aan sne
Gebruik de kracht... Of je hersengolven? (multifuctional gedachte gecontroleerde systeem)

Gebruik de kracht... Of je hersengolven? (multifuctional gedachte gecontroleerde systeem)

Als een kind wilde ik altijd al een speciale vaardigheid, zoals het verplaatsen van objecten met gedachten of vliegen. Ik probeerde te verplaatsen van objecten met "de macht van mijn geest" natuurlijk met geen succes. Nou, ja, ik was en ik ben e
Kat de oren!

Kat de oren!

Mijn beest marionet Thursenberger is het schommelen van de oren van de kat!Deze kleine oren zijn handig als u zijn cosplaying als Meowth, Pusheen of een ander teken van de kat.Stap 1: materiaal Zal u-Cardstock-Harige stof van elke kleur-Roze zachte s
Arduino Beginner en elementaire elektronica Kit Primer

Arduino Beginner en elementaire elektronica Kit Primer

ik leerde dat een van mijn nichtjes had een belang in de programmering.  Ze werkte met robotica op middelbare school en heeft een zomer stage waar ze Arduinos hadden.  Ik denk dat ze was in staat om te lenen van een Arduino om te experimenteren met t
Kat zakje jumper

Kat zakje jumper

een voor het gezicht bont. Ik heb mijn snug rug verpest. En dus? Ik hoefde niet echt de mouwen.Stap 1: Kies een jumper ik ben met behulp van een oude trui en een zeer nieuwe knus deken, :/. Mijn trui heeft zakken, dus ik ben het verwijderen van hen z
Snel en eenvoudig kostuum dierlijke oren

Snel en eenvoudig kostuum dierlijke oren

het is de laatste minuut, en je moet een kostuum, snel!Deze methode kunt u het maken van een paar comfortabele dierlijke oren met een realistische vorm in ongeveer een half uur.  Het is vrij flexibel - of korte sierlijke kat oren of reus wiegende bun
Kat kostuum paneren

Kat kostuum paneren

kat paneren is de laatste kat-centric meme vegen van de internetz!  Het gaat om een stukje brood zetten van uw kat hoofd, fotograferen hun (vaak geschokt) reactie, en vervolgens het posten van de foto's op het internet.  (Het is net zoiets als planki
Norse kat en Nyan Cat

Norse kat en Nyan Cat

Allemaal zelfgemaakte en geen naaien nodig!Mijn vriendin en ik wilde proberen en doen een paren kostuumdat we zeker waren waren niet we gaan zien helemaal over de plaats dit Halloween, maar zou nog enigszins matching en een goede tijd, hebben dus we