Stap 8: Techy - met behulp van Arduino om een fysieke druk op de knop Stuur een tweet
Een ding dat ik voor de psychische waarzegster wilde was dat het een fysieke interactie vereist. Het heeft een toetsenbord nodig voor gegevensinvoer, zodat ik net hebben de terugkeersleutel daarover gebruikt kon. Echter, dit voelde niet genoeg voor een kermis/arcade type-ervaring. Ik wilde de gebruiker om een veel meer duidelijk doelbewuste actie om hun fortuin vertelde te maken.Dit was duidelijk waar een handige Arduino ging altijd de oplossing!
Vrij snel wist ik dat dit zou een knop. Uiteindelijk besloten heb ik op een goede oude deurbel...
De deurbel circuit is zeer eenvoudig
De volledige skethc van de Arduino is hier beschikbaar op GitHub:
https: println("Successfully tweeted the message: "+fortune + " to user: [ + status.getText() + "]."); // DEBUG STUFF github.com/rosemarybeetle/psychic-fortune-teller
Hieronder vindt u de dezelfde schets Arduino met enkele aantekeningen. U kunt zien is het vrij eenvoudig. Het ziet er voor een druk op de knop (zoals in het bovenstaande circuit)
delayCheck=millis();
De volgende regel is het definiëren van een variabele (switchPin) voor het opslaan van een heel, die zal worden gebruikt om te definiëren welke analoge ingang zal worden gebruikt.}
De volgende regel definieert een variabele om aan te tonen die PIN een LED is aangesloten opcatch(TwitterException e) {
De volgende regel is de initialisatie voor de analoge ingang van variabele & nbspprintln("Send tweet: " + e + " Status code: " + e.getStatusCode());} // end try
Initialiseren timerperiode...;
Een timer-variabele initialiseren...}
Een tweede vergelijking timer variabele initialiseren}
De setup-functie... } initialize the digital pin as an output. void grabTweets() { the loop routine runs over and over again forever:else {
Een seriële verbinding maken op de baud-rate 114200...tts.speak("You have not entered your Twitter user nayme. Sorry. I cannot reed your fortune. without this") ; // THE BOX WAS EMPTY
Verzenden van bevestigingsbericht via seriële USB-poort. Dit wordt gebruikt bij het testenSerial.write("Serial connection initiated")}
pinMode(led, OUTPUT)// <<<<<<<<<<<<<<<<<<<<<<<<< END SEND TWEETS <<<<<<<<<<<<<<<
// >>>>>>>>>>>>>>>>>>>>>>>>> GRAB THOSE TWEETS >>>>>>>>>>>>>
De hoofdlus functie...color cl3 = color(70, 130, 180);
De volgende regel is het maken van de controle van de Arduino voor elke analoge signaal aan op de analoge pin 0...fill (cl3);
Als de deurbel wordt gedrukt, zullen de input voor analoge pin 0 5V. Dit komt overeen met 1024. De IF-instructie bevat een drempel van 900 (ongeveer 4.5V)rect(0, (height/2)-120, width, 90);
opnieuw eerste Timer variabele (timerSend)fill(0, 25, 89, 255);
Controleer of de periode tussen nu en het laatst gereset (timerSend-timerCheck) is groter is dan de standaardperiode (timerPeriod)
Opmerking in eerste instantie dat zal dit gelden. Na de eerste drukpers zullen het valse totdat een periode is verstreken. Dit is het voorkomen van accidental meerdere stuurt voor seriële data waardoor de waarzegster te proberen te spreken hetzelfde meerdere malentextSize(70);
Het gecodeerde bericht "fireTweet" naar de verwerking script te verzenden via de seriële poort (USB)text("Reading the collective mind...", (width/8)-120, (height/2)-50); // THE ALERT FOR UPDATE CHECKING PAUSE
Eenmaal verzonden reset het selectievakje timer variabele. Dit zal worden usd in de als controle om te voorkomen dat refiring te vroegtimerCheck=millis()loadRemoteAdminSettings(); // GET THE LATEST ADMIN FROM GOOGLE SPREADSHEET
analogValue = 0//Credentials ConfigurationBuilder cbTest = new ConfigurationBuilder(); reset - this is used to ensure the value is reset after a successful release of the switch
// ------- NB - the variables twitOAuthConsumerKey, etc. ARE IN A SEPARATE SHEET ADD ANY OTHER TRIGGERS HERE THAT COME FROM THIS INTERACTION
cbTest.setOAuthConsumerKey(twitOAuthConsumerKey);
cbTest.setOAuthConsumerSecret(twitOAuthConsumerSecret);
cbTest.setOAuthAccessToken(twitOAuthAccessToken);
.