Pages: [1] 2   Go Down
Author Topic: Twitter Client=> naar eigen account veranderen [OPGELOST!]  (Read 4620 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ik wil het twitterclient maken voor school. Maar ik vind niet hoe ik hem moet aanpassen. Nu heb ik al connectie met twitter en lees ik blijkbaar de tweets van een 'RusselOffical' uit.
De bedoeling zou zijn dat ik dan voor elke letter/cijfer/symbool uit de tweet een licht code maak.
bv A= Rood aan, Rood Aan, Rood aan, en dan B= Rood Aan, Rood Aan, en Blauw aan,...
Deze code wou ik gebruiken omdat hij gebruikt maakt van de DHCP om zijn IP-adres te bepalen en ik hem daardoor makkelijk op verschillende plaatsen kon aansluiten.

Code:
/*
  Twitter Client with Strings
 
 This sketch connects to Twitter using an Ethernet shield. It parses the XML
 returned, and looks for <text>this is a tweet</text>
 
 You can use the Arduino Ethernet shield, or the Adafruit Ethernet shield,
 either one will work, as long as it's got a Wiznet Ethernet module on board.
 
 This example uses the DHCP routines in the Ethernet library which is part of the
 Arduino core from version 1.0 beta 1
 
 This example uses the String library, which is part of the Arduino core from
 version 0019.  
 
 Circuit:
 * Ethernet shield attached to pins 10, 11, 12, 13
 
 created 21 May 2011
 by Tom Igoe
 
 This code is in the public domain.
 
 */
#include <SPI.h>
#include <Ethernet.h>


// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
  0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x01 };
IPAddress ip(192,168,1,20);

// initialize the library instance:
EthernetClient client;

const unsigned long requestInterval = 60000;  // delay between requests

char serverName[] = "api.twitter.com";  // twitter URL

boolean requested;                   // whether you've made a request since connecting
unsigned long lastAttemptTime = 0;            // last time you connected to the server, in milliseconds

String currentLine = "";            // string to hold the text from server
String tweet = "";                  // string to hold the tweet
boolean readingTweet = false;       // if you're currently reading the tweet

void setup() {
  // reserve space for the strings:
  currentLine.reserve(256);
  tweet.reserve(150);
  // initialize serial:
  Serial.begin(9600);
  // attempt a DHCP connection:
  Serial.println("Attempting to get an IP address using DHCP:");
  if (!Ethernet.begin(mac)) {
    // if DHCP fails, start with a hard-coded address:
    Serial.println("failed to get an IP address using DHCP, trying manually");
    Ethernet.begin(mac, ip);
  }
  Serial.print("My address:");
  Serial.println(Ethernet.localIP());
  // connect to Twitter:
  connectToServer();
}

void loop()
{
  if (client.connected()) {
    if (client.available()) {
      // read incoming bytes:
      char inChar = client.read();

      // add incoming byte to end of line:
      currentLine += inChar;

      // if you get a newline, clear the line:
      if (inChar == '\n') {
        currentLine = "";
      }
      // if the current line ends with <text>, it will
      // be followed by the tweet:
      if ( currentLine.endsWith("<text>")) {
        // tweet is beginning. Clear the tweet string:
        readingTweet = true;
        tweet = "";
      }
      // if you're currently reading the bytes of a tweet,
      // add them to the tweet String:
      if (readingTweet) {
        if (inChar != '<') {
          tweet += inChar;
        }
        else {
          // if you got a "<" character,
          // you've reached the end of the tweet:
          readingTweet = false;
          Serial.println(tweet);  
          // close the connection to the server:
          client.stop();
        }
      }
    }  
  }
  else if (millis() - lastAttemptTime > requestInterval) {
    // if you're not connected, and two minutes have passed since
    // your last connection, then attempt to connect again:
    connectToServer();
  }
}

void connectToServer() {
  // attempt to connect, and wait a millisecond:
  Serial.println("connecting to server...");
  if (client.connect(serverName, 80)) {
    Serial.println("making HTTP request...");
    // make HTTP GET request to twitter:
    client.println("GET /1/statuses/user_timeline.xml?screen_name=arduino&count=1 HTTP/1.1");
    client.println("HOST: api.twitter.com");
    client.println();
  }
  // note the time of this connect attempt:
  lastAttemptTime = millis();
}
« Last Edit: May 16, 2012, 07:30:37 am by JO3RI » Logged

Global Moderator
Netherlands
Offline Offline
Shannon Member
*****
Karma: 168
Posts: 12417
In theory there is no difference between theory and practice, however in practice there are many...
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


Er zit een twitter name in de code en die moet je aanpassen. Om te weten waar die zit moet je de code begrijpen, daarvoor leze men eerst de twitter api documentatie smiley

Logged

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ik heb het uiteindelijk gevonden, niet op https://dev.twitter.com/, want dat was te moeilijk voor mij. Gewoon door 3dagen te googlen.

Code:
void connectToServer() {
  // attempt to connect, and wait a millisecond:
  Serial.println("connecting to server...");
  if (client.connect(serverName, 80)) {
    Serial.println("making HTTP request...");
  // make HTTP GET request to twitter:
    client.println("GET /1/statuses/user_timeline.xml?screen_name=jariboe&count=1 HTTP/1.1");  // jariboe is de account naam, gewoon dit aanpassen en klaar is klaas.
    client.println("HOST: api.twitter.com");
    client.println();
  }
  // note the time of this connect attempt:
  lastAttemptTime = millis();
}

Nu nog proberen mijn string deftig te verwerken.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Omdat er aanvankelijk problemen waren met mijn Ethernet shield, had ik al een code uitgeschreven met de Serial Monitor
Code:
int leD1 = 8;                
int leD2 = 7;
int leD3 = 6;
int leD4 = 5;
                                        // de led als een integer instellen, dan kan hij verschillende waarden aan nemen
void setup ()
{
Serial.begin(38400);                    //de arduino kan seriele waarden lezen, met een snelheid van 9600 baud/s
  pinMode(leD1, OUTPUT);
  pinMode(leD2, OUTPUT);
  pinMode(leD3, OUTPUT);
  pinMode(leD4, OUTPUT);
}

void loop()                              // dit is de volledige bassiscode via de serial monitor, hier uit kan zeker al de lichtcode gevormd worden,
                                         // als er dan moet worden aangepast is het waarschijnlijk enkel de "val"
{   while (Serial.available() == 0);     // pas reageren als er iets is in de serail monitor
   char val = Serial.read();             // het teken direct inlezen
                                         //De "val" is weergegeven als een ASCII-waarde; dit kan zo blijven, want dan is er een aparte en al juiste onder verdeling    
if (val ==97)                            //is de ingegeven waarde a dan...
      {digitalWrite (leD1, HIGH);        //led 1 aan
       delay (1000);                     // laatste actie aanhouden
       digitalWrite (leD1, LOW);         //led 1 uit en naar de volgende
       delay (100);
      digitalWrite (leD1, HIGH);        //led 1 aan
       delay (1000);                    // laatste actie aanhouden
       digitalWrite (leD1, LOW);        //led 1 uit en naar de volgende
       delay (100);
       digitalWrite (leD1, HIGH);       //led 1 aan
       delay (1000);                    // laatste actie aanhouden
       digitalWrite (leD1, LOW);        //led 1 uit en naar de volgende
       delay (100);
       digitalWrite (leD1, HIGH);       //led 1 aan
       delay (1000);                    // laatste actie aanhouden
       digitalWrite (leD1, LOW);        //led 1 uit en naar de volgende
       delay (100); }
Serial.println(val);                  
}

Ik hoopte dat ik dan gewoon die 'val' mocht gelijk zetten aan de 'client' dat het dan zou werken. Blijkbaar niet. Zelf snap ik echt niet meer waarom.
Bij de serialmonitor lees in principe toch ook een string die wordt doorgestuurd. Of zijn dit direct Char's ? Is er dan een simpel manier om de string 'client' naar Char's te brengen?
En nog een laatste vraagje is er een trukje om de refresh-rate (ik weet niet de officiele benamming) van twitter te omzeilen bij het testen? Want ik ben blijkbaar al meer dan 150 per uur mijn tweets aan het inlezen.
Mijn code nu:
Code:
/*
  Twitter Client with Strings
 
 This sketch connects to Twitter using an Ethernet shield. It parses the XML
 returned, and looks for <text>this is a tweet</text>
 
 You can use the Arduino Ethernet shield, or the Adafruit Ethernet shield,
 either one will work, as long as it's got a Wiznet Ethernet module on board.
 
 This example uses the DHCP routines in the Ethernet library which is part of the
 Arduino core from version 1.0 beta 1
 
 This example uses the String library, which is part of the Arduino core from
 version 0019.  
 
 Circuit:
  * Ethern
  et shield attached to pins 10, 11, 12, 13

 
 
 created 21 May 2011
 by Tom Igoe
 
 This code is in the public domain.
 
 */
#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {   0x90, 0xA2, 0xDA, 0x07, 0x00, 0x2B };
IPAddress ip(10,25,32,60);

// initialize the library instance:
EthernetClient client;
// de tijd waarmee ge hercheckt word, best hoger dan 1440, want je mag maar zo'n 150 keer de status van twitter aanvragen per uur.
const int requestInterval = 6000
;  // delay between requests

char serverName[] = "api.twitter.com";  // twitter URL

boolean requested;                   // whether you've made a request since connecting
long lastAttemptTime = 0;            // last time you connected to the server, in milliseconds

String currentLine = "";            // string to hold the text from server
String tweet = "";                  // string to hold the tweet
boolean readingTweet = false;       // if you're currently reading the tweet

// de mogelijke variabelen om te schakelen benoemen
int leD1 = 8;                
int leD2 = 7;
int leD3 = 6;
int leD4 = 5
;

void setup() {
  // de leds als output benoemen
  pinMode(leD1, OUTPUT);
  pinMode(leD2, OUTPUT);
  pinMode(leD3, OUTPUT);
  pinMode(leD4, OUTPUT);
  
  // reserve space for the strings:
  currentLine.reserve(256);
  tweet.reserve(150);

// initialize serial:
  Serial.begin(9600);
  // attempt a DHCP connection:
  if (!Ethernet.begin(mac)) {
    // if DHCP fails, start with a hard-coded address:
    Ethernet.begin(mac, ip);
  }
  // connect to Twitter:
  connectToServer();
}

void loop()
{
  if (client.connected()) {
    if (client.available()) {
      // read incoming bytes:
      char inChar = client.read();
      // add incoming byte to end of line:
      currentLine += inChar;
      // if you get a newline, clear the line:
      if (inChar == '\n') {
        currentLine = "";
      }
      // if the current line ends with <text>, it will
      // be followed by the tweet:
      if ( currentLine.endsWith("<text>")) {
        // tweet is beginning. Clear the tweet string:
        readingTweet = true;
        tweet = "";
      }
      // if you're currently reading the bytes of a tweet,
      // add them to the tweet String:
      if (readingTweet) {
        if (inChar != '<') {
          tweet += inChar;
        }
        else {
          // if you got a "<" character,
          // you've reached the end of the tweet:
          readingTweet = false;
          Serial.println(tweet);  
          // close the connection to the server:
          client.stop();
        }
      }
    }  
  }
  else if (millis() - lastAttemptTime > requestInterval) {
    // if you're not connected, and two minutes have passed since
    // your last connection, then attempt to connect again:
    connectToServer();
  }
}

void connectToServer() {
  // attempt to connect, and wait a millisecond:
  Serial.println("connecting to server...");
  if (client.connect(serverName, 80)) {
     Serial.println("making HTTP request...");
  // make HTTP GET request to twitter:
    client.println("GET /1/statuses/user_timeline.xml?screen_name=jaribeo&count=1 HTTP/1.1");
    client.println("HOST: api.twitter.com");
    client.println();

   if (client ==97)                   //werkt nog niet!
   //is de ingegeven waarde a dan...
      {digitalWrite (leD1, HIGH);        //led 1 aan
       delay (100);                     // laatste actie aanhouden
       digitalWrite (leD1, LOW);         //led 1 uit en naar de volgende
       delay (100);
      digitalWrite (leD1, HIGH);        //led 1 aan
       delay (100);                    // laatste actie aanhouden
       digitalWrite (leD1, LOW);        //led 1 uit en naar de volgende
       delay (100);
       digitalWrite (leD1, HIGH);       //led 1 aan
       delay (100);                    // laatste actie aanhouden
       digitalWrite (leD1, LOW);        //led 1 uit en naar de volgende
       delay (100);
  }
}
  // note the time of this connect attempt:
  lastAttemptTime = millis();
}  

 
Ik heb een Uno als basis. Jullie kunnen me echt massa's helpen, ik ben geen programeur en probeer me het zelf te leren. Maar dat gaat soms veel te langzam  smiley-confuse
Logged

Forum Moderator
Hamme, Belgium
Offline Offline
Sr. Member
*****
Karma: 4
Posts: 386
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Misschien helpt het om mijn code eens te proberen. Ik heb het anders aangepakt. Je kan er over lezen in deze forum post:

http://arduino.cc/forum/index.php/topic,93480.0.html

Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Jouw code is echt veel beter, toch lukt het me nog niet volledig   smiley-red
Ik heb (denk ik) de tweet naar char's omgezet en dan in een while lus gezet.
Mijn probleem is dat hij volgens mij enkel de eerste letter verwerkt terwijl hij zou moeten in een grote loop gaat tot de karaters 'op' zijn.
Mijn test tweet is abaaabbb. Zodat ik alle 'eerste' letters kan verwerken en zo naar het het ASCCI-alfabet.
Waarschijnlijk is het de omzetting naar de chars waar het fout loopt.


Code:
#include <SPI.h>
#include <Ethernet.h>
#include <TextFinder.h>


// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 0x90, 0xA2, 0xDA, 0x07, 0x00, 0x2B };
byte ip[] =  { 10,25,32,90}; //change this
byte subnet[] = {255,255,0,0}; //change this
byte gateway[] = {10,25,255,254}; //change this
byte dns[] = {10,56,1,1}; //change this
EthernetClient client;
String TwitterName ="jariboe"; //change this to your own twittername, or follow me ;-)
char tweet[140];
String SearchString ="<title>";
byte charsize;
char serverName[] = "api.twitter.com";  // twitter URL
int leD1 = 8;               
int leD2 = 7;
int leD3 = 6;
int leD4 = 5;

void setup() {
  pinMode(leD1, OUTPUT);
  pinMode(leD2, OUTPUT);
  pinMode(leD3, OUTPUT);
  pinMode(leD4, OUTPUT);
  // initialize serial:
  Serial.begin(9600);
  // attempt a DHCP connection:
  Ethernet.begin(mac, ip, dns, gateway, subnet);
  // connect to Twitter:
  delay(3000);
}

void loop(){
  Serial.println("connecting to server...");
  if (client.connect(serverName, 80)) {
        TextFinder  finder( client,2 );
        Serial.println("making HTTP request...");
        // make HTTP GET request to twitter:
        client.print("GET /1/statuses/user_timeline.rss?screen_name=");
        client.print(TwitterName);
        client.println("&count=1 HTTP/1.1");
        client.println("HOST: api.twitter.com");
        client.println();
        Serial.println("sended HTTP request...");
    while (client.connected()) {
      if (client.available()) {
        Serial.println("looking for tweet...");
        SearchString = SearchString + TwitterName + ": ";
        charsize = SearchString.length() + 1;
        char StartHere[charsize];
        char EndHere[] = "</title>";
        SearchString.toCharArray(StartHere,charsize);
        if((finder.find("<item>")&&(finder.getString(StartHere,EndHere,tweet,140)!=0)))
        Serial.println(tweet);
                         char tweet;
                        {   while (tweet > 0);     // pas reageren als er iets is in de tweet zit
                           Serial.println("in de while lus");
                                             
                      if (tweet == 97 )                       //is de ingegeven waarde a dan... Telt enkel voor chars
                            {digitalWrite (leD1, HIGH);        //led 1 aan
                             delay (1000);                     // laatste actie aanhouden
                             digitalWrite (leD1, LOW);         //led 1 uit en naar de volgende
                             delay (100);
                              Serial.println("in de if lus");}
                      else
                            {digitalWrite (leD2, HIGH);        //led 2 aan
                              delay (1000);                     // laatste actie aanhouden
                              digitalWrite (leD2, LOW);         //led 2 uit en naar de volgende
                              delay (100);
                              {Serial.println("in de else lus");}
                     }}
                     
  break;
 
 
      }
    }
    delay(1);
    client.stop();
  }
  Serial.println("delay...");
  delay (60000);
  // don't make this less than 30000 (30 secs), because you can't connect to the twitter servers faster (you'll be banned)
  // off course it would be better to use the "Blink without delay", but I leave that to you.
}

En dit komt dan uit mijn serial monior
Quote
connecting to server...
making HTTP request...
sended HTTP request...
looking for tweet...
abaaabbb
in de while lus
in de else lus
delay...

Alvast bedankt voor jullie tijd!
Logged

Forum Moderator
Hamme, Belgium
Offline Offline
Sr. Member
*****
Karma: 4
Posts: 386
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Wat je eigenlijk moet doen, is de twitter in een buffer laden, wat mijn code al doet en in plaats van de buffer dan op de serial monitor te tonen, moet je hem weer laten "onderzoeken".

Dat kan heel simpel door te kijken naar de het eerste teken in de buffer en te vergelijken met een voorwaarde in de trend van if tweet[0] == "a"  en dan de tweede: if tweet[1] == "b"

Je moet wel zelf de code schrijven, ik geef jou de aanzet.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ik heb het getest met jouw systeem en nog krijg ik het niet goed. Als ik gewoon 'if tweet[0] == "a"' er insteek krijg ik een waarschuwing dat hij haakjes verwacht.
Als ik die er bij doe zegt hij dat er fout is namelijk: ' TwitterBeter:60: error: ISO C++ forbids comparison between pointer and integer'
Moet er wel bij zeggen dat ik hiervoor al de lijn 'char tweet' er uit heb gehaald. Met die er in kreeg ik andere fout: 'TwitterBeter:60: error: invalid types 'char[int]' for array subscript'.
 smiley-mr-green
Graag wil ik mijn code zelf opstellen smiley
En nog een vraagje als ik werk met if tweet[0] == "a"' vergelijkt hij dan enkel de eerste letter met a of gaat hij dan uiteindelijk alle letters vergelijken daarmee?  smiley-roll-sweat
Ik bedoel moet ik mijn code dan uiteindelijk zo uitwerken:
if tweet[0] == "a"'
if tweet[0] == "b"'
if tweet[0] == "c"'
.....
if tweet[1] == "a"'
if tweet[1] == "b"'
if tweet[1] == "c"'
....
En dat dan tot if tweet[140] == "?"'

Na weekendje sukkelen zou ik graag weer op de rails komen, of de arduino gaat hier nog eens vleugels krijgen  smiley-grin
Logged

Forum Moderator
Belgium
Offline Offline
Edison Member
*****
Karma: 58
Posts: 1721
Arduino rocks; but with my plugin it can fly rocking the world ;-)
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

probeer effe
Code:
if (tweet[0] == 'a')
{
}
Logged

Do not PM me a question unless you are prepared to pay for consultancy.
Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -

Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Die 'a' werkt, allezins heb ik er geen foutmeldingen meer door. Maar nog krijg ik het niet goed.
De tweetverwerking zelf krijg ik nog altijd niet goed smiley-sad. Ik heb het nu zo aangepast:
De 97 staat er in omdat ik zeker wou zijn als hij misschien toch nog op de ASSCI-code zou overgaan, dat ik het dan ook kon verwerken.

Code:
Serial.println(tweet);
                          char tweet;
                        {   while (tweet > 0);     // pas reageren als er iets is in de tweet zit
                           Serial.println("in de while lus");
                                             
                      if (tweet == '97' )                       //is de ingegeven waarde a dan... Telt enkel voor chars
                            {//digitalWrite (leD1, HIGH);        //led 1 aan
                             //delay (1000);                     // laatste actie aanhouden
                             //digitalWrite (leD1, LOW);         //led 1 uit en naar de volgende
                             //delay (100);
                              Serial.println("97 verwerkt!");}
                       if (tweet == 'a' )                       //is de ingegeven waarde a dan... Telt enkel voor chars
                            {//digitalWrite (leD1, HIGH);        //led 1 aan
                             //delay (1000);                     // laatste actie aanhouden
                             //digitalWrite (leD1, LOW);         //led 1 uit en naar de volgende
                             //delay (100);
                              Serial.println("a verwerkt!");}
                      else
                            {//digitalWrite (leD2, HIGH);        //led 2 aan
                              //delay (1000);                     // laatste actie aanhouden
                              //digitalWrite (leD2, LOW);         //led 2 uit en naar de volgende
                              //delay (100);
                              {Serial.println("Niets verwerkt");}
                     }}
                     
  break;

En dat wordt dan
Quote
connecting to server...
making HTTP request...
sended HTTP request...
looking for tweet...
abaaabbb
in de while lus
Niets verwerkt
delay...
Mijn tweet is nog altijd abaaabbb.
Ik heb echt het gevoel dat ik er zo dicht bij ben.... Nog iemand een (hopelijk) laatste tip?  smiley-razz

Joost
Logged

Forum Moderator
Belgium
Offline Offline
Edison Member
*****
Karma: 58
Posts: 1721
Arduino rocks; but with my plugin it can fly rocking the world ;-)
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

De code uit je post kan volgens mij niet compileren.
Ik zie volgende fouten
Code:
if (tweet == '97' ) 
'97' slaat nergens op in C.
Code:
Serial.println(tweet);
                          char tweet;
Je gebruikt tweet voor je het declareerd wat niet kan in C.
Code:
                          char tweet;
                        {   while (tweet > 0);     // pas reageren als er iets is in de tweet zit
tweet kan van alles bevatten.
Code:
while (tweet > 0);
als tweet ==0 is dit een oneindige lus.

Ik snap ook niet hoe deze code kan leiden tot de output die je geeft.

Met vriendelijke groet
Jantje

Code:
                      if (tweet == '97' )                       //is de ingegeven waarde a dan... Telt enkel voor chars
                            {//digitalWrite (leD1, HIGH);        //led 1 aan
                             //delay (1000);                     // laatste actie aanhouden
                             //digitalWrite (leD1, LOW);         //led 1 uit en naar de volgende
                             //delay (100);
                              Serial.println("97 verwerkt!");}
Je mist een ; op het einde

voeg ook een
Code:
Serial.println(tweet);
toe onder
Code:
Serial.println("in de while lus");
Dan weet je wat je binnen krijgt. Misschien krijg je gewoon een 'A' binnen in plaats van een 'a'.
Logged

Do not PM me a question unless you are prepared to pay for consultancy.
Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -

Forum Moderator
Hamme, Belgium
Offline Offline
Sr. Member
*****
Karma: 4
Posts: 386
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Lees alle opmerkingen van Jantje aandachtig, want ze zijn terecht.

MAAR ...

eerst moet je de code die je gebruikt om te vergelijken, uit de code om de tweet te zoeken, halen.

Laat eerste de tweet ophalen (while connected).
en als dat gebeurt is, vergelijk dan wat er in tweet staat met je voorwaarden.

while (tweet > 0); is nutteloos want de char tweet is altijd > 0.

probeer dit eens voor de void loop:

Code:
void loop(){
  Serial.println("connecting to server...");
  if (client.connect(serverName, 80)) {
    TextFinder  finder( client,2 );
    Serial.println("making HTTP request...");
    // make HTTP GET request to twitter:
    client.print("GET /1/statuses/user_timeline.rss?screen_name=");
    client.print(TwitterName);
    client.println("&count=1 HTTP/1.1");
    client.println("HOST: api.twitter.com");
    client.println();
    Serial.println("sended HTTP request...");
    memset (tweet,0x03,sizeof(tweet)); //we vullen de tweet met ETX (End of Text)
    while (client.connected()) {
      if (client.available()) {
        Serial.println("looking for tweet...");
        SearchString = SearchString + TwitterName + ": ";
        charsize = SearchString.length() + 1;
        char StartHere[charsize];
        char EndHere[] = "</title>";
        SearchString.toCharArray(StartHere,charsize);
        if((finder.find("<item>")&&(finder.getString(StartHere,EndHere,tweet,140)!=0)))
          Serial.println(tweet);
        break;
      }
    }
    delay(1);
    client.stop();
  }
  Serial.println("start de verwerking ...");
  if (tweet[0] != 0x03) { //als het eerste karakter in de char tweet niet gelijk is aan 0x03, dan staat er dus iets anders bv a of b of q
      for (byte i = 0; i <140; i++){ // we zoeken de a op alle 140 plaatsen
        if (tweet[i] == 'a' ){
          Serial.print("a verwerkt! op plaats: ");
          Serial.println(i); // laat ons zien op welke plaats je een a vond. want mogelijks is dat niet op de eerste plaats in de tweet
        }
      }
    }
  Serial.println("delay...");
  delay (60000);
  // don't make this less than 30000 (30 secs), because you can't connect to the twitter servers faster (you'll be banned)
  // off course it would be better to use the "Blink without delay", but I leave that to you.
}
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Met jullie hulp werkt het zo goed als perfect!
Mijn voorlopig tussen test zijn voor de rest ook super. Van retweet's trek hij hem niets aan en van antwoorden op de tweeds ook niet. En dat was wel de bedoeling.  smiley-mr-green
Enkel leest hij eenmalig de tweet zelf in en als er een nieuwe verschijnt trek de arduino er zich niks van aan en doet gewoon lustig voort.
@jantje en JO3RI: Willen jullie met naam en toenaam in mijn eindproject ? Want dankzij jullie kreeg ik weer op de rails. Stuur me dan een prive-bericht.

Echt merci!  smiley-grin
Logged

Forum Moderator
Hamme, Belgium
Offline Offline
Sr. Member
*****
Karma: 4
Posts: 386
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Goed om te horen dat het gelukt is. Zou je zo vriendelijk willen zijn, om het eindresultaat met ons te delen? eventueel met een filmpje (in een nieuwe topic smiley )
Logged


Forum Moderator
Belgium
Offline Offline
Edison Member
*****
Karma: 58
Posts: 1721
Arduino rocks; but with my plugin it can fly rocking the world ;-)
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Goed om te horen dat het gelukt is. Zou je zo vriendelijk willen zijn, om het eindresultaat met ons te delen? eventueel met een filmpje (in een nieuwe topic smiley )
Ik vind dat beter dan een vermelding.

Groeten uit Belgie
Jantje
Logged

Do not PM me a question unless you are prepared to pay for consultancy.
Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -

Pages: [1] 2   Go Up
Jump to: