TXT mig (3 / 3 steg)

Steg 3: Arduino koden

/ * TEXT MIG

Denna skiss för Arduino GSM shield, väntar på ett SMS-meddelande och visar det genom den seriella porten och på Kims TEXT ME maskin.

Lite kod från Javier Zorzano / TD http://arduino.cc/en/Tutorial/GSMExamplesReceiveSMS * /

/******************************************************************************************

* T H E C I R C U I T

*

* En extern strömkälla är obligatoriskt, annars fungerar inte GSM sköld

* GSM skölden är ansluten till en Arduino Uno

* Det finns två servon båda anslutna till GND och + 5V * roterande servo kontroll linjen går till stift 5

* Den vertikala servo kontroll linjen går till pinne 10

* Ready-lampan går till stift 11 via en 200 ohms motstånd

*******************************************************************************************/

#include / / include GSM biblioteket

#include / / include servo biblioteket

#define PINNUMBER "XXXX" / / nåla fast antal för GSM SIM-kort

#define rotaryPin 5 / / Anslut stift 5 till roterande servo

#define verticalPin 10 / / Anslut stift 10 till vertikala servo

#define readyLed 11 / / Anslut stift 11 till LED som visar att GSM-enhet är ansluten

GSM gsmAccess; Initialisera bibliotek instanser

GSM_SMS sms, char senderNumber [20]. Matrisen att hålla numret som ett SMS är Hämtad från

Servo rotaryServo; Skapa objekt för att styra roterande servo servo

Servo verticalServo; Skapa objekt för att styra vertikala servo servo

int rotation [] = {161, 154, 148, 142, 136, 130, 124, 118, 112, 105, 99, 92, 85, 78, 72, 66, 60, 54, 48, 42, 36, 30, 24, 19, 12, 7};

int numberOfLetters = 26.

int currentServoPosition;

int newServoPosition;

int upp = 170; Definiera två ytterligheter av vertikala servo

int ner = 117;

int inactivityTimer = 0;

/**************************************************************************************

* Ställ in

**************************************************************************************/

void setup()

{

Serial.BEGIN (9600); Initialisera seriell kommunikation på 9600 rotary

Servo.attach (rotaryPin); Fästa vertikal roterande servo

Servo.attach (verticalPin); Bifoga finger servo boolesk

notConnected = sant; GSM anslutningsstatus

parkArm(); Flytta till en säker plats om inte där redan

prompt();

parkArm(); Flytta till en säker plats

samtidigt (notConnected) / / vänta tills GSM-anslutning har upprättats

{

digitalWrite (readyLed, låg); Inaktivera ready-lampan

om (gsmAccess.begin (PINNUMBER) == GSM_READY) notConnected = false;

annat

{

Serial.println ("inte ansluten");

fördröjning (1000);

}

}

Serial.println ("GSM initieras"). Förtroende byggnaden meddelande

Serial.println ("väntar meddelanden");

digitalWrite (readyLed, hög); // Turn the ready LED on} /**************************************************************************************

* Huvudloop

**************************************************************************************/

void loop()

{

char c;

Om det finns inga SMS finns med jämna mellanrum göra en show

inactivityTimer = inactivityTimer ++; Räkna för varje slinga

om (inactivityTimer > 300) / / ca 1 SEK per slinga

{

inactivityTimer = 0; Återställa tomer

prompt(); Uppmärksamma dig själv

}

Heartbeat på LED att visa det kretsar fortfarande looping

digitalWrite (readyLed, låg); Inaktivera ready-lampan

Delay(100); Att lampan inte lyser

digitalWrite (readyLed, hög); Slå ready-lampan på

Om det finns ett SMS

om (sms.available())

{

inactivityTimer = 0; Om meddelandet sedan återställa inaktivitet timer

Serial.println ("meddelande från:");

Läs meddelandebyte och skriva ut dem

While(c=SMS.Read())

{

raiseLetterArm (c). "Skriv ut" plexiglas vapen

}

SMS.flush(); Radera meddelande från modem minne

} delay(1000);

}

/**************************************************************************************

* Fråga någon i närheten

**************************************************************************************/

void prompt()

{

raiseLetterArm (84). "Skriv ut" TEXT ME plexiglas vapen

raiseLetterArm (69).

raiseLetterArm (88).

raiseLetterArm (84).

raiseLetterArm (77).

raiseLetterArm (69).

}

/**************************************************************************************

* Lägga armen ur harm's way

**************************************************************************************/

void parkArm()

{

rotaryServo.attach (rotaryPin); Bifoga roterande servo

newServoPosition = 180; Parken där armen kan göra någon skada när bytte på/av

currentServoPosition = 9; Se till att det är tydligt att det behövs en övergång

rotateServo(); Flytta den roterande servon

Delay(2000); Vänta på servo att komma dit

rotaryServo.detach (); Tiga saker

}

/**************************************************************************************

* Höja brev armen anges

**************************************************************************************/

void raiseLetterArm (int charEntered)

{

rotaryServo.attach (rotaryPin); Bifoga servo på stift

"A" är 65 'a' är 97 "Z" är 90

om ((charEntered < 65) || ((charEntered > 91) & & (charEntered < 97)) || (charEntered > 123))

{

Då är inte A till ö så gör ingenting - vänta lite

}

annat

{

Göra gemener till versaler

om (charEntered > 96)

{

charEntered = charEntered - 32.

}

om ((charEntered > 64) & &(charEntered < 91))

{

newServoPosition = rotation [charEntered - 65]; Ange vart du ska vända armen

rotateServo();

}

Visa vad har skickats:

Serial.Print ("du skickade mig: \'");

Serial.write(charEntered);

Serial.Print ("\" ASCII-värde: ");

Serial.println(charEntered);

pressDown ();

}

rotaryServo.detach (); Stoppa slumpmässiga rörelser}

/*********************************************************************************

* Tryck fingret ner - se till att det är upp innan du återvänder

!*********************************************************************************/

void pressDown()

{

verticalServo.attach (verticalPin); Bifoga finger servo

Delay(500);

för (int jag = 0; jag < upp-ner, i ++)

{

verticalServo.write upp-i. Finger ner en grad i taget

Delay(10);

}

Delay(2000);

för (int jag = 0; jag < upp-ner, i ++)

{

verticalServo.write (down + i); Finger upp en grad i taget

Delay(10);

}

Delay(500);

verticalServo.detach (); Stoppa slumpmässiga rörelser}

/*********************************************************************************

* Flytta armen - se till att fingret är upp innan du använder it *** /

void rotateServo()

{

int skillnad;

int noOfSlowSteps = 5; Nej var 5 grader att flytta långsamt

int waitForServo = 20; Minskar inte för mycket eller missar steg

verticalServo.attach (verticalPin); Bifoga finger servo

verticalServo.write (upp); Kontrollera att den är ur vägen

verticalServo.detach (); Lossa

skillnaden = newServoPosition - currentServoPosition;

om (skillnaden > noOfSlowSteps)

{

rotaryServo.write (newServoPosition - noOfSlowSteps); Snabbt flytta

currentServoPosition = newServoPosition - noOfSlowSteps; Obs ny plats}

om (skillnaden < -1 * noOfSlowSteps)

{

rotaryServo.write (newServoPosition + noOfSlowSteps); Snabbt flytta

currentServoPosition = newServoPosition + noOfSlowSteps; Obs ny plats

}

skillnaden = newServoPosition - currentServoPosition; Beräkna om skillnaden om (skillnad > 0)

Sedan långsamt öka nuvarande position tills skillnaden är 0

{

för (int jag = 0; jag < skillnad + 1; i ++)

{

rotaryServo.write (currentServoPosition + i);

fördröjning (waitForServo);

}

}

annat / / sedan långsamt minska nuvarande position tills skillnaden är 0

{

för (int jag = 0; jag < (-1 * skillnaden) + 1; i ++)

{

rotaryServo.write (currentServoPosition - jag);

fördröjning (waitForServo);

}

}

currentServoPosition = newServoPosition; Kom ihåg vart arm är}

/**********************************************************************************

* Vindrutetorkare test (bortkommenterad)

**********************************************************************************/

/ * för (brev = 0; brev < numberOfLetters; brev ++)

{

newServoPosition = rotation [märka]; Ange vart du ska vända armen

rotateServo();

Serial.Print ("rotation [märka]");

Serial.println (rotation [märka]);

}

Delay(5000);

för (brev = numberOfLetters; brev + 1 > 0; brev--)

{

newServoPosition = rotation [märka]; Ange vart du ska vända armen

rotateServo();

Serial.Print ("rotation [märka]");

Serial.println (rotation [märka]);

}

Delay(5000); */

/**********************************************************************************

/ * Att kalibrera roterande servo (bortkommenterad) - måste ställa in potpin

**********************************************************************************/

/*

Val = analogRead(potpin); läser värdet i potentiometern (värde mellan 0 och 1023)

Val = karta (val, 0, 1023, 0, 179); skala den att använda den med servo (värde mellan 0 och 180)

rotaryServo.write(val); anger servo skalad värde

Delay(15); väntar på servo att komma dit

skriva ut värdet du läsa:

Serial.println(val); */

Se Steg
Relaterade Ämnen

Mönster, grejer & andra saker

Im flyttar till en ny lägenhet (01.02.14) vi bara köpte jag och min flickvän (Louise). Så jag ville gärna göra en samling med alla kinda skitcool kunde vi bygga där. som alltid jag falla över allt som finns så jag hoppas att andra människor än mig ka...

PiMiDi: En Raspberry Pi Midi låda, eller hur jag lärde mig slutade ängslas och älska MIDI

Detta är min andra instructable på använder Raspberry Pi för digitalt ljud, kontrollera ut min första instructable för hur ställa in och kontrollera egna ljudeffekter på en Raspberry Pi.Om du gillar jävlas med ljudeffekter eller göra digital musik, k...

Krämig päron "Pudding" Cocktail

detta instructable visar för att göra en cocktail med en flytande grädde topp. När man dricker, smutta saft cocktail genom grädde överst. Smaken av denna cocktail är som en nötaktig päron pudding, och eftersom detta är en blandad dryck med en tung fr...

10 steg till din egen logotyp i Inkscape (gratis) och använda kreativa marknaden for dummies som mig

HejLedsen för den långa titeln. Jag har några bekännelser också. Först är min ritning och konstruktionsarbeten färdigheter inte ens detsamma av en finger målare. Det andra tjäna jag inte pengar, så jag har alltid att göra saker som kan köpas, inklusi...

A Följ mig robot med enkel krets

Dess en mycket enkel och lätt att göra följa mig robot. Det kan känna närvaron av objekt som skall följas med hjälp av infraröd (IR) sensor. Det finns en IR-Led och två IR fotodiod (med tillbaka IR-Filter). När IR får speglas från ett närliggande obj...

Föraktliga mig Minon ungdom kostym

ta ledningen från detta instructable (Tack så mycket!) Jag gjorde min egen version med tweaks till den ursprungliga designen. Min design är nog lite svårare att få i och ut ur, men fortfarande massor av kul för alla.Verktyg:Google Sketchup w/smicker...

Föraktliga mig Kyle (grus hund)

Kyle från Despicable me är vinnare av den bästa ful hund till mig!Steg 1: kropp Kroppen för Kyle började med en stor oval boll form som skulle täcka bäraren till midjan. Jag gjorde min oval boll bas genom att bilda en king-size kudde i ett ägg form s...

BackCam eller hur jag lärde mig att sluta oroa och älskar att inte behöva slå mitt huvud

att hitta behovet för att kunna se direkt bakom mig också så framme med ut måste använda tid för att vända ganska ofta (något gamla Bat-dräkten kunde ha använt innan halsen uppgraderingen), jag ville skapa något som skulle låta mig se bakom mig och l...

Föraktliga mig alla hjärtans dag Box

detta är en Minion från Despicable Me.Steg 1: leveranser -eltejp-gult papper-gångjärn skokartong-limpistol-locket (som den typ du får på restauranger på barnens koppar).-sax-duck tape-Gem-knivenhär är ner valfria listan-batteri-gummiband-gammal tråd-...

Awsome $50 diy projektor (bra för mig)

jag varit söka på internet på stora föremål för "DIY projektorer" Jag byggde jag slutligen "framgångsrikt". Här är en snabb lista över leveranser jag använde.1-bärbar DVD-spelare med input (gratis trasiga laser öga därför "input&q...

Grunderna i MIG-svetsning

svetsning är processen att sammanfoga metall tillsammans strukturellt. För en fantastisk instructable som är en mycket djupgående titt på teori, detaljer och säkerhet om MIG-svetsning, läsa noahw's hur man Weld - MIG-svetsning.Detta instructable är i...

En stuga rum & A färgglada flicka: hjälpa. Snälla rösta på mig!

jag nyligen flyttat till San Francisco att närvara vid konstskola & rummet jag hyr ut har trä... överallt. Minst sagt, ser det ut en stuga. Med tanke på att jag skulle flytta från en 1 säng/1bath lägenhet till ett litet rum, och märk väl, en 6 timmar...

En alla hjärtans Fortune Teller-är de en för mig?

Hello!Jag kommer för att visa dig hur man gör en alla hjärtans Fortune Teller (Anton cacther) så du kan ta reda på om din hemliga kärlek älskar dig tillbaka!Detta är bara för skojs skull och kanske inte ger förutsägbara resultat!Njut och glad Alla hj...

JÄTTE! Flyger! :) MIG-25 FoxBat

här är min stolthet och glädje. Min personligen designade MIG-25 FoxBats. Det började som ett fritt val mönster utvecklingsprojekt för min utarbetandet klass. I stället för att göra en låda eller utskick tube byggde jag en till skala modell pappersfl...

Forbes lära mig snabbt: Kort kastar

mitt inträde till Forbesen lära mig snabb tävling. Pausa videon om du inte kan läsa bildtexterna. hålla practasing till din goda eftersom din första kasta inte är din bästa.**********************************RÖSTA PÅ MIG! Snälla!!!********************...

Köttfärssås till krämig basilika Pesto

Detta recept kräver fryst basilika pestosås gjord i förväg enligt den första videon. Pesto kan göras i större mängder och lagras under långa perioder för många snabba måltider i senare tider. Såsen är skapad med spagetti i potten omedelbart efter spa...

Krämig Curry Rigatoni (16 minuters pasta)

Denna maträtt är en som jag gör regelbundet för lunch eller middag eftersom dess snabba, friskare än de flesta pasta måltider och bara underbart läckra. Detta är perfekt för någon som mig, som inte har mycket tid och står inför många olika cravings....

Krämig Mac och ost

detta är den mest tröstande, krämig, cheesy skål med läckerheter du någonsin kommer att prova. Det är super lätt och möjligheterna är oändliga!Steg 1: Först...Koka upp en kastrull med vattenPrecis innan den börjar koka Lägg i en tesked av kyckling co...

Ört och kyckling Penne med krämig italiensk ost

läckra italienska läckerheter på ett kick! Denna måltid är verkligen lätt att göra. Du blanda örter, hugga och koka kycklingen, Koka pastan och blanda allt tillsammans med några andra ingredienser för en ört och kyckling Penne med krämig italiensk os...