2016-06-08 3 views
1

Bonjour, mon équipe et moi sommes nouveaux dans les langages de codage, nous essayons par de multiples méthodes de faire un indicateur basé sur arduino qui montre quel mot clé sur deux Nous avons essayé d'utiliser adafruit + IFTTT et nous avons réussi à avoir un flux de tweets en temps réel de deux hashtags, mais nous essayons de trouver un moyen de recueillir cette information et de faire un code comparer le nombre total de hashtags et envoyer la commande à Arduino pour épiner le servomoteur en fonction du résultat. Ensuite, nous avons essayé de le faire en utilisant le langage de traitement et nous avons trouvé ce code qui affiche des hashtags à l'écran, mais nous n'avons pas pu chercher deux mots et comparer les nombres, puis envoyer un signal à arduino:Comment compter les tweets nombre de 2 hashtags et afficher lequel est le plus mentionné

//http://codasign.com/tutorials/processing-and-twitter 

import twitter4j.conf.*; 
import twitter4j.*; 
import twitter4j.auth.*; 
import twitter4j.api.*; 
import java.util.*; 

Twitter twitter; 
String searchString = "#poznan"; 

List<Status> tweets; 

int currentTweet; 

void setup() 
{ 
    size(800, 600); 

    ConfigurationBuilder cb = new ConfigurationBuilder(); 
    cb.setOAuthConsumerKey(""); 
    cb.setOAuthConsumerSecret(""); 
    cb.setOAuthAccessToken(""); 
    cb.setOAuthAccessTokenSecret(""); 

    TwitterFactory tf = new TwitterFactory(cb.build()); 

    twitter = tf.getInstance(); 

    getNewTweets(); 

    currentTweet = 1; 

    thread("refreshTweets"); 
} 

void draw() 
{ 
    fill(0, 40); 
    rect(0, 0, width, height); 

    currentTweet = currentTweet + 1; 

    if (currentTweet >= tweets.size()) 
    { 
    currentTweet = 0; 
    } 

    Status status = tweets.get(currentTweet); 

    fill(200); 
    text(status.getText(), random(width), random(height), 300, 200); 

    delay(250); 
} 

void getNewTweets() 
{ 
    try 
    { 
    Query query = new Query(searchString); 
    //query.setSince("2016-03-17"); 
    //query.setCount(100); 
    query.setResultType(Query.RECENT); 
    QueryResult result = twitter.search(query); 

    tweets = result.getTweets(); 
    println(tweets.size()); 
    } 
    catch (TwitterException te) 
    { 
    System.out.println("Failed to search tweets: " + te.getMessage()); 
    System.exit(-1); 
    } 
} 

void refreshTweets() 
{ 
    while (true) 
    { 
    getNewTweets(); 

    println("Updated Tweets"); 

    delay(60000); 
    } 
} 

nous recherchons des codes alternatifs et des méthodes pour rendre notre travail concept nous sommes ouverts à des suggestions, ne hésitez pas à nous écrire.

+0

Stack Overflow est vraiment pas conçu pour général « comment puis-je faire » des questions de type. Vous devez diviser votre problème en plus petits morceaux: pouvez-vous créer un petit exemple d'esquisse qui récupère simplement les tweets qui contiennent un certain hashtag? Commencez avec ça, et postez un [mcve] si vous êtes coincé. Essayer de marteler le code que vous avez trouvé sur internet et que vous ne comprenez pas vraiment vous mènera à plus de maux de tête. Utilisez ce code comme un moyen de comprendre ce qui se passe, puis écrivez votre propre code. Bonne chance. –

Répondre

0

Vous devriez probablement diviser ce problème en plus petits.

A. Comment me connecter à Twitter et «écouter» deux hashtags, en les comptant et en les comparant.

B. Comment utiliser arduino pour déplacer un servo selon un certain nombre arbitraire dans une plage spécifique.

C. Comment puis-je communiquer un numéro entre Arduino et le traitement, via le canal désiré (wi-fi? Bluetooth? Usb?)

Bien sûr, cela peut être briser encore plus loin, et peut-être devrait le faire.

Il va être beaucoup plus facile de développer et déboguer votre code. Une fois que vous avez tout compris, commencez à les combiner.

Pour B et C Je peux aider très peu, ça fait quelque temps depuis la dernière fois que j'ai touché mon Arduino. Mais ce ne sont pas vraiment difficiles à faire. Dans the Processing forum vous pouvez trouver beaucoup de réponses sur la communication série avec Arduino. La recherche du forum n'est pas très bonne. Mais vous pouvez toujours utiliser Google. Quelque chose comme: serial arduino site:processing.org fera la recherche dans tous les forums (c'est comme la troisième version) et vous facilitera la navigation dans les résultats. Pour A, je vous suggère d'essayer un "flux" de streamingAPI de Twitter. Une fois que vous commencez à obtenir des résultats, il suffit de les ajouter à différents List s, comme

hashtag1 et hashtag2.

La taille de chaque liste est ce que vous cherchez (si je reçois ce droit)

hashtag1.size() - hashtag2.size() vous donnera le « équilibre » entre eux.

éditer: Si, vous n'avez pas besoin de ces statuts, vous pouvez simplement ajouter deux entrées ... (h1 ++, h2 ++), et oublier les listes.

Voici quelques exemples de code de flux pour vous aider à démarrer:

import twitter4j.util.*; 
import twitter4j.*; 
import twitter4j.management.*; 
import twitter4j.api.*; 
import twitter4j.conf.*; 
import twitter4j.json.*; 
import twitter4j.auth.*; 


TwitterStream twitterStream; 

// if you enter keywords here it will filter, otherwise it will sample 
String keywords[] = { 
//all you need is... 
    "love" 
}; 



void setup() {  
    size(100, 100);  
    background(0); 
    openTwitterStream(); 
} 


void draw() {  
    background(0); 
} 


// Stream it 
void openTwitterStream() { 

    ConfigurationBuilder cb = new ConfigurationBuilder(); 

    //fill oAuth data below 
    cb.setOAuthConsumerKey(""); 
    cb.setOAuthConsumerSecret(""); 
    cb.setOAuthAccessToken(""); 
    cb.setOAuthAccessTokenSecret(""); 
    cb.setDebugEnabled(true); 
    cb.setJSONStoreEnabled(true); 
    twitterStream = new TwitterStreamFactory(cb.build()).getInstance(); 

    FilterQuery filtered = new FilterQuery(); 



    filtered.track(keywords); 

    twitterStream.addListener(listener); 

    if (keywords.length==0) { 
    // sample() method internally creates a thread which manipulates TwitterStream 
    // and calls these adequate listener methods continuously. With a sample of the fireRose 
    twitterStream.sample(); 
    } else { 
    twitterStream.filter(filtered); 
    } 
    println("connecting..."); 
} 


// Implementing StatusListener interface 
StatusListener listener = new StatusListener() { 

    //@Override 
    public void onStatus(Status status) { 
    System.out.println("@" + status.getUser().getScreenName() + " - " + status.getText()); 
    } 

    //@Override 
    public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) { 
    System.out.println("Got a status deletion notice id:" + statusDeletionNotice.getStatusId()); 
    } 

    //@Override 
    public void onTrackLimitationNotice(int numberOfLimitedStatuses) { 
    System.out.println("Got track limitation notice:" + numberOfLimitedStatuses); 
    } 

    //@Override 
    public void onScrubGeo(long userId, long upToStatusId) { 
    System.out.println("Got scrub_geo event userId:" + userId + " upToStatusId:" + upToStatusId); 
    } 

    //@Override 
    public void onStallWarning(StallWarning warning) { 
    System.out.println("Got stall warning:" + warning); 
    } 

    //@Override 
    public void onException(Exception ex) { 
    ex.printStackTrace(); 
    } 
}; 
+0

Très bien, merci à tous pour votre temps, nous avons tout compris. – Hameem